DAX表達(dá)式的結(jié)果應(yīng)用在數(shù)據(jù)透視表中
DAX表達(dá)式的結(jié)果作用于整列或者表中所有行
還需注意以下幾點(diǎn):
a. 表名用''引用。
b. 字段名(列名)用[]引用。
c. 要注意函數(shù)表達(dá)式中參數(shù)的數(shù)據(jù)類(lèi)型,尤其是要將“表”與“數(shù)值”正確區(qū)分。
d. 與Excel公式相同,除了直接在編輯器的公式區(qū)域輸入公式外還可以通過(guò)單擊公式編輯欄前的“fx”圖標(biāo)啟動(dòng)“插入函數(shù)”對(duì)話框,在對(duì)話框中選擇需要的函數(shù)使用。
e. 表達(dá)式中的函數(shù)名不分大小寫(xiě),比如“ALL”函數(shù)也可以記作“all”。
f.輸入公式選擇字段時(shí),英文單引號(hào)'可以索引所有表的所有字段,英文中括號(hào)[可索引當(dāng)前表的所有字段
PP的DAX表達(dá)式中,主要是進(jìn)行數(shù)據(jù)透視,既可以創(chuàng)建列值(例如:新建一列值=原列值*1000,但是這種盡量在PQ中完成),也可以創(chuàng)建度量值,還可以創(chuàng)建表。
使用DAX表達(dá)式時(shí),先測(cè)試,再使用,避免掉坑
案例:用數(shù)據(jù)透視表求出每名銷(xiāo)售人員手中高贏單率低風(fēng)險(xiǎn)商機(jī)金額占總商機(jī)金額的百分比
案例步驟及涉及的函數(shù):
1、switch(表達(dá)式,值1,結(jié)果1,值2,結(jié)果2,....其他情況結(jié)果)
switch函數(shù)中不能出現(xiàn)邏輯符號(hào)判斷,只能是一個(gè)結(jié)果替換一個(gè)值
例如:將贏單率字段中0.15替換為"L"、0.25替換為"L"、0.5替換為"M"、0.75替換為"H"、其他替換為"-"
WinOdds = SWITCH([贏單率],0.15,"L",0.25,"L",0.5,"M",0.75,"H","-")
2、related(合并字段)
在表創(chuàng)建連接關(guān)系的情況下,用related直接寫(xiě)字段名,就可以合并到其他表中需要合并的字段
例如:將商機(jī)相關(guān)企業(yè)信息表中的有無(wú)拖欠還款情況字段合并到本表中。
Risk = RELATED('商機(jī)相關(guān)企業(yè)信息'[有無(wú)拖欠還款情況])
3、filter(表,篩選條件)
第一個(gè)參數(shù)是篩選的表范圍,第二個(gè)參數(shù)是篩選的條件。
4、calculate(計(jì)算規(guī)則,條件 ,條件2...)
用來(lái)求條件下的任意規(guī)則的計(jì)算,條件可以有多個(gè)
例如:對(duì)商機(jī)記錄表中WinOdds="H",并且Risk="無(wú)"的數(shù)據(jù)進(jìn)行匯總
1高贏單率低風(fēng)險(xiǎn)金額合計(jì) = CALCULATE (SUM('商機(jī)記錄'[商機(jī)金額(M)]),FILTER('商機(jī)記錄','商機(jī)記錄'[WinOdds]="H"),FILTER('商機(jī)記錄','商機(jī)記錄'[Risk]="無(wú)"))
5、all和all selected
all
既能忽略篩選維度(切片器),也能忽略匯總維度(行列)。
指定參數(shù)失去篩選能力,計(jì)算總合計(jì)值,合計(jì)值不隨指定維度而合并同類(lèi)項(xiàng),指定維度對(duì)度量失去篩選能力。
參數(shù)可為字段名,忽略該字段的篩選;也可為表名,忽略該表所有字段的篩選能力
allselected
之忽略匯總維度(行列),不忽略篩選維度(切片器)
其他用法和all一致
注意事項(xiàng):
all函數(shù)如果引用同一張表的不同列時(shí),寫(xiě)法all(表1列1,表1列2);
如果引用不同表的列時(shí),寫(xiě)法all(表1列1),all(表2列1);
同時(shí)引用不同表時(shí),寫(xiě)法all(表1),all(表2),用逗號(hào)“,”連接多條件清除篩選
6、sum函數(shù)
基本匯總規(guī)則中(sum、max、min、count、avg),若該匯總在下文中有引用,則必須用sum,反之也可直接拖拽字段到透視區(qū)





