125_Power BI 中 DAX 的性能测试
博客:www.jiaopengzi.com
一、背景
最近在看DAX“圣经”第二版《The Definitive Guide to DAX (2nd ed.)》的时候,迭代函数并不慢。所以今天我们来用实验来验证一把。
二、实验过程
1、一个1000万的数据,数据好看出差异。




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名称是度量首字母简写,难得写。)

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

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

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

三、总结
1、加入测试:calculate第一参数用基础度量更快,还是用直接聚合更快;
2、无论是单纯的查询时间还是总的时间,calculate第一参数用基础度量会更快(如:TF,SF;TC,SC);
3、在查询中迭代函数的速度并不慢(如:TC,TF);
4、用var要比直接套用慢(如果:TF,TFV)
5、最后我们看到底层计算逻辑都是一样,还是有细微差别,在做pbi项目的时候,动辄上百个的度量,一点点效率的累计,最终会有很大的时效收益。
by焦棚子
125_Power BI 中 DAX 的性能测试的更多相关文章
- Power BI中DAX的动态计算方差
我花了一点时间试图解决一个棘手的DAX表达式,那就是如何动态计算方差,下面我们认识一下这两个函数: PARALLELPERIOD 和 SAMEPERIODLASTYEAR 它能实现我们想要的结果, ...
- DAX和Power BI中的参考日期表
本文使用Power BI模板描述DAX中的引用Date表,可以在Analysis Services模型中使用相同的技术.在Dax Date Template页面下载最新版本的模板. 为什么引用Date ...
- 数据可视化之DAX篇(二十七)半累加度量,在Power BI 中轻松处理
https://zhuanlan.zhihu.com/p/96823622 开始半累加的计算之前,我们先看看什么是累加.半累加以及不可累加数据. 在含有大量行的数据表中,各种数据处理语言,包括DAX ...
- .NET平台开源项目速览(19)Power BI神器DAX Studio
PowerBI更新频繁,已经有点更不上的节奏,一直在关注和学习中,基本的一些操作大概是没问题,更重要的是注重Power Query,M函数,以及DAX的使用,这才是核心. 上个月研究了DAX的一些 ...
- 158_模型_Power BI 使用 DAX + SVG 打通制作商业图表几乎所有可能
158_模型_Power BI 使用 DAX + SVG 打通制作商业图表几乎所有可能 一.背景 最近对 Power BI 中使用 SVG 比较感兴趣,今天我们使用 DAX + SVG 复刻一下 Ze ...
- R语言作为BI中ETL的工具
R语言作为BI中ETL的工具,增删改 R语言提供了强大的R_package与各种数据库进行数据交互. 外加其强大数据变换清洗函数,为ETL提供一条方便快捷的道路. RODBC ROracal RMys ...
- Power BI中的QA功能预览
微软在休斯敦的全球合作伙伴大会上发布了Power BI for Office 365,通过Excel和Office 365中的自服务式商业智能解决方案为信息工作者提供了数据分析以及可视化功能以帮助他们 ...
- 在Microsoft Power BI中创建地图的10种方法
今天,我们来简单聊一聊“地图”. 在我们日常生活中,地图地位已经提升的越来越高,出门聚餐.驾驶.坐车.旅行......应运而生的就是各种Map APP. 作为数据分析师,我们今天不讲生活地图,要跟大家 ...
- 如何在BI中增加“路线地图”并进行数据分析?
随着客户的需求越来越"百变",最近在做大屏设计的葡萄陷入了困境. 近期客户提出的需求是想在BI工具中增加 "路线地图"展示功能并进行数据分析. 不仅如此,这个& ...
随机推荐
- 顺利通过EMC实验(11)
- visual studio 2019工具里添加开发中命令提示符的方法
最新新装了visual studio 2019,发现默认的没有开发者命令提示符 现将添加步骤描述如下: 从VS2019菜单选择"Tools",然后选择"外部工具" ...
- 【面试普通人VS高手系列】谈谈你对AQS的理解
AQS是AbstractQueuedSynchronizer的简称,是并发编程中比较核心的组件. 在很多大厂的面试中,面试官对于并发编程的考核要求相对较高,简单来说,如果你不懂并发编程,那么你很难通过 ...
- 常用 adb 命令总结
1. 显示当前运行的全部模拟器: adb devices 2. 安装应用程序: adb install -r 应用程序.apk 3. 获取模拟器中的文件: a ...
- Shiro 安全框架详解二(概念+权限案例实现)
Shiro 安全框架详解二 总结内容 一.登录认证 二.Shiro 授权 1. 概念 2. 授权流程图 三.基于 ini 的授权认证案例实现 1. 实现原理图 2. 实现代码 2.1 添加 maven ...
- mixin和composition api
1. 这两个都是实现组件逻辑复用的法宝 2. composition api是vue3的, composition api的出现就是解决mixins的不足之处的 一. mixin 回顾下mixin, ...
- 在 MarkDown 中添加表格(例如:在 CSDN 中添加表格)
内容 一.使用 Markdown 创建表格(例如:在 CSDN 中创建表格) 1. 表格格式 对齐方式 -: 设置内容和标题栏居右对齐: :- 设置内容和标题栏居左对齐: :-: 设置内容和标题栏居中 ...
- FastAPI(七十四)实战开发《在线课程学习系统》接口开发-- 删除留言
之前文章FastAPI(七十三)实战开发<在线课程学习系统>接口开发-- 回复留言,那么我们这次分享删除留言接口的开发 可以对留言进行删除,这里的删除,我们使用的是逻辑的删除,不是物理删除 ...
- phpstorm配置xdebug 3.0最新教程!!!配置不成功的快看!
前言 之前2月份就开始配置xdebug,始终没有成功. 今天看到一篇写得挺详细的文章,心血来潮又折腾了下,可惜没成功. 验证始终说我配置错误 后面去阅读官方的文档,修改了些配置,居然搞成功了!! ni ...
- 文件上传——IIS6.0解析漏洞
介绍 IIS6.0漏洞可分为目录漏洞和文件漏洞 目录漏洞 访问*.asp格式命令的文件夹下的文件,都会被当成asp文件执行 文件漏洞 畸形文件命名 123.asp -> 123.asp;.txt ...