这里返回了 TOP 4 的元素,公式如下:
代码语言:javascript复制Info = CONCATENATEX( TOPN( 4 , Data , [Value] ) , [Item] , "," )
仔细观察下,问题来了:
E D C A 并不是按照元素大小排列的,因为,原始数据如下:
返回的元素是按照原始数据构成排列的。
我们希望按照元素大小排列怎么办呢?下面给出终极解法:
对应的 DAX 公式如下:
代码语言:javascript复制Info.ByOrder =
VAR vTopN = 4
VAR vData = TOPN( vTopN , Data , [Value] )
VAR vDataWithRank = ADDCOLUMNS( vData , "Rank" , RANKX( vData , [Value] , [Value] ) )
RETURN
CONCATENATEX(
GENERATESERIES( 1 , vTopN ) ,
SELECTCOLUMNS( FILTER( vDataWithRank , [Rank] = EARLIER( [Value] ) ) , "Item" , [Item] ) ,
","
)
其中,值得注意的是,先加序号,再通过序号列反向查找元素后给出文本。
在订阅了BI佐罗讲授的《BI真经》之《BI进行时》课程区,可以下载本文案例,还可以观看视频讲解。