焦棚子的文章目录文章源自焦棚子-https://jiaopengzi.com/493.html
请在文末下载附件
文章源自焦棚子-https://jiaopengzi.com/493.html
一、背景
前些天在和朋友交流Power BI中有这样一个需求,按照父级排名后,需要显示出父级TOPN的子级明细。文章源自焦棚子-https://jiaopengzi.com/493.html
如下《效果图》文章源自焦棚子-https://jiaopengzi.com/493.html
1、圆环图按照父级排名第一名:E,第二名:A,第三名:C;文章源自焦棚子-https://jiaopengzi.com/493.html
2、依次显示出E、A、C的二级明细;文章源自焦棚子-https://jiaopengzi.com/493.html
3、需要图表标题动态变化。文章源自焦棚子-https://jiaopengzi.com/493.html
再来看看效果。文章源自焦棚子-https://jiaopengzi.com/493.html
文章源自焦棚子-https://jiaopengzi.com/493.html
文章源自焦棚子-https://jiaopengzi.com/493.html
二、数据源
1、说明:文章源自焦棚子-https://jiaopengzi.com/493.html
A、data中的一级即为父级,二级即为子级;文章源自焦棚子-https://jiaopengzi.com/493.html
B、data是pq模拟随机数,方便刷新观看;文章源自焦棚子-https://jiaopengzi.com/493.html
C、拿到附件后数据会和文章中不一样,这是正常的。文章源自焦棚子-https://jiaopengzi.com/493.html
2、pq代码文章源自焦棚子-https://jiaopengzi.com/493.html
//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文章源自焦棚子-https://jiaopengzi.com/493.html
total = SUM(data[value])
2、一级排名TOP1需显示的度量值,TOP2、TOP3同理。文章源自焦棚子-https://jiaopengzi.com/493.html
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同理。文章源自焦棚子-https://jiaopengzi.com/493.html
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)
说明:文章源自焦棚子-https://jiaopengzi.com/493.html
A、如下图《并列排名》中的TOP3,图表标题显示为:TOP3:C&D;文章源自焦棚子-https://jiaopengzi.com/493.html
B、在一级排名中C和D是并列第3名;所以需要CONCATENATEX 把第3、4、5参数用上(1-5参数分别:表,表达式,分隔符,排序列,正序倒序)。文章源自焦棚子-https://jiaopengzi.com/493.html
C、如果数据中不存在并列排名的话还可以使用TOPN 来处理,在这里就不展示了,拿到附件可以看到。文章源自焦棚子-https://jiaopengzi.com/493.html
四、总结
1、还是那句话,业务需求转换为DAX思想很重要;文章源自焦棚子-https://jiaopengzi.com/493.html
2、本文中没有特别难点,需要注意的是RANKX 的使用,案例中写了关于RANKX 第三参数使用的对比,拿到附件即可看到;文章源自焦棚子-https://jiaopengzi.com/493.html
3、CONCATENATEX 处理并列排名的问题。文章源自焦棚子-https://jiaopengzi.com/493.html
文章源自焦棚子-https://jiaopengzi.com/493.html
by 焦棚子文章源自焦棚子-https://jiaopengzi.com/493.html
焦棚子的文章目录文章源自焦棚子-https://jiaopengzi.com/493.html
请点击【立即购买】或者【升级VIP】获得案例附件。文章源自焦棚子-https://jiaopengzi.com/493.html
文章源自焦棚子-https://jiaopengzi.com/493.html
评论