PowerBI之DAX神功:第2卷第2回 理解度量值中迭代函数的行数

您所在的位置:网站首页 sumx函数怎么用 PowerBI之DAX神功:第2卷第2回 理解度量值中迭代函数的行数

PowerBI之DAX神功:第2卷第2回 理解度量值中迭代函数的行数

2023-06-06 00:53| 来源: 网络整理| 查看: 265

前景回顾:

上节课 《PowerBI之DAX神功:答网友问03.VAR变量与惰性计算》

以第一行为例:

毛利额= Calculate(sumx('Sheet1',21),all(Sheet1))

因为Sheet1这张表有3行,所以21*3=63

sumx需要迭代的行数,取决于第1参数表

我们间接的理解了,迭代函数行数在新建列上面的应用。

新建列是行上下文,是逐行计算(迭代)。

度量值是筛选上下文

这节课我们主要讲一下,度量值中迭代函数的行数

回忆《DAX神功》第1卷第19回 上下文转换你还不知道的秘密

有一张表,表名叫'多端'

sum('多端'[销量])   // 对多端这张表,销量这列求和,sum是聚合函数,它只是对这一列的数字进行聚合,结果是60,公式推导如下:

度量值1=sumx('多端',60)

将【度量值1】放到矩阵中:

解释:多端有6行,每行是60,所以总计6*60=360

当矩阵的行标题,使用年和商品时:

你会发现总计显示360

关于这个问题,我在《DAX神功》第1卷第19回 上下文转换你还不知道的秘密  中跟大家介绍过,度量值有着将行上下文转换成筛选上下文的功能,但是只能转最外层的sumx。sumx内层的行上下文它无法转换。

sumx是妈妈,你娶了一个未婚先孕的妈妈,女人可以变成你的妻子,里面套着的sum是孩子与你没有血缘关系。

如果我们不使用所有字段,而是只用年或商品字段时:

孩子不是你的,DNA无法改变,但是户口本上可以随你的姓

度量值1将sumx(妈妈)行上下文转化为你的妻子

Calculate将sum(孩子)行上下文转化为你的孩子

现在女人和孩子都是你的了,想什么筛选就怎么筛选。

正片开始:

还是这张表格:

度量值1 = sumx('多端',sum('多端'[销量]))

等价公式

度量值2 = sumx('多端',sumx('多端','多端'[销量]))

你学习度量值1时,你可能蒙圈了,因为它不直观,而度量值2更易理解迭代函数的行数

如果我们想将度量值2的内部与外部都转换为筛选上下文:

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

单张表我们理解了,那多张表怎么处理呢?

度量值3 = sumx('一端',sumx('多端','一端'[售价]*'多端'[销量]))

《DAX神功第1卷第18回》我讲过,DAX所有函数计值顺序都是从内向外,包括Calculate和CalculateTable,并且用事实证明了。

第1步:我们先分析内部的sumx计算情况

第2步:我们再分析外部的sumx计算情况

所以我们将这个度量值放到矩阵中:

我们只是用两个表的商品字段举例就可以了:

现在,想对内层的实现筛选功能,在内层的sumx外面套上Calculate

度量值3 = sumx('一端',CALCULATE(sumx('多端','一端'[售价]*'多端'[销量])))

它报错的意思是:在这里你不能省略关系函数,因为原来是行上下文嵌套行上下文,你是否写关系函数都可以,由于外层已经引用了一端表,内层可以直接写: '一端'[售价]

所以以下两个度量值都是正确的

度量值3 = sumx('一端',sumx('多端','一端'[售价]*'多端'[销量]))

度量值3 = sumx('一端',sumx('多端',RELATED('一端'[售价])*'多端'[销量]))

当你对内层嵌套了Calculate,内层是筛选上下文,外层是行上下文,由于上下文不同,所以这里的: '一端'[售价]  要使用关系函数,这一点你忘记了也没关系,系统会提示你

度量值3 = sumx('一端',CALCULATE(sumx('多端',RELATED('一端'[售价])*'多端'[销量])))

还有另一种写法:

度量值4 = sumx('一端',sumx(RELATEDTABLE('多端'),'一端'[售价]*'多端'[销量]))

原理:

RELATED('一端'[售价])     // 多端从一端获取

RELATEDTABLE('多端')   // 一端筛选多端表

而度量值4,使用了关系函数实现对内层的筛选。

我们绕了一大圈,现在回到了《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



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3