隐藏

power bi排名函数

发布:2024/9/25 20:38:22作者:管理员 来源:本站 浏览次数:45

1. Rankx函数


   rankx函数为的每一行计值表达式并得到一个值列表,在当前筛选上下文中计值,将得到的结果与列表中的值进行比较,根据排名规则和的设置,返回最终排名

   格式:RankX(<table>,<expression>,[<value>,[<order>,[<ties>])


参数 属性 描述

table 表或返回表的表达式,即可以是直接的表,也可是用函数生成的表

expression 聚合表达式,或写好的度量值

value 可选 可以是聚合表达式,也可以是一个直接的数值

order 可选 升降排序,可以是0或1;也可以是asc或desc

ties 可选 处理相同排名的依据,skip(国际排序)代表稀疏排名,下一名的排序等于之前左右排序的数量+1;dense(中国式排序)代表稠密排名,只累加排序,不考虑数量


   例子


   总金额 = sum('销售表'[销售金额])

   排名1 = rankx(all('销售表'),[总金额])

   -- if+HASONEVALUE 去除总计

   排名2 = if(

    HASONEVALUE('销售表'[商品编码]),

    RANKX(all('销售表'),[总金额])) -- 去除总计

   -- 去除空值的排名

   排名3 = if(

    and(HASONEVALUE('销售表'[商品编码]),[总金额]>0),

    RANKX(

    filter(

    all('销售表'),[总金额]>0),

    [总金额],

    ,

    1)

    )

     


   

   对比结果

   

   例二:级别排名


   品种销售排名 = rankx(

   filter('案例2','案例2'[品种]=EARLIER('案例2'[品种])),

   '案例2'[销售金额])

     



2. topn函数


   返回满足条件的前n行记录

   返回的不是值,是前你行的表

   格式:topn(n值,表名,[表达式],[顺序可选项])


参数 描述

参数1 需要返回的行数

参数2 用来返回行记录的表表达式

参数3 用来排序的表达式

参数4 排序方式0/false/desc 降序;1/true/asc 升序


   例一(新建列)


   前2名的销售金额之和 = sumx(TOPN(2,'TOPN','TOPN'[销售金额],0),'TOPN'[销售金额])

     


   例二(新建表)


   前2名的销售金额 = TOPN(2,'TOPN','TOPN'[销售金额],0)

     


   例三(度量值)


   销售额 = sum('TOPN'[销售金额])

   销售量前3名之和 = CALCULATE([销售额],TOPN(3,all('TOPN'),[销售金额],0))

   销售量前3名店铺之和 = CALCULATE([销售额],TOPN(3,all('TOPN'[店号]),[销售额],0))

   前3名店铺销售对比 = divide([销售量前3名店铺之和],CALCULATE([销售额],all('TOPN'[店号])))

     



3. ConcatEnatex函数


   格式:ConcatEnatex(参数1,参数2,参数3,参数4,参数5)


参数 参数名称 属性 描述

1 table 用于表达式每行计值的表,即对那张表进行排名

2 expression 用于逐行计值的表达式,即显示来自哪里

3 delimiter 可选 连接表达式结果的连接符

4 orderby_expression 可选,可重复 排序使用的表达式,排序

5 order 可选,可重复 排序逻辑:0/false/desc-降序;1/true/asc-升序,


   例一


   度量值 = CONCATENATEX(values('CONCATENATEX'[人物]),'CONCATENATEX'[人物],",")

     


   例二


   -- 方式一

   流水 = CONCATENATEX(values('流水'[购物日期]),format('流水'[购物日期],"yyyy/mm/dd"),",")

   -- 方式二

   流水 = CONCATENATEX(RELATEDTABLE('流水'),format('流水'[购物日期],"yyyy/mm/dd"),",")