DAX分享6:圖表裡的Fixed date
圖表裡的Fixed date。這個標題有點簡單,具體來說我在這裡介紹的就是filter對圖表沒有影響,並且補全所在date下的全部資料。事實表中沒有的度量值用0補充。
首先說道filter對圖表沒有影響,可能你想到了Format->Edit interactions.
Er...Edit interactions是對Slicer起作用,本文主要是說如果針對報表或者頁面或者Visualizations的是FILTERS。(下面兩個地方的Filters是一樣的,不過新版本中的左邊白色Filters還可以設定一些,具體基礎分享再說啦。有興趣的也可以自己先看看)
話不多說,開始啦~~獻上我的大路飛表達下我週一的心情!
資料介紹:
Date table是用M Query建的2013全年和2014年全年的資料。(不知道怎麼建的,請參考DAX分享5)
事實表的資料就是微軟官網的財務案例financials的資料。(不知道那個financials的資料,請移步DAX分享3,連結地址在裡面)
financials中sales的資料從2013年9月到2014年12月。其他月份沒有資料。
需求如下:
我要2013年到2014年全年的資料,不受Product和Segment在Filter上的選擇變化的影響。2013年沒有的資料用0補齊。
解決方法:
如果我們什麼都不處理,直接就在圖表里拉這四個欄位。得到結果如下:
很好理解。兩張表先做了內連線,然後資料被過濾了,就只有這幾個月有資料。所以肯定是要處理下Sales這個事實資料啦。因為要先考慮Date表,所以資料欄位肯定是要在Date表裡面建了,然後想到是一對多的關係。DAX裡面當然就是RELATEDTABLE啦。很簡單吧。so easy。所以在Date表裡面建立一個Calculated column.具體定義如下:
Sales = IF(
ISBLANK(SUMX(RELATEDTABLE(financials),financials[ Sales])),
0,
SUMX(RELATEDTABLE(financials),financials[ Sales]))
怎麼樣,是不是很簡單啊。
敲黑板啦!一對多的關係就要想起 RELATEDTABLE 。隨便你的filter怎麼選怎麼改都沒有關係啦。
也許你會說,用All寫在financials表也可以不考慮filter裡面的影響啊。Er,那補全2013年1月到8月的0怎麼辦呢?嗯,這個時候,你可以說,那我在資料來源用M Query先把這幾個月的資料在financials資料表中補全啊。嗯,當然這樣就可以了啊。事實上,幾年之前Share君也這麼做過的吖~~不過現在想想這個方法還真是傻啊,效能也很差。說多了都是淚!
想想那個麻煩的補資料,是不是覺得RELATEDTABLE很簡單啊。so easy!DAX就是這麼簡單啊~~
歡迎關注DAX Share。分享給你好玩又簡單的DAX!
本文由懶胖子 創作,採用 知識共享署名-相同方式共享 3.0 中國大陸許可協議 進行許可。
轉載、引用前需聯絡作者,並署名作者且註明文章出處。
本站文章版權歸原作者及原出處所有 。內容為作者個人觀點, 並不代表本站贊同其觀點和對其真實性負責。本站是一個個人學習交流的平臺,並不用於任何商業目的,如果有任何問題,請及時聯絡我們,我們將根據著作權人的要求,立即更正或者刪除有關內容。本站擁有對此宣告的最終解釋權。