BI 前端实践 12:隐身的汇总表提速多维分析
实践目标
数据量大的基础表,做多维分析时会比较慢,通过汇总表预先缓存一些聚合数据,然后在元数据中设置好基础表和汇总表的关系,最后达到这样的效果:在界面上做多维分析感觉不到汇总表的存在,后台的DQL Server能自动选用合适汇总表提速查询。
大数据量的基础表和基于它的汇总表
项目中的订单表可能有上亿条数据,基于它做分组汇总,速度会比较慢,这时如果预先把一些常用的汇总数据计算出来,并存入专门的汇总表,再做分组汇总分析时,直接从汇总表得到数据就会比较快,如订单表中的订单金额(amount)、订单日期(deal_date):
按照年份、月份汇总出订单总额,年/月度最大订单额,数据存入订单年份汇总表(orders_year)/订单月份汇总表(orders_month):
多维分析页面直接使用汇总表数据
首先把两个汇总表导入到元数据中:
需要汇总月度的订单额时,在多维分析页面上直接选出汇总表的数据就可以了:
上面这么用,虽然解决了性能问题,但实际项目中各种维度一交叉,汇总表的数量就会很多,比如市级年度男性汇总、市级年度女性汇总、省级月度男性汇总……。
多维分析页面出现很多的备用汇总表,会导致操作困难。接下来通过在元数据中设置基础表/汇总表的关系,把汇总表给隐身掉。
元数据中建立基础表和汇总表的关系
选中订单年度汇总表,然后在它的“基础表”标签页添加一个基础表,选择订单表为它的基础表,之后了给它的三个字段设置基础表中的来源表达式:
年份字段,来自订单表的订单日期#年;
总额,来自订单表的sum(金额);
最大额,来自订单表的max(金额);
如果觉得最小额,平均额都常用,那设计汇总表的时候加上这些字段,同时在这里设置好聚合表达式就可以。
在汇总表上设置好了基础表,可以点到基础表上查看关系,发现订单表下自动列出了它的两个汇总表,这样元数据中就成功建立了基础表和汇总表的关系:
使用多维分析验证隐身汇总表的效果
部署元数据重启后,页面上发现确实只有基础表,看不到汇总表了:
接下来基于基础订单表做分组汇总,重点是查看这时DQL Server中的运行日志,发现实际上执行的SQL是从汇总表orders_year查询的数据,这也就说明借用隐身的汇总表提高性能成功了:
再继续增加平均订单额的汇总,发现执行的SQL自动变回从基础表orders查询数据了,这是因为汇总表没有平均订单额,它已经满足不了查询需求,所以DQL Server就自动切换回基础表了:
汇总表作为一种提升性能的手段,只在数据库和制作元数据时出现,完成和基础表的关系设置后,DQL Server会智能的选用,界面上做多维分析时,感觉不到汇总表的存在。
对润乾产品感兴趣的小伙伴,一定要知道软件还能这样卖哟性价比还不过瘾? 欢迎加入好多乾计划。
这里可以低价购买软件产品,让已经亲民的价格更加便宜!
这里可以销售产品获取佣金,赚满钱包成为土豪不再是梦!
这里还可以推荐分享抢红包,每次都是好几块钱的巨款哟!
来吧,现在就加入,拿起手机扫码,开始乾包之旅
嗯,还不太了解好多乾?