RANKX和TOPN
RANKX是排序函数:
RANKX(TABLE, MEASURE, , ASC/DESC, DENSE/SKIP)
第一个参数必填,TABLE,可以是表或者列,可以理解成排序的依据,通常会配合ALL/ALLSELECTED函数使用,比如ALL('TABLE')或者ALL('TABLE'[COLUMNA], 'TABLE'[COLUMNB])
第二个参数必填,算法,通常是一个聚合函数,这里建议先创建一个MEASURE,然后RANKX里面直接调用MEASURE,直接在第二个参数写聚合函数有的时候会出问题
第三个参数选填,算法,通常前两个参数就够了,这个参数可以不写内容
第四个参数选填,升序或者降序
第五个参数选填,DENSE并列之后累加(1,2,2,3,4),SKIP并列之后跳过(1,2,2,4,5)
RANKX函数可以这样理解:根据前两个参数生成一张表,然后用第二(三)个参数排序
举例:
加上筛选:

所以第一个参数可以根据实际需求,选择ALL或者ALLSELECTED
TOPN:
表函数,会返回一张TopN的表,通常可以配合聚合函数使用,也可以配合值参数,实现动态TopN
TOPN(N, TABLE, ORDER BY COLUMN 1, ASC/DESC 1, ......)
第一个参数N,就是TOPN的N,想求TOP几就写几
第二个参数TABLE,是取数据范围的表
第三个参数是用来排序的列
第四个参数是排序方式,升序或者降序
从第五个参数开始就是排序的列和排序方式循环,根据实际需求决定是否填写,可以理解成SQL语句中的 ORDER BY A DESC, B , C DESC这种
实现动态TopN:
新建值参数,数字类型,给一个默认值

新建DAX:
实现效果:



TopN 1是把Shee1整张表放进去,返回的上下文可以和CATEGORY对应上,能实现分组TopN,但是Total里面就是从整张表里面取了,说白了就是 A + B + C <> TOTAL
TopN 2只放进去两个列,出来的数字都是一样的,可以用来实现TopN占总数的比例

浙公网安备 33010602011771号