欢迎光临散文网 会员登陆 & 注册

PowerBI之DAX神功:第1卷第19回 上下文转换你还不知道的秘密

2021-08-23 11:47 作者:孙兴华zz  | 我要投稿

本课关于概念性总结的专业术语,你们可以参考《The Definitive Guide to DAX》,如果你能看懂。。。DAX神功换个方式讲原理

表名:Sheet1

新建列1=sumx('Sheet1','Sheet1'[销量])

解读:通过迭代函数创建的是行上下文,放在新建列中,没有筛选功能

度量值1 = sumx('Sheet1','Sheet1'[销量])

解读:sumx是迭代函数,创建行上下文,行上下文在度量值中自动转化成筛选上下文

上面这两种情况我们经常使用,已经做到熟练应用了,那么下面的:

新建列2 = sumx('Sheet1',calculate('Sheet1'[销量]))

度量值2 = sumx('Sheet1',calculate('Sheet1'[销量]))

解读:calculate(计算器,筛选器), 这里使用语法错误,没有讨论的意义


如果这样使用呢?

新建列3 = sumx('Sheet1',sum(Sheet1[销量]))

解读:数学公式推导的方法

证:

∵   新建列1=sumx('Sheet1','Sheet1'[销量])  

     表中每一行返回【销量】这一列的和。

     由于有6行,每行分别是1,2,3,4,5,6, 它们的和是21

∴  新建列3 = sumx('Sheet1',sum(Sheet1[销量]))

     不加sum之前,每行都是21,共6行,

     加上sum之后,每行都是21*6的和,都是126


我们再来看一下相同公式的度量值:

度量值3 = sumx('Sheet1',sum(Sheet1[销量]))

解读:数学公式推导的方法

证:

∵  度量值1 = sumx('Sheet1','Sheet1'[销量])

    虽然sumx创建了行上下文,但是放到度量值中就具有了筛选功能

    度量值就好比calculate(行上下文)

    你喜欢上一个未婚先孕的女人,但是孩子父亲去世了

    你可以将这个女人转化为你的妻子,

    但你永远都不可能是她腹中孩子的新生父亲

∴  度量值3 = sumx('Sheet1',sum(Sheet1[销量]))

    度量值可以将sumx转化为筛选上下文,但是无法改变里面的sum

    度量值3返回的最终结果仍然是126

当你将所有的列都放到筛选条件上,你会发现,只是总计显示126

如果我们将商品从筛选条件上撤掉,因为8月22日和23日每天都有3笔记录

每天的销量之和分别是6和15,度量值3相当于将每天的销量之和记算了3次

同理,我们在筛选中还原商品列,撤消日期列,由于A、B、C商品各2条记录

度量值3相当于把3个商品各自销量之和计算了两次。

我们现在再次观察度量值3:

度量值3 = sumx('Sheet1',sum(Sheet1[销量]))

sumx是你即将过门的妻子,可以通过结婚(度量值)的方式改变他是你妻子的事实

孩子你虽然改变不了血脉,但是可以做他的爸爸,你名义上就是亲生父亲(户口本可以证明)

这时候,让calculate来帮你,calculate的使命是让孩子做你儿子

度量值4 = sumx('Sheet1',calculate(sum('Sheet1'[销量])))

度量值4 = sumx('Sheet1',[总销量])

在度量值4中,calculate的功能是让sumx的孩子实现筛选功能。


你可能会说,这么简单的问题,怎么写了这么复杂的公式,写成:

等价度量值4=sum('Sheet1'[销量])

他不香吗?这只是举个简单的例子讲这个知识点,不要抬扛,将来你的公式会比这个复杂很多。也许这就是部分收费讲课老师,曾经说我们不讲原理是坑人、误导人的原因吧。


但是,你们发现没有,当你使用新建列4时,他会提示你:

新建列4 = sumx('Sheet1',calculate(sum('Sheet1'[销量])))

提示内容:检测到循环依赖关系Sheet1[列] ,其实循环依赖是个鬼,我们下节课就讲。


现在计算列和度量值的上下文转换你都理解了,《The Definitive Guide to DAX》中有几个代码较多的案例,没什么大不了的,你仔细看,万变不离其宗。都是我们上面讲的规律

他的案例就是一个能筛选的变量比较另一个变量(这个变量是由一个固定值不能筛选的变量*系数),如果大于等于就返回什么,否则返回什么。

《孙兴华讲PowerBI火力全开》PowerBI必学课程

https://www.bilibili.com/video/BV1qa4y1H7wp

《DAX神功》文字版合集:

https://www.bilibili.com/read/readlist/rl442274

《DAX神功》视频版合集:

https://www.bilibili.com/video/BV1YE411E7p3

PowerBI(DAX函数)、PowerQuery(M函数)、Python办公自动化、Python爬虫、Python数据分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等

https://www.bilibili.com/read/cv10222110


PowerBI之DAX神功:第1卷第19回 上下文转换你还不知道的秘密的评论 (共 条)

分享到微博请遵守国家法律