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








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