BI 前端实践 2:SQL 数据源做多维分析
实践目标
给定SQL,对其查询结果进行多维分析。
测试数据及配置
employees是一套开源的Mysql测试数据,下载后把它导入本地的Mysql数据库中,看到有8个互相关联的表:
在润乾报表的配置文件WEB-INF/raqsoftConfig.xml中增加employees库的JDBC数据源,多维分析的jsp里能直接使用这里配置好的数据源名称emps,它主要配置url、driver、user、password四个属性:
预定义待分析的SQL
在study3.jsp中,在JS变量sqlDatasets里基于emps数据源定义三个SQL,分别从departments、dept_manager、dept_emp表获得数据,然后用JS变量guideConf.sqlId=”dept_mng”指定对第二个SQL进行多维分析:
展示SQL结果集
直接访问jsp,默认会显示查询结果的明细报表:
基于SQL结果集汇总分析
添加一个“部门经理任数”的新报表,汇总出每个部门一共有过几任经理:
用URL参数动态选SQL做多维分析
可以进一步的通过url参数传入sqlId,动态的决定对哪个SQL进行多维分析:
动态生成SQL做多维分析
通过url参数、当前登录用户这些综合信息,动态的拼出符合自己业务需求的带权限SQL,设置到JS的sqlDatasets里,这个JSP就能动态的做多维分析了:
SQL中用别名把多维分析字段汉化
上面例子中的字段是英文名,看起来不直观。SQL中经常用as 别名汉化英文字段名,多维分析界面中也会继承这些汉化的字段名:
SQL中用JOIN获得代码列的名称
上面例子中的员工(经理)编号和部门编号分别代表了实际的人员和部门,但实际做多维分析的时候更多希望看到经理姓名和部门名称,这时需要用SQL中的JOIN把多个表关联起来,获得代码列相应的名称:
为什么会报错呢?