PowerBI之DAX神功:第2卷第2回 理解度量值中迭代函数的行数 |
您所在的位置:网站首页 › sumx函数怎么用 › PowerBI之DAX神功:第2卷第2回 理解度量值中迭代函数的行数 |
前景回顾: 上节课 《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/BV1YE411E7p3PowerBI(DAX函数)、PowerQuery(M函数)、Python办公自动化、Python爬虫、Python数据分析、ExcelVBA、WordVBA、AccessVBA、MySQL等等 https://www.bilibili.com/read/cv10222110 |
CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3 |