首先让我们分别了解一下SUM和SUMX的用法及含义:
SUM 函数解释:
官方描述:对某个列中的所有数值求和。
详细解说:SUM是一个标准的常用的聚合函数。使用SUM对某列进行汇总求和,这里的某列通常是指可计算的度量值列。SUM不对String类型进行转换汇总。
SUM 语法:
SUM(<column>)
SUM 示例
以下示例从表 Sales 中添加了列 Amt 中包含的所有数字。
=SUM(Sales[Amt])
--------------------------------------------------------------------------------------------------------------------------------------
SUMX 函数解释:
官方描述:返回为表中的每一行计算的表达式的和。
详细解说:这里面需要重点理解的是每一行,例:我们已知销售数量和销售单价这两列,需要求销售总额。但数据含多个维度并且日期粒度到天。那我们就不能直接 销售总额=SUM(销售数量)*SUM(销售单价).当遇到这种情况时,我们就可以使用SUMX。SUMX(销售表,销售数量*销售单价)
SUMX 语法:
SUMX(<table>, <expression>)
SUMX 示例
下面的示例首先对表达式 ShippingTerritoryID = 5
上的表 InternetSales 进行筛选,并返回列 Freight 中所有值的总和。 换言之,此表达式仅返回指定销售区域的货运费用总和。
=SUMX(FILTER(InternetSales, InternetSales[SalesTerritoryID]=5),[Freight])
备注
SUMX 函数将表或返回表的表达式作为其第一个参数。 第二个参数是包含要计算总和的数字的列,或计算结果为列的表达式。
仅对列中的数字进行计数。 空白、逻辑值和文本会被忽略。
重点来了,两者之间有什么区别呢?
- SUM是列级别聚合函数(不逐行计算),SUMX是行级别聚合函数(逐行计算)
- 性能差别,这点另一个博主写的更详细一点,我把链接贴在下方。
https://www.cnblogs.com/yeacer/p/10002131.html