工坊實驗室之失靈的篩選
今天,又是元氣滿滿的一天(好古老的梗)
開門見山,今天我們研究三個篩選函數:CALCULATE、SUMX和FILTER。學過一段時間DAX函數的坊友們應該有這種體會,用的較多的篩選函數就是CALCULATE,從微軟官網上download下來的函數定義:在指定篩選器修改的上下文中計算表達式。
語法是:CALCULATE(<expression>,<filter1>,<filter2>…)。
舉個例子,比如有這樣的一個數據集,
我們想展示實際數的話,那麼度量值應該這樣寫:
營業收入實際數 = CALCULATE(SUM(營業收入表[營業收入]),營業收入表[分組]="實際數")
我們按年去展示數據的話出來的條形圖長這樣 :
該條形圖按照每年去計算實際數,因為2018年及之後沒有實際數,所以橫軸年份只到2017年,本例雖簡單,卻也包含了篩選上下文的概念。
假設如果我們想在CALCULATE函數表達式中直接篩選年<=2017來控制橫軸年份以達到同樣的效果,那麼我們的度量值應該這樣寫:
營業收入實際數 = CALCULATE(SUM(營業收入表[營業收入]),營業收入表[年]<=2017)
出來的圖長這樣:
一臉黑人問號。。。為啥這個圖變成了這樣??莫不是篩選函數失靈了?仔細看了下數值,每一年展示的數都是2017年之前的數據的匯總,仔細想想函數的篩選上下文的邏輯,對橫軸的每個年份計算2017年之前的營業收入,確實是這樣。
那麼應該怎麼樣通過度量值的方式直接篩選年份呢?我們先試試CALCULATE的兄弟SUMX函數。
度量值應該這樣寫:
營業收入實際數 = SUMX(FILTER(營業收入表,營業收入表[年]<=2017),營業收入表[營業收入])
再瞅一眼圖表:
嗯,達到了我們預期的效果,那麼這個表達式跟我們用CALCULATE函數寫的表達式差別在哪裡呢?我們發現用SUMX函數往往配合filter函數使用,我們也給CALCULATE函數加一個FILTER試試。
營業收入實際數 = CALCULATE(SUM(營業收入表[營業收入]),FILTER(營業收入表,營業收入表[年]<=2017))
再瞅一眼圖表:
原來加一個篩選函數FILTER就可以解決這個問題了。
去官網上看一下FILTER函數的描述,注意到FILTER函數的返回值:只包含篩選行的表。恍然大悟,果然官方文檔還是要多看看的。
DAX函數微軟官方參考文件:https://msdn.microsoft.com/zh-cn/library/ee634396(v=sql.110).aspx
今天的文章水完了,坊友們,我滾啦~
*Power Pivot工坊原創文章,轉載請註明出處。
延伸閱讀:
工坊實驗室之R腳本視覺對象
工坊實驗室之數據標籤的位置
工坊實驗室之桑基圖排序
工坊實驗室之流向圖展現
工坊實驗室之使用瀑布圖
亮瞎雙眼的PowerBI可視化圖表
一張圖看懂微軟Power BI系列組件
一張圖看懂Power BI 架構
當Power BI 遇上洪災
當Power BI 遇上歐冠決賽
當Power BI遇上條形碼
當Power BI遇上Visio
如果您想深入學習微軟Power BI,歡迎登錄網易雲課堂試聽學習我們的「從Excel到Power BI數據分析可視化」系列課程。或者關注我們的公眾號(PowerPivot工坊)後猛戳」在線學習」
推薦閱讀:
※史上第一份基於DAX數據模型編寫的美國人口遷徙地圖
※華爾街圖表點圖與堆積組合
※把數據標籤「掛」在柱形圖的外側,逼格滿滿!
※3個Excel神技巧,免費教你
TAG:Office365 | MicrosoftExcel | PowerBI |