125_Power BI 中 DAX 的性能测试

焦棚子 2020-03-0315:27:38
评论
1,4931 1585字阅读5分17秒

焦棚子的文章目录

请在文末下载附件

一、背景

最近在看DAX“圣经”第二版《The Definitive Guide to DAX (2nd ed.)》的时候,迭代函数并不慢。所以今天我们来用实验来验证一把。

二、实验过程

1、一个1000万的数据,数据好看出差异。

125_Power BI 中 DAX 的性能测试
看到1000万行了吗?
125_Power BI 中 DAX 的性能测试
还有一个维度表
125_Power BI 中 DAX 的性能测试
关系
125_Power BI 中 DAX 的性能测试
实验电脑配置

2、把度量写好。

//1、基础度量
total = SUM(data[NUM]) 

//2、SC
_sum_calculate =
CALCULATE ( SUM ( data[NUM] ), 'dim'[DIM] = "A", 'data'[ID] < 50000001 )

//3、SCV
_sum_calculatetable_var =
VAR T1 =
CALCULATETABLE ( 'dim', 'dim'[DIM] = "A" )
VAR T2 =
CALCULATETABLE ( 'data', 'data'[NUM] < 5000001 )
VAR V =
CALCULATE ( SUM ( data[NUM] ), T1, T2 )
RETURN
    V

//4、SF
_sum_filter =
CALCULATE (
SUM ( data[NUM] ),
FILTER ( 'dim', 'dim'[DIM] = "A" ),
FILTER ( 'data', 'data'[NUM] < 5000001 )
)

//5、SFV
_sum_filter_var =
VAR T1 =
FILTER ( 'dim', 'dim'[DIM] = "A" )
VAR T2 =
FILTER ( 'data', 'data'[NUM] < 5000001 )
VAR V =
CALCULATE ( SUM ( 'data'[NUM] ), T1, T2 )
RETURN
    V

//6、TC
_total_calculate =
CALCULATE ( 'measure'[total], 'dim'[DIM] = "A", 'data'[ID] < 50000001 )

//7、TCV
_total_calculatetable_var =
VAR T1 =
CALCULATETABLE ( 'dim', 'dim'[DIM] = "A" )
VAR T2 =
CALCULATETABLE ( 'data', 'data'[NUM] < 5000001 )
VAR V =
CALCULATE ( 'measure'[total], T1, T2 )
RETURN
    V

//8、TF
_total_filter =
CALCULATE (
'measure'[total],
FILTER ( 'dim', 'dim'[DIM] = "A" ),
FILTER ( 'data', 'data'[NUM] < 5000001 )
)

//9、TFV
_total_filter_var =
VAR T1 =
FILTER ( 'dim', 'dim'[DIM] = "A" )
VAR T2 =
FILTER ( 'data', 'data'[NUM] < 5000001 )
VAR V =
CALCULATE ( 'measure'[total], T1, T2 )
RETURN
    V

3、每个度量都拉到画布中,同时打开性分析器,测试了20组。(visual名称是度量首字母简写,难得写。)

125_Power BI 中 DAX 的性能测试

4、把测试数据导出,得到我们要的实验数据。

125_Power BI 中 DAX 的性能测试

5、同时我们看到了底层计算逻辑其实都一样,只有一点细微的差别。

125_Power BI 中 DAX 的性能测试

6、数据导回PBI,我们看看最后的结果怎么样。

125_Power BI 中 DAX 的性能测试

三、总结

1、加入测试:calculate第一参数用基础度量更快,还是用直接聚合更快;

2、无论是单纯的查询时间还是总的时间,calculate第一参数用基础度量会更快(如:TF,SF;TC,SC);

3、在查询中迭代函数的速度并不慢(如:TC,TF);

4、用var要比直接套用慢(如果:TF,TFV)

5、最后我们看到底层计算逻辑都是一样,还是有细微差别,在做pbi项目的时候,动辄上百个的度量,一点点效率的累计,最终会有很大的时效收益。

 

by焦棚子

焦棚子的文章目录

请点击【立即购买】或者【升级VIP】获得案例附件。

隐藏内容需要支付:¥2
立即购买 升级VIP

焦棚子
  • 除非特殊声明,本站文章均为焦棚子原创,转载请务必保留本文链接!
  • 《125_Power BI 中 DAX 的性能测试》链接:https://jiaopengzi.com/403.html
145_Power BI Report Server自定义Form登录 Power BI

145_Power BI Report Server自定义Form登录

焦棚子的文章目录 请在文末下载附件 1、背景 很久没有更新Power BI Report Server了,发现自己机器还是2021年1月版本的,现在更新了2021年9月份版本了。刚好要更新服务器的内容...
144_Power Pivot贷款之等额本息与等额本金 Power Pivot

144_Power Pivot贷款之等额本息与等额本金

焦棚子的文章目录 请在文末下载附件 一、背景 买房贷款的时候会遇到等额本息与等额本金的问题,今天做了一个两者对比,看看如何选择,来一张对比图。 等额本息的前期还款压力较小,等额本金少还利息。 &nbs...
142_Power BI之同比预测 Power BI

142_Power BI之同比预测

焦棚子的文章目录 请在文末下载附件 一、背景 最近刚好在做一个简单同比预测的模型,预测方法很简单,就是累计同比预测,把MTD展示出来。 demo展示链接:https://jiaopengzi.com/...