阅读圣经丨聚合与迭代

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

聚合器

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

销售额 =
SUM ('表'[销售] )

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

迭代器

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

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

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

间隔 度量值 =
INT ( SUMX ('示例','示例'[出货日期] ) - SUMX ('示例','示例'[下单日期] ) )

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

聚合器与迭代器

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

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

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

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

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

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

MIN与MAX

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


小伙伴们❤GET了么?

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

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

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

下面这个知识星球是针对有实际需求的小伙伴,有需要的请加入下面的知识星球。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Fabric丨白茶

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值