mysql中进⾏数据分析_如何通过⼀条数据库语句做数据分析定义物理数据源
添加 SQL 数据集时⾸要任务就是先在 [web 应⽤根⽬录]/l 中定义好要使⽤的物理数据源。
… …
… …
界⾯添加 SQL 数据集
物理数据源创建好后,接下来最重要的⼀步就是添加 SQL 数据集了。只需选择物理数据源,写上 SQL 语句,点击
查询数据,缓存⼊⽂件保存就 ok 了!没错,就是这么⽅便!
数据集创建完成后万事俱备只⽋东风,接下来就可以开始多维分析的体验之旅了。
点击【添加报表】,选择数据集,填写报表名称【确定】,齐活!
数据集有了,分析指标有了,现在就可以任性拖拽你想要查询的指标了,对 SQL 数据集的分析也能像⽂件分析从单机⼀步跃升 WEB 环境了,是不是⼜到了倍⼉爽的感觉?哈哈
先拖拽⼏个指标⼿感:
咦?咋列名都是代码,不是中⽂?这样感觉不友好!同学,这个问题提的好,其实答案很简单,分析出来的报表列名就是⽤的 SQL 数据集的字段名,所以只要使 SQL 数据集返回的字段名是中⽂就⾏!
利⽤ AS 返回中⽂字段名
修改数据集 SQL 后,点击
重新查询数据,
缓存⼊⽂件,再次添加报表,发现字段名变成中⽂了吧!
怎么样,看着舒服了吧,⼀不⼩⼼⼜ get 到新技能!不过看了上⾯的结果爱提问的同学可能⼜有想法了:部门怎么显⽰的是编号,这 0123代表啥俺⼜不知道,那咋做分析?哈哈,⼩编猜到你的想法,早有准备,啧啧。。。
LEFT JOIN 搞定编号代码显⽰
把部门编号显⽰成部门名称,百变不离其中,还是取决于 SQL 数据集的 SQL 语句。通过 LEFT JOIN 做多表关联就可以轻松搞定!
好了,通过上⾯的学习有没有发现其实数据集全是由 SQL 语句决定的,这⾥的 SQL 语句只要符合 SQL 标准语法就⾏,⽐如可以通过 AS 对字段重命名,LEFT JOIN 多表关联实现名称的显⽰等等,总之⼀句话:⼀切向 SQL 看齐!
利⽤ Tag 标签添加 SQL 数据集
除了上述这种在界⾯上添加 SQL 数据集的⽅式外,其实还可以通过 Tag 标签添加。
SQL 数据集和⽂件数据集在 Tag 标签的使⽤⼤同⼩异,只是属性略有不同。
Tag 标签添加 SQL 数据集:
dataSource="dqldemo"  //指定SQL需要使⽤的物理数据源
sql="select * from EMPLOYEE" //SQL语句
… …
>
在 Tag 标签中添加 SQL 数据集,访问多维分析页⾯时会将该数据集默认作为初始数据集,并直接将结果集以明细的形式展现在页⾯中。
注重细节的同学是不是⼜发现了端倪?怎么使⽤ Tag 标签添加数据集时没有点击【
查询数据,缓存⼊⽂件】结果也能正常展现呢?难道这两种添加数据集的⽅式还有什么不同吗?
其实这两种⽅式的底层对数据的处理机制是⼀样的,唯⼀的不同点就是 Tag 标签添加数据集可以理解为是直接为分析页⾯设置了初始数据集,这个时候程序会⾃动⽣成临时⽂件,然后将计算结果存⼊,这样⼀来就不⽤劳您⼤驾再动⼿缓存了。不过如果您还需要继续在页⾯上对初始数据集修改或者添加新的数据集,那就还得按最开始讲的那样⼉,每次修改 SQL 语句后,都需要点击
【查询数据,缓存⼊⽂件】 重新⽣成了临时⽂件了。默认临时⽂件命名规则是以时间毫秒数组合⽽成。
怎么样,SQL 数据集在俺⾃⼰的应⽤程序⾥⽤起来是不是也超便捷?不论是在页⾯数据集菜单中添加还是在 Tag 标签⾥添加,其实都是先让集算器通过 SQL 取数,然后将返回的结果集缓存⼊临时⽂件,之后在页⾯上的多维分析就都是基于这个临时数据⽂件取数了。这样⼀来,借⽤集算器的计算能⼒,在界⾯上就能做拖拽分组、聚合、过滤等等数据分析动作了。
关于缓存⽂件的⽣命周期⼩编还是要多唠叨⼏句,简单分为如下三点:
1、当缓存⽂件的⽗⽬录路径中包含”temp”字样时,如:/Raqsofttemp/
.txt 或 /temp/.txt,程序会在 Session 超时时⾃动清理该缓存⽂件
2、⽣成缓存⽂件时,如果发现缓存⽂件不存在,则会⾃动根据数据集的配置重新⽣成缓存⽂件
3、如果缓存⽂件路径中没有 temp 字样,则不会对缓存⽂件做任何删除处理,由客户的系统⾃⼰管理这些缓存⽂件的⽣命周期
缓存⽂件的后缀是.txt,聪明的你肯定就能猜润乾报表是⽤ TXT ⽂件作为中介的,但 TXT ⽂件的性能有点差,⽽且数据类型也不那么精确,个别情况会出点⼩错。其实从 SQL 中读出来的数据已经是⼆进制格式,再转成⽂本保存有点费时费⼒不讨好。
那么,还能怎么弄?
mysql删除重复的数据保留一条润乾报表提供了⼆进制格式的缓存⽂件,不过,这时候我得说⼀句不过了,这个功能需要收费的集成集算器才能⽀持了。如果已经有了这个功能组件,那么就简单了。
⼆进制缓存⽂件提升性能
打开 [WEB 应⽤根⽬录]/raqsoft/guide/jsp/olap.jsp 添加如下 JS API 脚本:
guideConf.dataFileType = 'binary'; //binary是⼆进制⽂件,会以游标⽅式读取,能⽀持超出内存的数据集;该属性的默认为text⽂本⽂件类型。
好了,设置完了,再缓存时就是以⼆进制⽂件的类型保存临时⽂件了。
咋样,是不是超简单?超便利?超喜欢?
不过话⼜说回来,上⾯这种缓存⼊⽂件的⽅式对于数据量不⼤的情况没问题,但有时候我们希望利⽤数据库的计算能⼒(毕竟数据库还可以集分布等),那⼜该怎么办呢?
不要慌,润乾报表帮你忙!
⾮缓存 SQL 数据集
在 JSP 脚本中添加不需要缓存数据的 SQL 数据集。操作起来也不难,只先敲上⼀个做原始查询的 SQL 语句就⾏。
将 SQL 语句传递给数据库做查询,查询后分析界⾯会直接将结果集中的字段列出,进⾏拖拽就可以了。
下⾯以⼀个多表查询做举例,在 [demo 应⽤根⽬录]/raqsoft/guide/jsp/olap.jsp 添加 JS API 进⾏设置。
guideConf.sqlId="";//指定sqlid
var sqlDatasets = [
{
sqlId:"sqlId1" //指定数据集名称,不可重复
,dataSource:"dqldemo" //指定SQL语句所使⽤的数据源
,sql:"SELECT EMPLOYEE.Name as 雇员姓名,DEPARTMENT.NAME as 部门,EMPLOYEE.COUNTRY as 国
家 FROM EMPLOYEE LEFT JOIN DEPARTMENT ON EMPLOYEE.DEPTID=DEPARTMENT.ID" //指定数据集SQL语句
,fields:null
},
… …
]
… …
脚本添加完成后,访问分析页⾯时只需要在 URL ⾥为 sqlId 参数传⼊数据集名称,如下图所⽰,使⽤名称为 sqlId1 的数据集:

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。