DAX函數從A到Z——一個都不能少
今兒我們要介紹一個篩選器函數「ALL」函數。ALL函數的作用是「返回表中的所有行或者返回列中的所有值,同時忽略可能已應用的任何篩選器。 此函數可用於清除篩選器並對表中的所有行創建計算」。ALL函數只需要填入你不想要被篩選器篩選的欄位就可以了。
例如,我們需要計算每個品類的銷售額在總銷售額中的佔比。我們希望達到的效果是分子位置上是經過品類篩選過的銷售額,分母位置上是不被篩選的全部銷售額。
理清需求之後,我們就可以開始寫公式了
【銷售佔比 = DIVIDE(SUM("銷售"[銷售額]),CALCULATE(SUM("銷售"[銷售額]),ALL("銷售"[銷售額])))】
上面的公式得到以下結果:
我們可以明顯的發現這個結果是錯的。
這是因為在上面的使用過程中,我們沒有搞清楚ALL函數究竟是如何作用的。阿航面的錯誤示範確實是我在接觸ALL函數最初所犯的錯誤。
ALL函數是清除篩選器對錶或者對某列數據的作用的,所以在使用ALL函數時,我們需要搞清楚需要清除的篩選條件究竟是什麼,而不是使用ALL來直接確保某一列數據全部出現。
所以關於上述案例ALL函數正確的使用方法是,使用ALL函數清除對「品類」的篩選。
【銷售佔比 = DIVIDE(SUM("銷售"[銷售額]),CALCULATE(SUM("銷售"[銷售額]),ALL("銷售"[品類])))】
上面的公式得到以下結果:
這樣就得到我們想要的正確的結果了。
如果問題情境改為,計算每個年度的銷售額占近三年銷售總額的佔比。那麼我們就只需要使用ALL函數清除對「年度」的篩選。
【銷售佔比 = DIVIDE(SUM("銷售"[銷售額]),CALCULATE(SUM("銷售"[銷售額]),ALL("銷售"[年度])))】
上面的公式得到以下結果:
ALL函數使用的重點在於理解ALL函數用於清除某個篩選器的篩選作用,而不是直接使某一列或某張表的數據全部出現,所以在ALL函數里的欄位是需要被清除的篩選條件欄位。
Read after me!
ALL函數里的欄位是需要被清除的篩選條件欄位!
ALL函數里的欄位是需要被清除的篩選條件欄位!!
ALL函數里的欄位是需要被清除的篩選條件欄位!!!
以上,再見!
*Power Pivot工坊原創文章,轉載請註明出處。
----------------------------------------------------------------------------------------------
延伸閱讀:
如何優雅的算出黃道吉日
我敢說這個函數多數人都不知道—HASONEFILTER
PBI 自定義可視化對象介紹——Strippet Browser
用PBI說愛你,每一個角度都是愛你的形狀
萌新學BI - Infographic Designer自定義可視化
萌新學Power BI - 又見切片器Chiclet Slicer
萌新學Power BI - 走出Excel思維小衚衕
萌新學Power BI - 動人的報表從美美的切片器開始
亮瞎雙眼的PowerBI可視化圖表
一張圖看懂微軟Power BI系列組件
一張圖看懂Power BI 架構
當Power BI 遇上洪災
當Power BI 遇上歐冠決賽
當Power BI遇上條形碼
當Power BI遇上Visio
----------------------------------------------------------------------------------------------
如果您想深入學習微軟Power BI,歡迎登錄網易雲課堂試聽學習我們的「從Excel到Power BI數據分析可視化」系列課程。或者關注我們的公眾號(PowerPivot工坊)後猛戳」在線學習」
推薦閱讀:
※如何跨組織安全地分享Power BI報告
※Power BI - Earlier 公式
※大多書上沒說明白的DAX計算核心原理與計算上下文
※PowerQuery的優勢與短板
※DAX學習分享:十條經驗
TAG:PowerBI | PowerQuery | MicrosoftExcel |