欢迎来到天天文库
浏览记录
ID:52881592
大小:473.74 KB
页数:3页
时间:2020-03-31
《润乾集算报表优化应用结构之混合数据源.pdf》由会员上传分享,免费在线阅读,更多相关内容在应用文档-天天文库。
1、润乾集算报表优化应用结构之混合数据源在报表项目中,报表源数据常常会来自于多种异构数据源。例如:关系型数据库(oracle、db2、mysql),nosql数据库(mongodb),http数据源,hadoop(hive、hdfs)甚至是excel或者文本文件。通常的做法是采用ETL工具,将这些数据源都同步到数据仓库中。但是这样做的问题在于:1、配置复杂,难度较大;2、成本较高;3、数据无法实时访问,需要有较长时间的延迟;4、数据仓库的建设和管理都比较复杂;5、如果数据量很大效率会很低,而且要不断的ETL去各个应用系统同步数据;6、
2、数据仓库利用的也是传统数据库的技术,如果负载较大的时候,扩容成本较高。如果采用润乾集算报表工具,就可以简单直接地实现混合数据源报表。润乾集算报表通过内置的集算引擎直接读取各种混合数据源,能够解决上述问题,让数据采用最合适的方式存储,以较小的成本呈现基于混合数据源的实时报表。ETL方式和集算报表方式的结构对比示意图如下:文件报表工具文件系统系统润乾集算报表报表展现程序报表模板报表展现程序报表模板计算结果计算结果集算数据仓库集算引擎脚本ETL关系文件...其他关系文件...其他数据库数据源数据库数据源润乾集算报表结构传统结构:数据仓库
3、+ETL下面,通过《州销售人员销售报表》来看一下具体的实现步骤。报表如下图:报表的销售数据来自于销售系统的mongodb数据库,销售员的信息则来自人力资源系统的db2数据库。采用集算报表的混合数据源方式,报表数据源不需要定期同步,不会有时间上的延迟。第一步,要在集算器设计器中编写脚本,并保存为statesales.dfx如下:A1>hrdb=connect("db22")2=hrdb.query("select*fromemployeewherestate=?",state)3=mongodb("mongo://localhost
4、:27017/test?user=test&password=test")4=A3.find("orders",,"{_id:0}").fetch()5=A4.switch@i(SELLERID,A2:EID)6=A5.new(ORDERID,CLIENT,SELLERID.NAME:SELLERNAME,AMOUNT,ORDERDATE)7>hrdb.close()8>A3.close()9resultA6A1:连接预先配置好的db22数据源。A2:从数据源中按照预先定义好的参数state="California"读取emplo
5、yee序表。A3、A4:从销售系统的mongodb中,读取orders序表。A5:使用集算器的switch函数,将orders序表中的sellerid字段切换成employee序表sellerid=eid关联的记录。@i选项是指如果找不到对应的记录,则删除该行。A6:生成一个新的序表,得到需要的字段。A7、A8:关闭数据库连接。A9:返回给集算报表。第三,在报表设计器中定义参数argstate,配置集算数据集:第四,设计报表如下:输入参数计算后,即可得到前面希望的报表。报表上部的查询按钮是集算报表提供的“参数模板”功能。参数模板和
6、db2、mongodb数据源配置的具体做法参见教程和其他文档,这里不再赘述。需要说明的是,如果数据源结构发生了变化,比如新上线的销售系统采用了oracle数据库,只要修改statesales.dfx的A1改为:>hrdb=connect(“ora”)同时复制oraclejdbc驱动、配置oracle数据库的连接参数即可。报表系统配置和改动都很小。
此文档下载收益归作者所有