认识DAX聚合函数和迭代函数
几乎每个数据模型都需要对数据进行聚合类操作。DAX 提供了一组函数,它们聚合表中某个列的值并返回单个值。我们称这类函数为聚合函数。例如,下面的度量值计算 Sales 表的 SalesAmount 列中所有数字的总和:
Sales := SUM ( Sales[SalesAmount] )
如果在计算列中使用该公式,SUM将聚合该表的所有行。当它在度量值中被使用时,SUM 仅考虑报表中的切片器、行、列和筛选器条件所筛选的行。
有许多聚合函数(SUM、AVERAGE、MIN、MAX 和 STDEV),它们的行为只在聚合值的方式中改变 : SUM 求和值,而 MIN 返回最小值。几乎所有这些函数都只对数值或日期进行操作。只有 MIN 和 MAX 可以对文本值进行操作。此外,DAX 在执行聚合时不考虑空单元格(准确讲是空值)。
到目前为止,我们描述的所有聚合函数都用于列。因此,它们仅从单个列聚合值。某些聚合函数可以按自定义表达式聚合一个表而不只是单个列。由于它们的工作方式,它们被称为迭代器。这类函数很有用,尤其是在需要使用不同相关表的列进行计算时,或者需要减少计算列的数量时。
迭代器始终接受至少两个参数:第一个是它们扫描的表; 第二个通常是为表的每一行所计算的表达式。在完成对表的扫描并逐行计算表达式后,迭代器会根据其语义聚合每行的计算结果。(语义一般与函数名一致,如:SUMX 就是算完每行后求和)
大多数迭代器与它们非迭代的对应函数具有相同的名称。例如,SUM 有一个对应的 SUMX,而 MIN 有一个对应的 MINX。尽管如此,请记住,有些迭代器并不对应于任何聚合函数。如 FILTER、ADDCOLUMNS、GENERATE 和其他作为迭代器的函数,即使它们没有聚合结果。
《The Definitive Guide to DAX》学习笔记
采悟 @ PowerBI星球