DAX: SUM vs SUMX

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個數。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章