當前位置:
首頁 > 文史 > 利用ALL和ALLSELECTED靈活計算佔比

利用ALL和ALLSELECTED靈活計算佔比

計算個體佔總體的比例是一個很常見的分析方式,它很簡單,就是兩個數字相除,但是當需要計算的維度、總體的範圍發生動態變化時,如何靈活且快速的計算出各種佔比,還是需要動一點心思的。

本文就通過 DAX 中的 ALL 和 ALLSELECTED 函數來看看在 PowerBI 中是如何快速計算出各種佔比的。

數據為虛擬的某網上商城的電子產品的銷售記錄,我們根據銷售額指標來計算某產品的佔總體或者類別的比例。

首先寫一個銷售額的度量值,

銷售額= SUM("訂單"[銷售額])

在矩陣中看看該度量值的結果,

總體佔比

計算佔總體的比例,就是每一個類別的銷售額都除以總計數,計算總計數,可以用 ALL 函數清除外部上下文的篩選,如果單獨計算出總計銷售額,可以這樣寫,

銷售額總計=CALCULATE([銷售額],ALL("產品")

將該度量值放入到卡片圖中,可以看到正好是2,305,350.

這裡為了更加直觀,我們直接寫出佔總體比例的度量值,

總體佔比= DIVIDE([銷售額],CALCULATE([銷售額],ALL("產品")))

矩陣中結果如下,

為了進一步分析具體每一種產品的佔比,把產品名稱展開,

分類佔比

每一種產品相對於總體的比例都計算出來了,但是如果還需要知道每一種產品占所屬分類的比例,可以這樣寫,

分類佔比=

DIVIDE([銷售額],CALCULATE([銷售額],ALL("產品"[產品名稱])))

結果如下,

這張表中最後一列每種產品佔分類的比例正是想要的結果,這兩個度量值的區別就在於ALL("產品")和ALL("產品"[產品名稱])。

ALL("產品")是清除對產品表上所有的列的上下文,正如上面看到的,CALCULATE([銷售額],ALL("產品")的結果就是總體的銷售額。

而ALL("產品"[產品名稱])僅僅是清除產品名稱的上下文,如果上下文不是產品名稱,那麼它還是會繼續計算,比如第一行是類別:電腦外設,它不屬於產品名稱,那麼這個度量值會計算電腦外設的銷售額。

可以單獨寫一個度量值觀察一下結果,

銷售額 分類= CALCULATE([銷售額],ALL("產品"[產品名稱]))

可以看出每一個產品計算出的銷售額都是所屬分類的匯總銷售額,正是利用這個特點,拿產品的銷售除以類別合計銷售額,就得到的每種產品占所屬類別的比例。

按篩選上下文計算總體佔比

現在如果想分析具體某幾個產品的數據,用產品名稱做個切片器,效果如下,

除了類別行和總計行的佔比發生了變化,每一種產品的佔比數據並沒有變化。

如果我們只是想分析所選的這幾種產品,把所選這幾種產品作為一個整體,來分析每種產品占所選產品的比例,這個結果顯然不能讓人滿意。

是時候請出ALLSELECTED函數登場表演了!

要計算每一種產品占所選品種合計銷售額的比例,度量值如下,

按篩選 佔總體%=

DIVIDE([銷售額],CALCULATE([銷售額],ALLSELECTED("產品")))

最後一列的佔比,無論我們篩選哪些產品,總體比例都是100%,而每一種產品,都是該產品占所選產品的比例。

ALLSELECTED函數針對外部上下文中進行篩選計算,正好是我們需要的效果。

按篩選上下文計算類別佔比

如果我們想進一步計算按外部所選的產品,並且按照產品類別,來計算相對產品類別的百分比,怎麼做呢?

也許你已經想到了,和上面一樣,使用ALLSELECTED("產品"[產品名稱],

按篩選 佔分類%=

DIVIDE([銷售額],CALCULATE([銷售額],ALLSELECTED("產品"[產品名稱])))

正是期望中的結果。

從這幾個實例可以看出,使用DAX來計算佔比非常靈活,稍微一改動,結果大不同,以硬碟為例,通過ALL和ALLSELECTED函數和參數的變化,獲得了4個不同的佔比,並且每種佔比都具有一定的意義,都是在某種業務場景下的真實需求。

總結

其實上面計算的每一種佔比,分子都不變,只是通過ALL和ALLSELECT函數及其參數的選擇操控不同的上下文環境,來控制分母的計算,進而得到我們所需要的佔比。

1,計算佔總體的比例,

總體佔比=

DIVIDE([銷售額],CALCULATE([銷售額],ALL("產品")))

2,計算占類別的比例,

分類佔比=

DIVIDE([銷售額],CALCULATE([銷售額],ALL("產品"[產品名稱])))

3,按外部篩選上下文,計算佔總體的比例,

按篩選 佔總體%=

DIVIDE([銷售額],CALCULATE([銷售額],ALLSELECTED("產品")))

4,按外部篩選上下文,計算占類別的比例,

按篩選 佔分類%=

DIVIDE([銷售額],CALCULATE([銷售額],ALLSELECTED("產品"[產品名稱])))

DAX函數並不是很容易理解,必須基於不同的上下文環境來觀察結果,通過不斷的練習、思考背後的邏輯,才能更好的掌握。


喜歡這篇文章嗎?立刻分享出去讓更多人知道吧!

本站內容充實豐富,博大精深,小編精選每日熱門資訊,隨時更新,點擊「搶先收到最新資訊」瀏覽吧!


請您繼續閱讀更多來自 PowerBI星球 的精彩文章:

有了這幾個公式,你也可以快速搞定累計求和
用PowerBI進行帕累托分析有多簡單?

TAG:PowerBI星球 |