BI 前端实践 12:隐身的汇总表提速多维分析

本文介绍了如何利用汇总表提升大数据量的多维分析性能。通过创建汇总表并设置与基础表的关系,实现前端分析时自动选择合适的表进行查询,从而提高查询效率。在元数据中建立这种关系后,用户在多维分析页面上看不到汇总表,但DQL Server能够智能选择使用汇总表或基础表,确保性能的同时保持界面简洁。
摘要由CSDN通过智能技术生成

实践目标

数据量大的基础表,做多维分析时会比较慢,通过汇总表预先缓存一些聚合数据,然后在元数据中设置好基础表和汇总表的关系,最后达到这样的效果:在界面上做多维分析感觉不到汇总表的存在,后台的DQL Server能自动选用合适汇总表提速查询。

大数据量的基础表和基于它的汇总表

项目中的订单表可能有上亿条数据,基于它做分组汇总,速度会比较慢,这时如果预先把一些常用的汇总数据计算出来,并存入专门的汇总表,再做分组汇总分析时,直接从汇总表得到数据就会比较快,如订单表中的订单金额(amount)、订单日期(deal_date):

按照年份、月份汇总出订单总额,年/月度最大订单额,数据存入订单年份汇总表(orders_year)/订单月份汇总表(orders_month):

多维分析页面直接使用汇总表数据

首先把两个汇总表导入到元数据中:

需要汇总月度的订单额时,在多维分析页面上直接选出汇总表的数据就可以了:

上面这么用,虽然解决了性能问题,但实际项目中各种维度一交叉,汇总表的数量就会很多,比如市级年度男性汇总、市级年度女性汇总、省级月度男性汇总……。

多维分析页面出现很多的备用汇总表,会导致操作困难。接下来通过在元数据中设置基础表/汇总表的关系,把汇总表给隐身掉。

元数据中建立基础表和汇总表的关系

选中订单年度汇总表,然后在它的“基础表”标签页添加一个基础表,选择订单表为它的基础表,之后了给它的三个字段设置基础表中的来源表达式:

年份字段,来自订单表的订单日期#年

总额,来自订单表的sum(金额)

最大额,来自订单表的max(金额)

如果觉得最小额,平均额都常用,那设计汇总表的时候加上这些字段,同时在这里设置好聚合表达式就可以。

在汇总表上设置好了基础表,可以点到基础表上查看关系,发现订单表下自动列出了它的两个汇总表,这样元数据中就成功建立了基础表和汇总表的关系:

使用多维分析验证隐身汇总表的效果

部署元数据重启后,页面上发现确实只有基础表,看不到汇总表了:

接下来基于基础订单表做分组汇总,重点是查看这时DQL Server中的运行日志,发现实际上执行的SQL是从汇总表orders_year查询的数据,这也就说明借用隐身的汇总表提高性能成功了:

再继续增加平均订单额的汇总,发现执行的SQL自动变回从基础表orders查询数据了,这是因为汇总表没有平均订单额,它已经满足不了查询需求,所以DQL Server就自动切换回基础表了:

汇总表作为一种提升性能的手段,只在数据库和制作元数据时出现,完成和基础表的关系设置后,DQL Server会智能的选用,界面上做多维分析时,感觉不到汇总表的存在。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值