99999久久久久久亚洲,欧美人与禽猛交狂配,高清日韩av在线影院,一个人在线高清免费观看,啦啦啦在线视频免费观看www

熱線電話:13121318867

登錄
2020-06-15 閱讀量: 1605
PowerBI中最重要的函數(shù):CALCULATE

CALCULATE的語(yǔ)法結(jié)構(gòu)


語(yǔ)法:


CALCULATE(<expression>,<filter1>,<filter2>…)


  • 第一個(gè)參數(shù)是計(jì)算表達(dá)式,可以執(zhí)行各種聚合運(yùn)算
  • 從第二個(gè)參數(shù)開始,是一系列篩選條件,可以為空;如果多個(gè)篩選條件,用逗號(hào)分隔
  • 所有曬選條件的交集形成最終的篩選數(shù)據(jù)集合
  • 根據(jù)篩選出的數(shù)據(jù)集合執(zhí)行第一個(gè)參數(shù)的聚合運(yùn)算并返回運(yùn)算結(jié)果


前文提到DAX函數(shù)可以更改外部上下文,現(xiàn)在通過實(shí)例來(lái)理解DAX中最精髓的函數(shù)CALCULATE的計(jì)算原理,并看看它是如何更改外部上下文的。



CALCULATE應(yīng)用實(shí)例


導(dǎo)入下面這個(gè)產(chǎn)品明細(xì)表:





新建一個(gè)度量值求每種產(chǎn)品的數(shù)量:


產(chǎn)品數(shù)量 = COUNTROWS('產(chǎn)品明細(xì)')


因?yàn)槊糠N產(chǎn)品的只有1行,所以求產(chǎn)品明細(xì)表的行數(shù)就相當(dāng)于求各種產(chǎn)品的數(shù)量,把產(chǎn)品名稱和該度量值拖拽入矩陣表,





這里外部上下文就是表格每行的行標(biāo)簽。



01 | 篩選條件為空,不影響外部上下文


現(xiàn)在開始用CALCULATE函數(shù)創(chuàng)建一個(gè)度量值:


產(chǎn)品數(shù)量1 = CALCULATE([產(chǎn)品數(shù)量])


只是用了第一個(gè)參數(shù),篩選條件為空,因?yàn)闆]有內(nèi)部篩選所以完全依賴外部上下文,出來(lái)的結(jié)果也和原度量值一致。




另外,介紹CALCULATE語(yǔ)法的時(shí)候說,第一個(gè)參數(shù)為聚合運(yùn)算表達(dá)式,為什么這里沒有用聚合函數(shù)而只用了一個(gè)度量值呢?這是因?yàn)槎攘恐礫產(chǎn)品數(shù)量]本身就是一個(gè)聚合函數(shù)運(yùn)算,實(shí)際上度量值[產(chǎn)品數(shù)量1]等同于這個(gè):

產(chǎn)品數(shù)量1 = CALCULATE(COUNTROWS('產(chǎn)品明細(xì)'))

DAX函數(shù)可以直接引用已經(jīng)創(chuàng)建好的度量值,可以使DAX函數(shù)看起來(lái)更簡(jiǎn)潔、更具可讀性,這也是建議從最簡(jiǎn)單的度量值開始建的原因。


02 | 添加限制條件,縮小上下文


建一個(gè)度量值[產(chǎn)品數(shù)量2],

產(chǎn)品數(shù)量2 = CALCULATE([產(chǎn)品數(shù)量],'產(chǎn)品明細(xì)'[品牌]="蘋果")



發(fā)現(xiàn)只有蘋果的產(chǎn)品計(jì)數(shù)顯示出來(lái),而其他品牌的數(shù)據(jù)沒有了,這是因?yàn)镃ALCULATE的第二個(gè)參數(shù)的限制,只篩選品牌為“蘋果”的,限制了外部的上下文,非蘋果的產(chǎn)品都不再運(yùn)算。


03 | 結(jié)合ALL函數(shù),擴(kuò)大上下文


新建度量值[產(chǎn)品數(shù)量3],

產(chǎn)品數(shù)量3 = CALCULATE([產(chǎn)品數(shù)量],ALL('產(chǎn)品明細(xì)'))



這次的數(shù)據(jù)居然是所有產(chǎn)品的數(shù)量,這是因?yàn)楹Y選條件使用了ALL函數(shù),ALL('產(chǎn)品明細(xì)')的意思是清除產(chǎn)品明細(xì)表里的所有篩選,外部篩選器不起作用了,每行統(tǒng)計(jì)的都是該表中的所有產(chǎn)品。

每行的數(shù)據(jù)都是9,你可能覺得這個(gè)ALL函數(shù)沒什么用,運(yùn)算的數(shù)據(jù)沒有什么意義,會(huì)誤導(dǎo)人,實(shí)際上當(dāng)然不是這樣,這個(gè)數(shù)據(jù)使用的地方非常多,比如我們想計(jì)算每個(gè)產(chǎn)品數(shù)量占總產(chǎn)品數(shù)量的比重,直接寫個(gè)度量值:


產(chǎn)品占比=[產(chǎn)品數(shù)量]/[產(chǎn)品數(shù)量3]




產(chǎn)品占比就計(jì)算出來(lái)了,這就是統(tǒng)計(jì)總數(shù)的一個(gè)功能。


04 | 重置上下文


新建度量值[產(chǎn)品數(shù)量4],

產(chǎn)品數(shù)量4 = CALCULATE([產(chǎn)品數(shù)量],
all('產(chǎn)品明細(xì)'[產(chǎn)品名稱]),
'產(chǎn)品明細(xì)'[類別]="手機(jī)")

先用ALL函數(shù)清除外部上下文,然后又新增了一個(gè)篩選條件,類別為"手機(jī)"的產(chǎn)品數(shù)量,那么結(jié)果會(huì)是什么樣的呢,





每一行產(chǎn)品的數(shù)量都是3,正好符合建立這個(gè)度量值的邏輯,被ALL清除行標(biāo)簽的外部篩選后,從全部產(chǎn)品中統(tǒng)計(jì)品類為"手機(jī)"的產(chǎn)品的數(shù)量,所以每行都返回3.


通過以上幾個(gè)簡(jiǎn)單的例子,可以領(lǐng)會(huì)到CALCULATE的計(jì)算邏輯,通過從第二個(gè)參數(shù)開始的篩選條件,得到一個(gè)數(shù)據(jù)集合,并利用第一個(gè)參數(shù)執(zhí)行聚合運(yùn)算,這不就是DAX要實(shí)現(xiàn)的功能:提取有用數(shù)據(jù)并執(zhí)行聚合運(yùn)算嗎,所以說CALCULATE幾乎就是DAX本身,它就是實(shí)現(xiàn)DAX功能的引擎,并能靈活的操控外部上下文,后面的數(shù)據(jù)分析也都離不開CALCULATE的身影。


19.1253
3
關(guān)注作者
收藏
評(píng)論(0)

發(fā)表評(píng)論

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