1.HASONEVALUE(<columnName>)
函數(shù)作用:當(dāng)已將 columnName 的上下文篩選為只剩下一個(gè)非重復(fù)值時(shí),將返回 TRUE。 否則為 FALSE。
示例:
新建度量值:
HASONEVALUE?= 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é)果不顯示,不會(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é)果:

與HASONEVALUE結(jié)果相比,HASONEFILTER計(jì)算結(jié)果并無(wú)不同,但是,二者是有區(qū)別的。
HASONEVALUE() 基于交叉篩選器發(fā)揮作用,而 HASONEFILTER() 通過(guò)直接篩選器發(fā)揮作用。
要想看出二者區(qū)別,只需再添加一個(gè)切片器。


對(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é)人。



對(duì)銷售記錄表新建列:
相關(guān)負(fù)責(zé)人 = RELATED('維度表'[負(fù)責(zé)人])
得到結(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é)果:

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
