CALCULATE的語(yǔ)法結(jié)構(gòu)
語(yǔ)法:
CALCULATE(,,…)
第一個(gè)參數(shù)是計(jì)算表達(dá)式,可以執(zhí)行各種聚合運(yùn)算
從第二個(gè)參數(shù)開(kāi)始,是一系列篩選條件,可以為空;如果多個(gè)篩選條件,用逗號(hào)分隔
所有曬選條件的交集形成最終的篩選數(shù)據(jù)集合
根據(jù)篩選出的數(shù)據(jù)集合執(zhí)行第一個(gè)參數(shù)的聚合運(yùn)算并返回運(yùn)算結(jié)果
前文提到DAX函數(shù)可以更改外部上下文,現(xiàn)在通過(guò)實(shí)例來(lái)理解DAX中最精髓的函數(shù)CALCULATE的計(jì)算原理,并看看它是如何更改外部上下文的。
01 | 篩選條件為空,不影響外部上下文
現(xiàn)在開(kāi)始用CALCULATE函數(shù)創(chuàng)建一個(gè)度量值:
產(chǎn)品數(shù)量1 = CALCULATE([產(chǎn)品數(shù)量])
02 | 添加限制條件,縮小上下文
建一個(gè)度量值[產(chǎn)品數(shù)量2],
產(chǎn)品數(shù)量2 = CALCULATE([產(chǎn)品數(shù)量],'產(chǎn)品明細(xì)'[品牌]="蘋(píng)果")
03 | 結(jié)合ALL函數(shù),擴(kuò)大上下文
新建度量值[產(chǎn)品數(shù)量3],
產(chǎn)品數(shù)量3 = CALCULATE([產(chǎn)品數(shù)量],ALL('產(chǎn)品明細(xì)'))
04 | 重置上下文
新建度量值[產(chǎn)品數(shù)量4],
產(chǎn)品數(shù)量4 = CALCULATE([產(chǎn)品數(shù)量],
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? all('產(chǎn)品明細(xì)'[產(chǎn)品名稱]),
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?? '產(chǎn)品明細(xì)'[類別]="")
先用ALL函數(shù)清除外部上下文,然后又新增了一個(gè)篩選條件,類別為"手機(jī)"的產(chǎn)品數(shù)量.
通過(guò)從第二個(gè)參數(shù)開(kāi)始的篩選條件,得到一個(gè)數(shù)據(jù)集合,并利用第一個(gè)參數(shù)執(zhí)行聚合運(yùn)算,這不就是DAX要實(shí)現(xiàn)的功能:提取有用數(shù)據(jù)并執(zhí)行聚合運(yùn)算嗎,所以說(shuō)CALCULATE幾乎就是DAX本身,它就是實(shí)現(xiàn)DAX功能的引擎,并能靈活的操控外部上下文,后面的數(shù)據(jù)分析也都離不開(kāi)CALCULATE的身影。








暫無(wú)數(shù)據(jù)