POWER BI DAX函數(shù)應(yīng)用-篩選器函數(shù)(下)

1.HASONEVALUE(<columnName>)

函數(shù)作用:當(dāng)已將 columnName 的上下文篩選為只剩下一個(gè)非重復(fù)值時(shí),將返回 TRUE。 否則為 FALSE。

示例:

新建度量值:

HASONEVALUE?= HASONEVALUE('銷售記錄'[銷售城市])

計(jì)算結(jié)果:

HASONEVALUE 計(jì)算結(jié)果

應(yīng)用場(chǎng)景:隱藏不可加值的累計(jì)。

還以上篇例1.1情況為例,對(duì)于銷售金額和占比是可以累加的,但是對(duì)于排名是不可以累加的,為避免歧義,應(yīng)當(dāng)對(duì)排名的累加進(jìn)行隱藏。

新建度量值:

排名2 = IF(HASONEVALUE('銷售記錄'[銷售城市]),RANKX(ALL('銷售記錄'[銷售城市]),[銷售金額],,DESC))

計(jì)算結(jié)果:

排名2 計(jì)算結(jié)果

如上圖所示,排名2的總計(jì)行結(jié)果不顯示,不會(huì)造成歧義。

除此之外,我們可以思考一種業(yè)務(wù)場(chǎng)景,再增加一個(gè)維度,比如A負(fù)責(zé)費(fèi)城,B負(fù)責(zé)紐約,C負(fù)責(zé)芝加哥,D和E都負(fù)責(zé)洛杉磯,那么無(wú)論D和E的業(yè)績(jī)分別是多少,他們最終的排名應(yīng)該是相同的,即洛杉磯應(yīng)該只有一個(gè)排名,此時(shí)HASONEVALUE的作用就會(huì)體現(xiàn)的更加全面和重要了。

2.HASONEFILTER(<columnName>)?

函數(shù)作用:當(dāng) columnName 上的直接篩選值的數(shù)目為一時(shí),返回 TRUE;否則返回 FALSE。

示例:

新建度量值:

HASONEFILTER = HASONEFILTER('銷售記錄'[銷售城市])

計(jì)算結(jié)果:

HASONEFILTER 計(jì)算結(jié)果

與HASONEVALUE結(jié)果相比,HASONEFILTER計(jì)算結(jié)果并無(wú)不同,但是,二者是有區(qū)別的。

HASONEVALUE() 基于交叉篩選器發(fā)揮作用,而 HASONEFILTER() 通過(guò)直接篩選器發(fā)揮作用。

要想看出二者區(qū)別,只需再添加一個(gè)切片器。

情況1
情況2

對(duì)于情況1,篩選結(jié)果有多條記錄,總計(jì)行結(jié)果都為FALSE,而對(duì)于情況2,篩選結(jié)果僅有1條記錄,HASONEFILTER結(jié)果為FALSE,而HASONEVALUE結(jié)果卻變成了TRUE,顯然,這種情況下應(yīng)當(dāng)使用HASONEFILTER函數(shù)。

3.RELATED(<column>)

函數(shù)作用:在兩表建立正確的關(guān)聯(lián)關(guān)系的前提下,從另一個(gè)表返回相關(guān)值。

應(yīng)用場(chǎng)景:類似于Excel中的VLOOKUP的應(yīng)用場(chǎng)景,將維度表中的值匹配到事實(shí)表中。

示例:已知兩表:‘銷售記錄’和‘維度表’,關(guān)聯(lián)關(guān)系:‘銷售記錄’.[銷售城市]=‘維度表’.[銷售城市],要使‘銷售記錄’表新增一列,顯示對(duì)應(yīng)的負(fù)責(zé)人。

表1-銷售記錄
表2-維度表
兩表關(guān)聯(lián)關(guān)系

對(duì)銷售記錄表新建列:

相關(guān)負(fù)責(zé)人 = RELATED('維度表'[負(fù)責(zé)人])

得到結(jié)果:

RELATED函數(shù)計(jì)算結(jié)果

4.RELATEDTABLE(<tableName>)

函數(shù)作用:RELATED(<column>)函數(shù)類似,區(qū)別在于RELATED(<column>)函數(shù)參數(shù)是一列,返回的是一個(gè)計(jì)算列,而RELATEDTABLE(<tableName>)參數(shù)是一個(gè)表,返回的是一個(gè)表。

應(yīng)用場(chǎng)景:與RELATED(<column>)相反,RELATEDTABLE(<tableName>)通常是將事實(shí)表中的值匹配到維度表中。

示例:還以上述案例為例,欲在維度表中得到每個(gè)負(fù)責(zé)人下面的總體銷量。

新建列:

總體銷量 = SUMX(RELATEDTABLE('銷售記錄'),'銷售記錄'[數(shù)量])

計(jì)算結(jié)果:

RELATEDTABLE計(jì)算結(jié)果

5.EARLIER(<column>, <number>)

函數(shù)作用:返回提及的列的外部計(jì)算傳遞中指定列的當(dāng)前值。

應(yīng)用場(chǎng)景:在想要使用某個(gè)值作為輸入并且基于該輸入進(jìn)行計(jì)算的嵌套計(jì)算中,EARLIER 會(huì)很有用。簡(jiǎn)單來(lái)說(shuō),EARLIER函數(shù)可以實(shí)現(xiàn)類似于循環(huán)計(jì)算的功能。

示例:排名計(jì)算。

以上述RELATEDTABLE計(jì)算結(jié)果為例,先已知各個(gè)負(fù)責(zé)人的總體銷量,欲對(duì)銷量進(jìn)行排名,就可以使用EARLIER函數(shù)。

新建列:

排名 = COUNTROWS(FILTER('維度表','維度表'[總體銷量]>EARLIER('維度表'[總體銷量])))+1

排名計(jì)算結(jié)果
最后編輯于
?著作權(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)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

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

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