有位大佬曾經(jīng)告訴過(guò)我,如果你深入理解了CALCULATE扁远,那么你就相當(dāng)于理解了DAX函數(shù)的基礎(chǔ)俊鱼,因?yàn)樗荄AX函數(shù)中最靈活多變,也是適應(yīng)性最強(qiáng)的函數(shù)之一畅买。
CALCULATE的語(yǔ)法結(jié)構(gòu)
DAX=
CALCULATE(<expression>,<filter1>,<filter2>...)
第一參數(shù)是計(jì)算的表達(dá)式并闲,可以進(jìn)行各種聚合運(yùn)算
從第二參開(kāi)始,是一系列的篩選條件谷羞,可以為空帝火,如果是多個(gè)篩選條件的話,用半角逗號(hào)分隔開(kāi)
返回結(jié)果為篩選出所有篩選條件的交集湃缎,并根據(jù)第一參的表達(dá)式計(jì)算出相對(duì)應(yīng)的結(jié)果
◆ ◆ ◆◆ ◆
如果非要用幾個(gè)簡(jiǎn)短的詞匯來(lái)概括的話犀填,白茶個(gè)人的理解就是:聚合、篩選嗓违、重新調(diào)整上下文條件九巡。(不喜勿噴)
干說(shuō)沒(méi)啥意思,咱看下面這個(gè)例子:
這是事先準(zhǔn)備好的示例文件靠瞎,將其導(dǎo)入PowerBI中比庄,如圖:
可以看出來(lái)求妹,這一部分的銷售數(shù)據(jù)包含著手機(jī)、電腦佳窑,兩種類型制恍。夾雜著不同品牌、不同的售貨方式神凑,那么我們?cè)撊绾螌?duì)產(chǎn)品數(shù)量進(jìn)行聚合呢净神?
編寫如下代碼:
數(shù)量=
SUM('表'[列])//這里我替換成了示例文件
如下圖:
呈現(xiàn)結(jié)果如圖,很明顯溉委,我們想要的是分別計(jì)算銷售和退貨鹃唯,這樣才符合我們對(duì)銷售數(shù)量的計(jì)算,繼續(xù)編寫如下代碼:
銷售 =
VAR SQ =
CALCULATE ( [數(shù)量], FILTER ( '表', [條件] = "N" ) ) //這里一樣瓣喊,可以替換成自己的數(shù)據(jù)
VAR HQ =
CALCULATE ( [數(shù)量], FILTER ( '表', [條件] = "M" ) )
RETURN
SQ - HQ
其結(jié)果如下:
怎么樣坡慌,是不是按照我們的要求來(lái)了?
解釋一下代碼的意義藻三。
VAR是將變量轉(zhuǎn)換為常量洪橘,方便根據(jù)外部篩選計(jì)算,同時(shí)可以節(jié)省代碼空間棵帽;SQ在這里的公式意義是聚合在表中銷售方式為“銷售”的數(shù)量熄求,HQ是聚合“退貨”的數(shù)量,并且還有在最后進(jìn)行總數(shù)量計(jì)算逗概。
在這里就是運(yùn)用了CALCULATE的第二參篩選弟晚,使其符合我們心中的預(yù)期計(jì)算。(注釋:CALCULATE中的參數(shù)也可以是常量逾苫,常量是不需要嵌套FILTER卿城,只有是變量才需要嵌套。)
這是CALCULATE最經(jīng)典的用法之一铅搓,單條件篩選求和藻雪,以后會(huì)繼續(xù)分享學(xué)習(xí)CALCULATE的其他心得。我是白茶狸吞,一個(gè)PowerBI的初學(xué)者。
小伙伴們?GET了么指煎?
白茶會(huì)不定期的分享一些函數(shù)卡片
(文件在知識(shí)星球[PowerBI丨需求圈])
這里是白茶蹋偏,一個(gè)PowerBI的初學(xué)者。