SUM函数和SUMX函数应该是Power BI当中最常用的两个函数了。这两兄弟都可以实现对列下数据进行汇总求和计算,但其计算方法和思路却大不相同。
SUM函数属于聚合函数,聚合函数的运算特点是对表或者列按照整体进行计算并输出单一值作为结果。并且,聚合函数天生对行上文有免疫作用,换句话讲,行上下文对聚合函数的计算结果不会产生影响,所以当在计算列下直接使用聚合函数对某列进行汇总计算时,能看到所有行的计算结果都相同。
而SUMX属于迭代函数,跟SUM这种一股脑把一列下的数据都求和不同,SUMX是一行一行的对数据进行获取,然后将获取到的这些数据保存成一个临时列,之后再调用SUM函数对这个临时列下的信息进行求和。SUMX中的参数表有多少行,SUMX就会继续多少次的循环计算。
hmmm,如果觉得通过文字描述无法理解这两个函数的计算特点,那么,请看下面这两个表达式的计算结果截图。
Total_SUM = SUM(Sales[Total Sales])+1
Total_SUMX = SUMX(Sales, Sales[Total Sales]+1)
在Total_SUM 这个表达式中,SUM函数对Total Sales列下的所有数据进行了求和计算,之后,又在求和的结果上进行了+1操作。
而Total_SUMX 这个表达式中使用的是SUMX这个迭代函数,它将Sales表中的每一行数据对应的Total Sales都进行了+1操作,之后再对这些数据进行汇总求和计算。由于Sales表一共有5行,所以在SUMX函数中做了5次+1的操作,这也是为什么Total_SUMX的计算结果比Total_SUM的结果多出来4个数。