DAX/PowerBI系列 - 參數表(Parameter Table)
難度: ★☆☆☆☆(1星)
適用范圍: ★★★★☆(4星)
概況:
這個模式比較簡單靈活,而且很實用。所用的DAX語句也比較簡單。
但它的變化形式很多和擴展應用范圍很廣。后文介紹的動態分組(Dynamic Segmentation)也是其中一種。
主要是通過篩選器(Slicer)選擇不一樣的參數時,DAX語句根據所選的值反映相關的選擇值進行計算。
注:參數表,通常可以不放到Data warehouse里面,可以在Excel,或者PowerBI里面,用戶可以隨時對參數進行修改。
----------------------------------------------------------------------------------------------
先看最后PowerBI效果:
應用場景:
以下是幾個應用場景:
- what-if分析
- 商品打8折,打9折銷售額,盈利都有什么變化
- 算法選擇或度量選擇
- 根據選擇,返回同一個度量不一樣的算法結果。
- Top N
以銷售為例:
要求:對SalesAmuont放縮,表示為x1, x1,000, x1000,000等等。
先顯示效果:
數據模型:
Sacle表不與其他表相連,DAX只需要拿到所選的值對原有度量進行放縮即可。
Sales Amount := IF ( HASONEVALUE ( Scale[Scale] ), SUM ( Sales[SalesAmount] ) / VALUES ( Scale[Scale] ), SUM ( Sales[SalesAmount] ) )
要點:
- 通常一個參數表只選擇一個值,通過VALUES函數(或MIN/MAX)得到所選的值。
顯示結果參照上面動圖或者如下:
左邊x1,右邊x1000
|
![]()
|
擴展1:多參數表
下面顯示兩個參數 - 折扣數和起訂量 - 對折扣后的銷售額的影響。
效果:
數據模型:
DiscountedSalesAmount 的計算
DiscountedSalesAmount := IF ( HASONEVALUE ( Discounts[DiscountValue] ) && HASONEVALUE ( MinQuantity[MinQuantity] ), --折扣和起訂量都選了 CALCULATE ( [SalesAmount] * ( 1 – VALUES ( Discounts[DiscountValue] ) ), Sales[Quantity] >= VALUES ( MinQuantity[MinQuantity] ) ) + CALCULATE ( [SalesAmount], Sales[Quantity] < VALUES ( MinQuantity[MinQuantity] ) ), IF ( NOT ( ISFILTERED ( Discounts[Discount] ) ) && NOT ( ISFILTERED ( MinQuantity[MinQuantity] ) ), [SalesAmount], --都沒選 IF ( HASONEVALUE ( Discounts[Discount] ) --只選了discount的一個值 && NOT ( ISFILTERED ( MinQuantity[MinQuantity] ) ) , CALCULATE ( [SalesAmount] * ( 1 – VALUES ( Discounts[DiscountValue] ) ) ), BLANK () ) ) )
PowerBI效果顯示如下:
要把玩上面的PowerBI請戳:
在線:Parameter-Table-Multi: https://app.powerbi.com/view?r=eyJrIjoiNDdkNjgwYjctZjBhNy00OThiLWJlMjctN2EyMDdiMzI2YWQzIiwidCI6ImQxYWY4NDdiLTJjZTEtNDRjYi1iYjUwLWQ1ODAyYmI0M2M4YiIsImMiOjEwfQ%3D%3D
下載鏈接: https://pan.baidu.com/s/1eR2R6Pc 密碼: kiuk
Top N(大客戶分析) 和 Period Table分析比較重要,會單獨的后續文章介紹。
文末有彩蛋!!!