精品丨CALCULATE——上下文擴(kuò)展

之前關(guān)于CALCULATE的函數(shù)寫(xiě)過(guò)很多期,白茶在梳理知識(shí)點(diǎn)的時(shí)候,發(fā)現(xiàn)漏掉了一個(gè)需要描述的地方,本期將會(huì)對(duì)這個(gè)遺漏的地方進(jìn)行補(bǔ)充說(shuō)明。

傳送門(mén):《精品丨CALCULATE函數(shù)進(jìn)階版知識(shí)》

CALCULATE衍生的上下文擴(kuò)展

最開(kāi)始接觸這個(gè)問(wèn)題的時(shí)候,大概還是在2019年。

那次白茶和@嘿神閑聊的時(shí)候,嘿神曾提及過(guò)這個(gè)問(wèn)題,就是CALCULATE函數(shù)盡量不要再次嵌套CALCULATE函數(shù),不然會(huì)出現(xiàn)不可預(yù)知的錯(cuò)誤,且對(duì)于初學(xué)者來(lái)說(shuō)這個(gè)問(wèn)題不利于理解排查。

當(dāng)時(shí)白茶沒(méi)意識(shí)到這個(gè)問(wèn)題的嚴(yán)重性,直到近期和@冬哥閑聊的時(shí)候再次遇到這個(gè)問(wèn)題,白茶才明白這個(gè)問(wèn)題點(diǎn)出在哪里。

可能小伙伴看到這里還是云里霧里的,別急,看下面的例子。

案例數(shù)據(jù):

這是白茶準(zhǔn)備的案例數(shù)據(jù),非常的簡(jiǎn)單,小伙伴可以動(dòng)手模擬一下。

問(wèn)題:

下面這四段代碼返回的結(jié)果分別是什么?

代碼1:

Question.1 =
CALCULATE ( CALCULATE ( SUM ( '案例'[價(jià)格] ), '案例'[名稱(chēng)] = "奶茶" ), '案例'[類(lèi)別] = "飲品" )

代碼2:

Question.2 = 
CALCULATE ( CALCULATE ( SUM ( '案例'[價(jià)格] ), '案例'[名稱(chēng)] = "奶茶" ), '案例'[名稱(chēng)] = "面包" )

代碼3:

Question.3 =
CALCULATE (
    CALCULATE ( SUM ( '案例'[價(jià)格] ), '案例'[名稱(chēng)] = "奶茶" ),
    FILTER ( ALL ( '案例' ), '案例'[類(lèi)別] = "食物" )
)

代碼4:

Question.4 = 
CALCULATE (
    CALCULATE ( SUM ( '案例'[價(jià)格] ), FILTER ( ALL ( '案例' ), '案例'[名稱(chēng)] = "奶茶" ) ),
    FILTER ( ALL ( '案例' ), '案例'[名稱(chēng)] = "面包" )
)

思考一下

1

2

3

...

答案:

代碼1:

代碼2:

代碼3:

代碼4:

小伙伴們,猜對(duì)了么?

那么這四段代碼的內(nèi)部邏輯是什么?

解釋?zhuān)?/strong>

代碼1:

此時(shí)內(nèi)部的上下文是“奶茶”,而外部上下文是“飲品”,內(nèi)外上下文不沖突,外部上下文先執(zhí)行,與內(nèi)部上下文取交集,因此結(jié)果返回“15”。


代碼2:

此時(shí)內(nèi)部的上下文是“奶茶”,而外部上下文是“面包”,內(nèi)外上下文沖突,外部上下文先執(zhí)行,內(nèi)部上下文覆蓋掉外部上下文,因此結(jié)果返回“15”。


代碼3:

此時(shí)內(nèi)部的上下文是“奶茶”,而外部上下文是“食物”,內(nèi)外上下文不沖突,外部上下文先執(zhí)行,與內(nèi)部上下文取交集,兩個(gè)上下文此時(shí)交集為空,因此結(jié)果返回“空”。


代碼4:

此時(shí)內(nèi)部的上下文使用了ALL,篩選條件是“奶茶”;

而外部上下文也使用了ALL,篩選條件是“面包”;

內(nèi)外上下文沖突,外部上下文先執(zhí)行,內(nèi)部上下文覆蓋掉外部上下文,因此結(jié)果返回“15”。

小伙伴們,看明白了么?

通常情況下,外部上下文先執(zhí)行,內(nèi)部上下文后執(zhí)行;

一旦內(nèi)外上下文沖突,后執(zhí)行的內(nèi)部上下文會(huì)覆蓋掉先執(zhí)行的外部上下文。

因此使用CALCULATE函數(shù)的時(shí)候,如果多層嵌套,切記上下文沖突的問(wèn)題。

小伙伴們?GET了么?

白茶會(huì)不定期的分享一些函數(shù)卡片

(文件在知識(shí)星球[PowerBI丨需求圈])

這里是白茶,一個(gè)PowerBI的初學(xué)者。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容