DAX地圖-----用PowerPivot解決大數據的展現

這篇貼子帶有實驗性的味道,主要探索DAX在excel中畫圖的極限.因此會充滿一些錯誤.

用DAX能解決數據量太多的問題.雖然excel理論上能保存一百萬行數據,但恐怕一張工作表有十來萬行數據就卡得不行了.用DAX的好處在,在excel里起步價就是百萬行數據,在power bi里是千萬級,而在SSAS里處理的數據行數是上億級.

使用DAX作圖的好處,就是指標可以隨意擬合,PP中後台每一張表相當於一個模塊,在數據透視表中拖拉幾下,就可以換成另外的指標.

先看模擬的數據表.這是一份城市坐標軸,坐標數據都固定死了.

放進Power query里處理一下

主要是為了生成一個換行符.然後將這張表和另一張表載入進power pivot.

用一個簡單的計算列,將字元欄位搬運過來.這分數據表只模擬了各大城市兩件的銷售額.

開始編寫上年銷售的DAX度量值公式:

上年銷售=REPT ( "|", CALCULATE ( SUM ( "銷售表"[銷售金額] ), FILTER ( "銷售表", "銷售表"[年份] = ( MAX ( "銷售表"[年份] ) - 1 ) ) ) / MAX ( "銷售表"[銷售金額] ) * 50) & MAX ( "銷售表"[字元] ) & MAX ( "銷售表"[字元] )

同理編寫今年銷售

REPT ("|",CALCULATE (SUM ( "銷售表"[銷售金額] ),FILTER ( "銷售表", "銷售表"[年份] = MAX ( "銷售表"[年份] ) ) ) / MAX ( "銷售表"[銷售金額] ) * 50)

這兩個公式不是很難,之所以用MAX與MAX-1是為了保持今年與去年的相對性.比如在數據透視表或切片器中選擇2014年,那2014年相對來說是今年.2013年就是上年.相對論,就是老生常談的上下文的具體體現.貌似很多人對上下文比較迷糊....然後用REPT生成 | 符號.

然後我們再做一個標籤度量公式.

MAXX ( TOPN ( 1, "銷售表", CALCULATE ( SUM ( "銷售表"[銷售金額] ), FILTER ( "銷售表", "銷售表"[年份] = MAX ( "銷售表"[年份] ) ) ), DESC ), "銷售表"[城市]) & FORMAT ( DIVIDE ( MINX ( ADDCOLUMNS ( VALUES ( "銷售表"[城市] ), "up", CALCULATE ( SUM ( "銷售表"[銷售金額] ), FILTER ( "銷售表", "銷售表"[年份] = MAX ( "銷售表"[年份] ) ) ) - CALCULATE ( SUM ( "銷售表"[銷售金額] ), FILTER ( "銷售表", "銷售表"[年份] = ( MAX ( "銷售表"[年份] ) - 1 ) ) ) ), [up] ), 100 ), "▲0.0%;▼-0.0%" )

這個公式主要是將今年的銷售減去去年的銷售再除以今年銷售再乘以100,就是同比增長多少,然後將這個同比與城市名字合併起來.

生成上面的數據透視表,然後開始畫圖表,將數據添加三次.在做圖的過程中,發現添加的字元是無效的,也就是說PQ里的那一步是無效的.但是在power pivot里沒有相應的函數.但是在power bi里有這個相應的函數UNICHAR.希望微軟能把這個函數也添加進power pivot里.所以沒有辦法了,只能稍微利用一下工作表函數.將數據引用過來,敲回車鍵,讓其換行.

開始往圖表裡添加數據,使用散點圖.

這樣在一份圖表裡可以做出三個標籤來.

再將條形圖倒轉過來.這樣就變成柱形圖了.

再選擇playbill字體.柱形圖之間就沒有空隙.再在底層放一張地圖.一份用DAX做成的數據地圖就完成了.擁有好高的動態性.

EasyCharts團隊出品

帥的人都關注了EasyCharts團隊^..^~

QQ交流群:553270834

微信公眾號:EasyCharts


推薦閱讀:

TAG:MicrosoftOffice | 数据可视化 | PowerBI |