前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >阅读圣经丨聚合与迭代

阅读圣经丨聚合与迭代

原创
作者头像
PowerBI丨白茶
修改2021-09-02 09:26:12
5710
修改2021-09-02 09:26:12
举报
文章被收录于专栏:PowerBIPowerBI

之前的一期,白茶曾经分享过一次关于迭代循环的文章《迭代循环丨SUMX函数》,本期咱来深入聊聊这个问题。

聚合器

在大部分数据模型中,几乎都需要我们对数据进行聚合类的操作。DAX中提供了很多聚合类的函数,最常用、频率最高的是SUM函数。比如说这种:

代码语言:txt
复制
销售额 =
SUM ('表'[销售] )

这就给很多人造成了误解,聚合器就是SUM函数,这是不对的。还有很多其他的,比如说:AVERAGE求平均,MIN求最小值,MAX求最大值。这些函数本质上都是聚合器,只不过是聚合之后返回的结果不同罢了。更确切的说,聚合,这个定义是一种思维方式。

迭代器

一些特定的函数可以对整个表进行聚合,或者根据行上下文一行一行的去筛选,这类函数就属于迭代器。他们的工作方式针对的不是一个列,而是一个表。大部分聚合器都有一个对应的迭代器函数,比如说:SUM对应SUMX,MIN对应MINX,MAX对应MAXX等等。

看到这是否有个疑问,就是是不是迭代器都有一个聚合函数呢?其实不是的,比如说FILTER函数啊、GENERATE函数、CROSSJOIN函数等等。

通常,迭代器至少需要两个参数,一个是需要扫描的表,一个是针对每一行的表达式。比如说下面的这个度量值代码:

代码语言:txt
复制
间隔 度量值 =
INT ( SUMX ('示例','示例'[出货日期] ) - SUMX ('示例','示例'[下单日期] ) )

这种就是典型的例子,扫描表,提取对应值,进行求和。

聚合器与迭代器

我们不妨进行的更深入一点讨论,实际上聚合器就是阉割版的迭代器,它本身函数的内部也是进行迭代匹配的,不然怎么进行相关运算呢?对吧?

想一下,SUM求和某一列,不就是按照行上下文顺序,一行一行的相加最后求和么?怎么可能不算迭代?

所以白茶的理解就是,其实聚合器本身在内部,就封装了符合自己运算逻辑的迭代器。

这里提一下@嘿大佬对我的点拨,受益匪浅啊。大佬是这么说的,迭代器也好,聚合器也好,它的核心关键点在于取值。逻辑顺序是这样的:

迭代器→激活行上下文→行上下文取值→值运算

明白了这个逻辑,心理对一些函数的理解就多了一些明悟。

MIN与MAX

这里单独提一下这俩函数,其他的聚合器基本上都是针对数值生效的,但是MIN和MAX对于文本也是生效的。比如我需要对表中一列客户信息进行迭代,可以使用MINX(MAXX)+MIN(MAX)的模式。


小伙伴们❤GET了么?

白茶会不定期的分享一些函数卡片

(文件在知识星球PowerBI丨需求圈)

这里是白茶,一个PowerBI的初学者。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档