博客:www.jiaopengzi.com

焦棚子的文章目录

请点击下载附件

一、背景

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

如下《效果图》

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

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

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


效果图

再来看看动态效果。

[video width="1476" height="968" mp4="https://jiaopengzi.com/wp-content/uploads/2020/03/128_2.mp4"][/video]

结果动图

二、数据源


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 焦棚子

焦棚子的文章目录

128_Power BI父级排名TOPN子级动态展示的更多相关文章

  1. ThinkPHP 关联模型中查询某条记录的父级(非查询子级)

    数据表 id      cat_name      cat_pid 76     手机.数码     0 84     手机配件        76 86     蓝牙耳机        84 从属关 ...

  2. SQL根据指定节点ID获取所有父级节点和子级节点

    --根据指定节点ID获取所有子节点-- WITH TEMP AS ( SELECT * FROM table_name WHERE Id=' --表的主键ID UNION ALL SELECT T0. ...

  3. SQL根据指定节点ID获取所有父级节点和子级节点(转载)

    --根据指定节点ID获取所有子节点-- WITH TEMP AS ( ' --表的主键ID UNION ALL SELECT T0.* FROM TEMP,table_name T0 WHERE TE ...

  4. 让一个父级div根据子级div高度而自适应高度

    需求是点击上传的时候进行子级div高度不定,相对来说父级div高度也不能固定,把元素都设置成普通标准流,然后样式可以使用margin内边距或者padding外边距来进行调节 放上代码供参考: .opu ...

  5. jquery获取父,同,子级元素

    一.获取父级元素 1. parent([expr]): 获取指定元素的所有父级元素 <div id="par_div"><a id="href_fir& ...

  6. 【idea】idea重新打包依赖了父级项目的子级项目,父级项目代码改变,但是子级项目打包依旧是老的代码 问题解决

    最简单的方法: 就是单独打包父级项目,然后替换本地maven仓库中的父级项目的jar,然后重新打包子级项目,就可以了.

  7. MySQL通过自定义函数实现递归查询父级ID或者子级ID

    背 景: 在MySQL中如果是有限的层次,比如我们事先如果可以确定这个树的最大深度, 那么所有节点为根的树的深度均不会超过树的最大深度,则我们可以直接通过left join来实现. 但很多时候我们是无 ...

  8. js和jquery获取父级元素、子级元素、兄弟元素的方法

    最近工作中总遇到取各种父啊子啊兄弟姐妹啊,每次都得查,这次整理个全乎的~ [js的获取方式] function dom(){      var a = document.getElementByIdx ...

  9. 转载:js和jquery获取父级元素、子级元素、兄弟元素的方法

    转载网址: 先说一下JS的获取方法,其要比JQUERY的方法麻烦很多,后面以JQUERY的方法作对比. JS的方法会比JQUERY麻烦很多,主要则是因为FF浏览器,FF浏览器会把你的换行也当最DOM元 ...

随机推荐

  1. 深入理解 flex-grow & flex-shrink & flex-basis

    前言 flex 有三个属性值,分别是 flex-grow, flex-shrink, flex-basis,默认值是 0 1 auto. 发现网上详细介绍他们的文章比较少, 今天就详细说说他们,先一个 ...

  2. Javascript中数组的判断方法

    摘要: 1.数组检测的方法: 1) typeof . 2) instanceof . 3) constructor . 4) Object.prototype.toString. 5) Array.i ...

  3. nodejs制作爬虫程序

    在nodejs中,可以通过不断对服务器进行请求,以及本身的fs  =>filesystem 模块和clientRequest模块对网站的资源进行怕取,目前只做到了对图片的趴取!视频文件格式各异, ...

  4. Struts2-EL表达式为什么能获取值栈数据

    1.EL表达式能获取域对象值 2.向域对象里面放值使用setAttribute方法,获取使用getAttribute方法 3.底层增强request对象里面的方法getAttribute方法 (1)首 ...

  5. Struts2-day2总结

    一.结果页面配置 1.全局结果页面 2.局部结果页面 ****注:如果同时配置了全局页面和局部页面配置,那么最终将以局部为准 result标签当中的type属性 默认值:dispatcher做转发 r ...

  6. intel 82599网卡(ixgbe系列)术语表

    Intel® 82599 10 GbE Controller Datasheet 15.0 Glossary and Acronyms 术语表 缩写 英文解释 中文解释 1 KB A value of ...

  7. linux中sort、uniq、cut、tr、wc命令的使用

    文本处理命令 1.sort命令 使用场景 : 用于将文件内容加以排序(可以和cat一起用) 参数 作用 -n 依照数值的大小排序 -r 以相反的顺序来排序(默认只比较第一个数,-rn是按所有数值比较) ...

  8. 以ARM和RISC-V为内核的单片机写寄存器

    我以为这是个很简单的问题,没想到还有一些初学者不会.可能他们也是跟我一样是直接学的如何操作单片机并没有学微机原理么. ARM和RISC-V的机器的系统架构都是哈佛结构的,意思是程序存储器.数据存储器和 ...

  9. Python 读取UCI iris数据集分析、numpy基础学习

    python基础.numpy使用.io读取数据集.数据处理转换与简单分析.读取UCI iris数据集中鸢尾花的萼片.花瓣长度数据,进行数据清理,去重,排序,并求出和.累积和.均值.标准差.方差.最大值 ...

  10. Educational Codeforces Round 121 (Rated for Div. 2)——A - Equidistant Letters

    A - Equidistant Letters 题源:https://codeforces.com/contest/1626/problem/A 今天上午VP了这场CF,很遗憾的是一道题也没写出来,原 ...