润乾集算报表实现T+0报表

在报表项目中,客户越来越关注源数据的实时性,希望最新发生的数据能在报表中体现出来,也就是T+0报表。但传统的报表工具+数据仓库+ETL方式很难实现此类实时报表,往往只能看到昨天、上周甚至是上个月的情况,也就是T+1、T+7、T+30等等,统称T+n报表。

  传统方式之所以难以实现T+0报表,主要是原因以下三点:

  1、如果报表的历史数据和最新数据都从客户的生产系统读取,虽然可以实现T+0报表,但是会对生产数据库造成压力,影响客户的业务。

  2、如果采用数据仓库的方式,那么ETL从生产库中取出数据,需要较长的“窗口时间”,一般是客户下班之后,到第二天早上上班之前,所以客户能看到的最新数据也只能是T+1。

  3、虽然理论上可以从历史库中和生产库中同时取数据形成实时报表,但是一般的报表工具都不具备跨库取数计算能力,报表之外的跨库计算方案又比较复杂,很难实施。

  在这种情况下可以考虑润乾集算报表提供的T+0报表方案,利用集算报表的混合数据源能力实现低成本的实时报表。实现思路是:把不会发生变动的大量历史数据采用数据文件存储,少量新数据从生产库读取,在保证报表实时性的同时,降低了历史数据存储的成本,减少了报表系统对生产数据库造成的压力。传统T+n方案和集算报表T+0方案结构对比示意图如下:

report5_dataprepare_t_1

  上图中,润乾集算报表结构中“导出(非实时)”是指在非工作时间(例如晚上),将生产数据库新增数据同步到历史数据的数据文件中。具体方法可采用润乾集算器提供的命令行命令,再配合操作系统的定时任务,详见集算器教程。

  这里通过“各州销售统计表”来说明润乾集算报表T+0方案的具体做法,表样如下:

report5_dataprepare_t_2

  上图报表中的历史销售数据量很大,来自于数据文件。当天的少量数据直接从生产数据库(db2)取出,以此保证数据的实时性。

  具体实现步骤如下:

  第一步,在集算器中编写集算脚本sales-state.dfx。

  A
1 =connect(“db2″)
2 =A1.cursor(“select s.*,e.name sellername,e.state sellerstate from sales s,employee e where s.sellerid=e.eid and days(current date)=days(orderdate)”)
3 =file(“D:/files/sales/sales.b”).cursor@b()
4 =[A2,A3].conj@x()
5 =A4.groups(SellerId; count(OrderID):count,sum(Amount):total)
6 =A5.sort(total:-1)
7 =A1.close()
8 result A6

  A1:连接预先配置好的生产数据库(db2)。

  A2:建立数据库游标,用简单的sql读取销售数据和销售人员的数据。从where条件中的days(current date)=days(orderdate)可以看到,销售数据仅仅读取当天的新数据。

  A3:建立预先导出好的数据文件D:/files/sales/sales.b的游标。文件游标允许分批从大数据文件中读取数据,可避免出现内存溢出的情况。@b选项是指按照集算器提供的二进制格式来读取文件。

  A4:将数据库游标(新数据)和文件游标(历史数据)纵向合并。

  A5:利用groups函数,完成对合并后游标的分组汇总。

  A6:按照销售总额的降序排列。

  A7:关闭db2数据库连接。

  第二步,在集算报表中建立db2数据源和集算器数据集:

report5_dataprepare_t_3

  第三步:设计报表如下:

report5_dataprepare_t_4

  报表中的统计图具体制作方法参见集算报表教程。

  需要说明的是,集算报表也支持其他方式存储的数据,比如mongodb、hdfs或者传统数据仓库。生产库中的新增数据可以用集算器导出,也可以用其他ETL工具导出。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值