將Power Pivot模型數(shù)據(jù)取值到單元格中(第2節(jié))
Excel Power Pivot俗稱超級透視表,具有強大的建模能力。一般情況下,Power Pivot的模型在Excel界面以數(shù)據(jù)透視表或數(shù)據(jù)透視圖展現(xiàn)。但是,這種展現(xiàn)方式比較單一,無法實現(xiàn)復(fù)雜結(jié)構(gòu)報表提取模型數(shù)據(jù)的需求。

在《將Power Pivot模型數(shù)據(jù)取值到單元格》中這篇文章中,我介紹了如何使用CUBEVALUE函數(shù)在單元格中輸出Power Pivot模型生成的結(jié)果,實現(xiàn)建模強大與表達靈活并存的效果。本文更進一步,介紹CUBEVALUE函數(shù)的更多用法。樣例數(shù)據(jù)依然是這個銷售達成模型:

1.CUBEVALUE+切片器
透視表可以增加切片器,切換數(shù)據(jù)范圍,CUBEVALUE函數(shù)將Power Pivot數(shù)據(jù)取值到單元格中后,是否同樣可以切片?


答案是可以的。在公式的末端,只要輸入“切片器”,就會彈出報表中所有的切片器,選擇其中一個,切片器即可與復(fù)雜格式的報表聯(lián)動。

=CUBEVALUE("ThisWorkbookDataModel","[銷售員].[銷售員].["&B5&"]","[Measures].[M_銷售額]",切片器_星期)
如下為切片動態(tài)效果:

和透視表一樣,同一個CUBEVALUE公式可以并列多個切片器對數(shù)據(jù)發(fā)生作用,下方示例為兩個切片器:
=CUBEVALUE("ThisWorkbookDataModel","[銷售員].[銷售員].["&B52&"]","[Measures].[M_銷售額]",切片器_工齡,切片器_職級)
動畫可以看到,一個切片器可以同時控制透視表和CUBE生成的表格:

2.CUBEVALUE+CUBEMEMBER
CUBE函數(shù)是個大家族,其中CUBEVALUE和CUBEMEMBER配合可以實現(xiàn)對模型中的度量值自由切換。復(fù)雜格式報表的精髓在于
復(fù)雜(比如各種合并單元格)以及
隨心所欲,比方下表右側(cè)的客單量你的領(lǐng)導(dǎo)想讓你放到最上方,銷售筆數(shù)放到最下方。

常規(guī)的辦法是變更E列的每一個文字,并且變更F列的每一個公式。有了CUBEMEMBER大可不必如此麻煩。
首先,E列全部變更為CUBEMEMBER而不是普通文字,但是看上去和普通文字沒有什么區(qū)別:
E6=CUBEMEMBER("ThisWorkbookDataModel","[Measures].[M_客單量]","客單量")
E7=CUBEMEMBER("ThisWorkbookDataModel","[Measures].[M_客單價]","客單價")
E8=CUBEMEMBER("ThisWorkbookDataModel","[Measures].[M_件單價]","件單價")
E9=CUBEMEMBER("ThisWorkbookDataModel","[Measures].[M_銷售筆數(shù)]","銷售筆數(shù)")
F列的CUBEVALUE函數(shù)也相應(yīng)變更,為了方便對照,將變更前后的公式同時列示:
變更前=CUBEVALUE("ThisWorkbookDataModel","[銷售員].[銷售員].["&$B$5&"]","[Measures].[M_銷售筆數(shù)]",切片器_星期)
變更后=CUBEVALUE("ThisWorkbookDataModel","[銷售員].[銷售員].["&$B$5&"]",E6,切片器_星期)
可以看到F列的區(qū)別是,變更前CUBEVALUE引用的是DAX建立的度量值,而變更后引用的是E列的單元格值。在這樣的結(jié)構(gòu)下,E列的指標名稱任意變化,F(xiàn)列的數(shù)據(jù)會對應(yīng)變化為該指標數(shù)據(jù):

CUBEMEMBER函數(shù)最少兩個參數(shù),可以有三個參數(shù),三個參數(shù)本例描述為:
CUBEMEMBER(這個模型,取哪個度量值,給這個度量值取個別名)
本例Power Pivot后臺DAX新建的度量值都帶有M字樣,直接體現(xiàn)在報表中不雅觀,因此推薦啟用第三個參數(shù)。
3.總結(jié)
本文結(jié)合上一篇CUBEVALUE的介紹文章,可以給我們一個啟示:DAX的建模能力猶如深厚的內(nèi)功,你的內(nèi)力如果只是通過透視表這一個招式表達出來未免太過無趣(Power BI用戶請飄過),而CUBE函數(shù)給了你表達的自由。