powerbi判断父级是否有子集

阅读: 评论:0

powerbi判断父级是否有子集

powerbi判断父级是否有子集

一、背景

前些天在和朋友交流Power BI中有这样一个需求,按照父级排名后,需要显示出父级TOPN的子级明细。

如下《效果图》

1、圆环图按照父级排名第一名:E,第二名:A,第三名:C;

2、依次显示出E、A、C的二级明细;

3、需要图表标题动态变化。效果图

再来看看效果gif。结果动图

二、数据源data

1、说明:

A、data中的一级即为父级,二级即为子级;

B、data是pq模拟随机数,方便刷新观看;

C、拿到附件后数据会和文章中不一样,这是正常的。pq随机数

2、pq代码

//pq模拟25行随机数

let

data = #table(

type table [

一级=text

,二级=text

,value=Int64.Type

]

,List.Transform(

{1..25}

,each

{

{"A".."E"}{Number.Mod(_-1,5)}

,"F"&Text.From(_)

,Number.Round(Number.RandomBetween(1,25),0)

}

)

)

in

data

三、上DAX

1、基础度量total

total = SUM(data[value])

2、一级排名TOP1需显示的度量,TOP2、TOP3同理。

N_rankx_1 =

VAR N=1

VAR T1=SUMMARIZE(ALL(data),data[一级],"@S",[total])//构建排序表

VAR T2=SUMMARIZE(ALL(data),data[一级],"@R",RANKX(T1,[@S],[total],DESC,Dense))

VAR T3=FILTER(T2,[@R]=N)

RETURN

CALCULATE('data'[total],T3)

3、动态显示TOP1的标题的度量,TOP2、TOP3同理。

Name_TOP1 =

VAR N=1

VAR T1=SUMMARIZE(ALL(data),data[一级],"@S",[total])//构建排序表

VAR T2=SUMMARIZE(ALL(data),data[一级],"@R",RANKX(T1,[@S],[total],DESC,Dense))

VAR T3=FILTER(T2,[@R]=N)

RETURN

"TOP"&N&":"&CONCATENATEX(T3,[一级],"&",[一级],ASC)

说明:

A、如下图《并列排名》中的TOP3,图表标题显示为:TOP3:C&D;

B、在一级排名中C和D是并列第3名;所以需要CONCATENATEX把第3、4、5参数用上(1-5参数分别:表,表达式,分隔符,排序列,正序倒序)。

C、如果数据中不存在并列排名的话还可以使用TOPN来处理,在这里就不展示了,拿到附件可以看到。并列排名

四、总结

1、还是那句话,业务需求转换为DAX思想很重要;

2、本文中没有特别难点,需要注意的是RANKX的使用,案例中写了关于RANKX第三参数使用的对比,拿到附件即可看到;

3、CONCATENATEX处理并列排名的问题。

by 焦棚子

本文发布于:2024-02-01 12:15:09,感谢您对本站的认可!

本文链接:https://www.4u4v.net/it/170676091136524.html

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。

标签:子集   powerbi
留言与评论(共有 0 条评论)
   
验证码:

Copyright ©2019-2022 Comsenz Inc.Powered by ©

网站地图1 网站地图2 网站地图3 网站地图4 网站地图5 网站地图6 网站地图7 网站地图8 网站地图9 网站地图10 网站地图11 网站地图12 网站地图13 网站地图14 网站地图15 网站地图16 网站地图17 网站地图18 网站地图19 网站地图20 网站地图21 网站地图22/a> 网站地图23