开源 BI 实践:给一句 SQL 就能做多维分析

配置数据库连接

数据的主流存储方式是数据库,在润乾多维分析中配置了数据库连接后,就直接能对给定的 SQL 语句做多维分析了,配置文件是 {WEB 应用根目录} /WEB-INF/raqsoftConfig.xml,在它里面可以配置多个数据库连接:
<Runtime>

 <DBList>

  <DB name="demo">

   <property name="url" value="jdbc:hsqldb:hsql://127.0.0.1/demo"/>

   <property name="driver" value="org.hsqldb.jdbcDriver"/>

   <!-- 数据库类型编号,UNKNOWN:0; ORACLE:1; SQLSVR:2; SYBASE:3; SQLANY:4; INFMIX:5; FOXPRO:6; ACCESS:7; FOXBAS:8; DB2:9; MYSQL:10; KINGBASE:11; DERBY:12; HSQL:13; TERADATA:14;POSTGRES:15; DATALOGIC:16; IMPALA:17; ESSBASE:101; -->

   <property name="type" value="13"/>

   <property name="user" value="sa"/>

   <property name="password"/>

  </DB>

  <DB name="MysqlTPCH">

   <property name="url" value="jdbc:mysql://127.0.0.1:3306/tpch"/>

   <property name="driver" value="com.mysql.jdbc.Driver"/>

   <property name="type" value="10"/>

   <property name="user" value="root"/>

   <property name="password" value=”root”/>

  </DB>

  ……

  <DB name=”……”>

  </DB>

 </DBList>

</Runtime>

上面配置了一个名为 demo 的 HSQL 数据库,一个名为 MysqlTPCH 的 Mysql 数据库,启动 WEB 服务器前,要把用到的数据库驱动 jar 放到 /WEB-INF/lib/ 下,如 hsqldb-*.jar、mysql-connector-java-*.jar。

编写 JSP 页面

编写个 JSP 页面就可以在 WEB 上做透视表分析了,来看 olap_sql.jsp,内容如下:

<%@ page language="java" contentType="text/html; charset=UTF-8" pageEncoding="UTF-8"%>

<%@ page import="java.util.*" %>

<%@ taglib uri="/WEB-INF/raqsoftAnalyse.tld" prefix="raqsoft" %>

<%

String dataSource = "MysqlTPCH";

String sql = "SELECT * FROM customer";

%>

<raqsoft:analysev2

 dataSource="<%=dataSource %>"

 ql="<%=sql %>"

/>

JSP tablib(/WEB-INF/raqsoftAnalyse.tld)中用 dataSource、ql 属性分别传入数据库连接名、SQL 语句。

访问 olap_sql.jsp,就看到 customer 表的数据了:

..

点开管理数据集,可以看到这个数据库查询的单表数据集,在 MysqlTPCH 库里执行 SQL 查询:

..

基于这个 SQL 查询出的数据集,可以进一步做分组表格、统计图多维分析:

..

用 SQL 别名改善数据标题

数据库里的字段名往往是英文的,有时还有缩写,对 BI 用户不友好,可以在 SQL 里用 AS 别名改善:

SELECT C_CUSTKEY AS 编号

 , C_NAME AS 名称

 ,C_NATIONKEY AS 国家编号

 ,C_PHONE AS 电话

 ,C_ADDRESS AS 地址

 ,C_COMMENT AS 备注

FROM customer

修改 SQL 后再访问,可以看到改成中文标题了:

..

JOIN 维表把代码替换成名称

客户表里存储的是国家编号,显示编号不直观,可以用 SQL JOIN 连接 nation 表获得国家名称:

SELECT c.C_CUSTKEY AS 编号

 , c.C_NAME AS 名称

 , n.N_NAME AS 国家名称

 , c.C_PHONE AS 电话

 , c.C_ADDRESS AS 地址

 , c.C_COMMENT AS 备注

FROM customer c JOIN nation n ON c.C_NATIONKEY=n.N_NATIONKEY

..

后记

很多 BI 产品都支持从各种数据库获取数据,基础的 SQL 查询自然不在话下。更有甚者,为了让没有技术能力的业务人员有查询数据的能力,会着重实现可视化界面帮助生成 SQL,形成最终的单表 (宽表),之后再做多维分析。可视化界面帮助业务人员生成查询 SQL,初衷很好,但效果一般,参考《自助关联查询难在哪里》就知道详细原因了,结果往往还得让技术人员来协助获取数据。

从查询模型底层创新的润乾 DQL,助力自动关联查询,针对树状的元数据直接做多维分析,让业务人员在自然思维模式下,大大扩展了查询数据能力的边界,减少对技术人员的依赖,后续文章中会详细讨论实践细节。


以下是广告时间

对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅



嗯,还不太了解好多乾?
猛戳这里
玩转好多乾