焦棚子的文章目录
点击下载附件
每次写rank的时候,有了排名就可以了,排名1,2,3,4,5这样不是很清晰吗?但是中国式报表的老板们说你能不能在排名后面加一个总排名数呢,就像1/5,2/5,3/5,4/5,5/5。谁叫是老板呢,于是就有了报表加工出来后各种组合,比如vlookup。既然都用了dax,为什么不能dax呢。
那就dax写一写咯,
total:=SUM(data[value]) R1:=IF ( HASONEVALUE ( data[部门] ), VAR P = SUMMARIZE ( ALL ( ‘data’ ), ‘data’[部门], “P”, ‘data’[total] ) RETURN RANKX ( P, ‘data’[total], ‘data’[total], DESC, DENSE ), BLANK () )
R1/M:=IF ( HASONEVALUE ( data[部门] ), VAR P = SUMMARIZE ( ALL ( 'data' ), 'data'[部门], "P", 'data'[total] ) VAR M = CALCULATE ( DISTINCTCOUNT ( data[部门] ), ALL ( data[部门] ) ) VAR R = RANKX ( P, 'data'[total], 'data'[total], DESC, DENSE ) RETURN CONCATENATE ( R, "/" & M ), BLANK () )
R2:=IF ( HASONEVALUE ( data[部门] ), VAR P = SUMMARIZE ( ALLSELECTED ( 'data' ), 'data'[部门], "P", 'data'[total] ) RETURN RANKX ( P, 'data'[total], 'data'[total], DESC, DENSE ), BLANK () )
R2/M:=IF ( HASONEVALUE ( data[部门] ), VAR P = SUMMARIZE ( ALLSELECTED ( 'data' ), 'data'[部门], "P", 'data'[total] ) VAR M = CALCULATE ( DISTINCTCOUNT ( data[部门] ), ALLSELECTED ( data[部门] ) ) VAR R = RANKX ( P, 'data'[total], 'data'[total], DESC, DENSE ) RETURN CONCATENATE ( R, "/" & M ), BLANK () )
请注意观察R1和R2的变化,其实就是all和allselected的变化。
在不同的上下文的筛选下,会得到不同的结果,all则排名始终在所有排名中作排名,allselected则是选择的排名中排名。
关于allselected请移步官方文档:
ALLSELECTED 函数 (DAX)
by 焦棚子
焦棚子的文章目录