https://zhuanlan.zhihu.com/p/55295072
靜態的分析經常不能滿足實際分析的需要,還需要引入動態分析,通過調節某個維度的增減變化來觀察對分析結果的影響。在PowerBI中,可以使用「參數」,以切片器的形式來控制變量,與其他指標進行交互,進而完成動態分析。
創建「參數」
在PowerBI Desktop中,在“建模”選型卡下,點擊“新建參數”,
然后將出現這個窗口,
比如按照以上默認的值建立的參數就是建立一個從0到20的整數序列:0、1、2、3……20,點擊確定,畫布上將出現一個切片器,這是因為新建參數時,左下角有個默認選項:將切片器添加到此頁,通過滑動切片器可以調整參數的數值,

在數據視圖下,可以看到這個參數表,
其實就是利用DAX函數GENERATESERIES新建了一個表而已,只是這里是通過圖形界面點擊的方式創建的,並且通過新建參數的方式,不只是新建了這張表,同時也新建了一個度量值,並自動添加到數據模型中,可以在整個報表中使用,通過右邊的字段區可以看到這個度量值,
參數 值 = SELECTEDVALUE('參數'[參數])
這個度量值就是提取被選中的參數值,切片器滑到哪個數值,該度量值就返回什么數值,正是通過這個切片器和這個度量值的結合,來自由的控制變量,以下就通過幾個實例來看看參數是如何實現動態分析的。
TopN分析
假設有全國每個省市的GDP金額,想知道GDP排名前5位GDP之和,可以這樣寫度量值:
GDP = SUM('各省市GDP'[金額])
前5名GDP = CALCULATE([GDP],TOPN(5,ALL('各省市GDP'[地區]),[GDP]))
這里使用了函數TOPN,第一個參數就是要返回的行數,第二個參數是被篩選的表,第三個參數是排序依據,還有第四個可選參數,默認為0按降序排列,就是提取前N位的行數;如果為1,就是按降序排列,將返回最小的N行。
這個度量值是計算前5名之和,如果想知道前10名,把TOPN的第一個參數改為10即可,但是在分析過程中我們不能總是手動更改度量值,這時就可以利用參數來自動實現。
新建一個從1到10的參數,自動生成的度量值為了更具可讀性可以重命名為[TOPN參數],然后把這個度量值來替換TOPN函數的第一個參數,更改上面的這個度量值:
前N名GDP = CALCULATE([GDP],TOPN([TOPN參數],ALL('各省市GDP'[地區]),[GDP]))
然后就可以通過拖動切片器來實現動態的TOPN分析了,

動態移動平均
在分析股價走勢圖時,經常用到30日均線、60日均線等,使用移動平均線可以熨平每日價格的劇烈波動,讓用戶能更清晰看到長期的變化趨勢。
30日均線就是向前推30天的均價折線圖,60天均線、120天均線以此類推,我們先建立一個參數GENERATESERIES(30,120,30),以及度量值:[移動平均參數]。
由於股市不是每天都開盤的,所以不能直接用自然日期表向前推N天,這里直接在每日股價走勢數據中添加編號,編寫度量值:
N天均線 = AVERAGEX(
filter(all('股價走勢'),'股價走勢'[編號]<=VALUES('股價走勢'[編號])&&'股價走勢'[編號]>=VALUES('股價走勢'[編號])-[移動平均參數]),
'股價走勢'[收盤價])
AVERAGEX函數是一個迭代函數,可以將篩選出的表依據最后一個參數取算術平均值,控制移動平均天數的就是'股價走勢'[編號])-[移動平均參數],將這個度量值和收盤價維度同時放入到折線圖中,

可以直觀的看出,天數越長的均線越平滑,走勢越穩定。
動態折扣率
如果要測算對商品進行打折的情況下的銷售額,可以新建一個折扣率參數GENERATESERIES(0.5,1,0.1),假設最低打5折,設置最小值為0.5,注意這里的數據類型選擇“十進制數字”,
參數度量值重命名為[折扣率參數],原有計算銷售額的度量值假設為[銷售額],新建一個度量值:
折扣銷售額=[銷售額]*[折扣率參數]
將這個度量值和原來的[銷售額]同時放入到柱形圖中,
通過切片器選擇不同的折扣率就可以動態的展示折后的銷售情況。
關於參數就介紹到這里,參數的更多應用場景,可以根據這里的例子舉一反三,使用方法類似。