开源 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,助力自动关联查询,针对树状的元数据直接做多维分析,让业务人员在自然思维模式下,大大扩展了查询数据能力的边界,减少对技术人员的依赖,后续文章中会详细讨论实践细节。
对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅
嗯,还不太了解好多乾?