天天看點

DAX實戰小例:對資料進行分組分析 1

在資料分析中經常會遇到某個表單中的某一列包含多種資料,然後需要對資料分組進行統計的情況。例如在下面例子中的财務報表,如果想計算每個國家目前實際的支出(Actual)情況,可以建立一個路徑成本,利用Sum函數對Actual資料進行計算,之後在Report頁面建立的可視化圖表時,Power BI就會自動按照國家情況進行統計彙總。

DAX實戰小例:對資料進行分組分析 1

如果我們想進一步的建立一個過濾器檢視哪些國家的實際支出(Actual)超過了計劃支出(Forecast)該如何做呢?估計絕大多數人首相想到的就是再建立一個路徑成本,計算一下如果Actual減去Forecast大于0則表示超過計劃支出,反之則小于計劃支出。為了友善檢視,此處設定設定兩個路徑成本,第一個先用SUM計算Actual-Forecast的值,下一個用If去判斷哪些國家的實際支出超過計劃支出。

DAX實戰小例:對資料進行分組分析 1

看起來很完美,但是Power BI中的切片選擇器是無法使用路徑成本類型的資料作為篩選過濾依據的,這就很大程度上限制了表單的建立。

DAX實戰小例:對資料進行分組分析 1

那該怎麼辦?由于切片選擇器隻能使用列類型資料作為過濾依據,那麼是否可以直接在目前表單上建立一個新的列來計算哪些國家實際支出超出預算呢?答案是否定的,因為根據之前的介紹可知列類型和路徑成本類型的處理邏輯有一定差別,如果用一個新列,當直接用Actual-Forecast計算得到的是每一行資料的差額值,是下面這種結果,顯然不符合我們的要求。

DAX實戰小例:對資料進行分組分析 1

那如果用SUM先分别計算Actual和Forecast的和之後再減呢?也不行,因為SUM是取的指定列整個資料的總和,列類型資料的計算特點是會把每一行資料都附上這個SUM求總值,一次會變成下面這種情況,也不符合我們的要求。

DAX實戰小例:對資料進行分組分析 1

是以,要實作該需求,我們需要換一個角度思考。建立一個新的table,用來計算以國家為機關的彙總資訊,此時就需要用DAX的GROUPBY函數以及SUMX。具體如何使用,請見下一個blog。

繼續閱讀