Power BI在使用DAX編寫公式時(shí)磷账,使用VAR可以使公式更加簡潔且計(jì)算效率更高砾层。我在使用VAR函數(shù)時(shí)遇到一個(gè)問題托慨,后來通過佐羅老師關(guān)于“Power BI 自動(dòng)化用戶運(yùn)營分析”教程中VAR的章節(jié)左胞,理解了VAR的三個(gè)特性瑰抵,解決了一個(gè)一直沒有理解的事情你雌。
VAR具備以下三個(gè)特點(diǎn):
第一個(gè)特點(diǎn)
嵌套的多層函數(shù),可以使用VAR寫成單行的語句
比如計(jì)算月環(huán)比二汛,直接使用函數(shù)嵌套如下:
月環(huán)比 普通 =
DIVIDE(
[銷售 銷售總額] -
CALCULATE( [銷售 銷售總額], DATEADD( 'D_日期表'[日期], -1, MONTH ) ),
CALCULATE( [銷售 銷售總額], DATEADD( 'D_日期表'[日期], -1, MONTH ) )
)
使用VAR編寫可以是下面的效果:
月環(huán)比 VAR =
var ThisMonth = [銷售 銷售總額]
var LastMonth = CALCULATE( [銷售 銷售總額], DATEADD( 'D_日期表'[日期], -1, MONTH ) )
return DIVIDE( ThisMonth - LastMonth, LastMonth )
公式越復(fù)雜婿崭,VAR的效果越明顯。
第二個(gè)特點(diǎn)
只要VAR+RETRUN構(gòu)成一個(gè)閉合的語句肴颊,可以任意嵌套
下面的語句是成立的氓栈,可以在VAR里面嵌套成對(duì)的VAR+RETURN:
月環(huán)比 VAR嵌套 =
var ThisMonth = [銷售 銷售總額]
var LastMonth =
var t1 = -1
var t2 = CALCULATE( [銷售 銷售總額], DATEADD( 'D_日期表'[日期], t1, MONTH ) )
return t2
return DIVIDE( ThisMonth - LastMonth, LastMonth )
第三個(gè)特點(diǎn)
VAR計(jì)算的結(jié)果是不變的量,因此不能使用VAR命名的變量作為函數(shù)中為值類型的參數(shù)婿着,但可以使用在篩選類型的參數(shù)上授瘦。
這句話我也嘗試了好幾種表述方式醋界,但都比較繞。比如下面這個(gè)例子就是不成立的提完,CALCULATE第一個(gè)參數(shù)不支持使用VAR指定的變量形纺,但可以使用在CALCULATE第二個(gè)參數(shù)上:
月環(huán)比 VAR 錯(cuò)誤示范 = //不會(huì)報(bào)錯(cuò),但計(jì)算的結(jié)果是錯(cuò)誤的
var SalesVolume = [銷售 銷售總額 萬元]
var Exhibition = CALCULATE( SalesVolume, 'D_日期表'[年份] = 2020 )
return if( ISFILTERED( 'D_日期表'[月份(M)] ), SalesVolume, Exhibition )
正確示范如下:
月環(huán)比 VAR 正確示范 =
var SalesVolume = [銷售 銷售總額 萬元]
var Parameter = 2020
var Exhibition = CALCULATE( [銷售 銷售總額 萬元], 'D_日期表'[年份] = Parameter )
return if( ISFILTERED( 'D_日期表'[月份(M)] ), SalesVolume, Exhibition )
第三個(gè)特點(diǎn)是最容易犯錯(cuò)的地方氯葬,VAR定義的變量指的是不變的量挡篓。要想在CALCULATE中正確使用第一個(gè)參數(shù),則需要使用現(xiàn)有的度量值帚称,或重新編寫該參數(shù)的計(jì)算公式官研。
總結(jié):
學(xué)習(xí)VAR函數(shù)的朋友可以看下這三個(gè)特點(diǎn),有助于更加方便的使用VAR將DAX公式編寫的更加簡潔闯睹、清晰戏羽、高效。