Power BI學習-CALCULATE,CALCULATETABLE和FILTER的區(qū)別

CALCULATE和CALCULATETABLE其實一樣,區(qū)別在于返回結果不同,CALCULATE返回一個值,CALCULATETABLE返回一個表,是一個表函數(shù),用于建立虛擬表,在這點上又跟FILTER類似,今天重點也是分享CALCULATETABLE和FILTER的區(qū)別。

首先先認識一下CALCULATETABLE:

語法:CALCULATETABLE(表,過濾條件1,過濾條件2...)

參數(shù):第一個參數(shù)是表或表達式返回的表

第二參數(shù)及以后參數(shù)都是篩選條件

功能:在由過濾器修改的上下文中計算表達式

返回:根據(jù)第二個及以后的過濾器篩選的上下文中,返回第一個表達式計算的表

注意:表和篩選條件的表是有關系的,只要有關系的表都可以進行篩選,實現(xiàn)多表運作的功能

明白了此函數(shù)的用法,下面就看一下CALCULATETABLE和FILTER的區(qū)別:

舉例:

產(chǎn)品種類銷售計數(shù) = ADDCOLUMNS(VALUES('產(chǎn)品分類表'[種類]),"計數(shù)",COUNTROWS('銷售數(shù)據(jù)表'))

先看一下這個公式的返回結果,是一張超市產(chǎn)品種類的銷售數(shù)據(jù)計數(shù)

在這個函數(shù)外面分別加入CALCULATETABLE和FILTER,結果如下:

calculatetable函數(shù) = CALCULATETABLE(ADDCOLUMNS(VALUES('產(chǎn)品分類表'[種類]),"計數(shù)",COUNTROWS('銷售數(shù)據(jù)表')),'產(chǎn)品分類表'[種類]="食品")

filter函數(shù) = FILTER(ADDCOLUMNS(VALUES('產(chǎn)品分類表'[種類]),"計數(shù)",COUNTROWS('銷售數(shù)據(jù)表')),'產(chǎn)品分類表'[種類]="食品")

問題來了:為什么顯示的數(shù)據(jù)不一樣?

雖然兩者函數(shù)內(nèi)的參數(shù)是一模一樣,但是邏輯運算不同,首先根據(jù)CALCULATETABLE這個函數(shù)的功能是在第二參數(shù)的篩選條件的基礎上計算第一參數(shù)表達式,那么 CALCULATETABLE是先篩選產(chǎn)品表種類是美式,在這個基礎上新增列計數(shù)。

FILTER函數(shù)是逐行計算,沒有篩選上下文,所以是執(zhí)行第一參數(shù)結果后再篩選條件,也就是說篩選條件是在ADDCOLUMNS和COUNTROWS計算了所有產(chǎn)品的數(shù)量后執(zhí)行的,相當于是不起作用的,所以最終結果顯示的是所有產(chǎn)品的數(shù)量。

在實際工作中可能用到CALCULATETABLE這個函數(shù)的機會很少,常用的就是FILTER函數(shù)建立虛擬表,況且在編寫DAX函數(shù)公式時CALCULATE+FILTER這個是黃金組合。

喜歡的就點個贊吧,可以關注我,我是Sugargl,拜拜

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

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

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