178_技巧_Power BI 动态排名多项展示

news2024/11/16 9:56:58

178_技巧_Power BI 动态排名多项展示

一、背景

在 Power BI 中做排名矩阵时,我们经常遇到同一维度下,多项展示排名的问题。类似这样的排名矩阵,排名的名次不会太多,但是同一维度下会有多项同时展示排名,并且还要满足切片时能动态的变化。

Power BI 公共 web 效果:https://demo.jiaopengzi.com/pbi/178-full.html

先来看下示例效果

图-01

一般情况下我们会使用右边的简单文字版排名。本案例我们同时补充一个信息更加密集的SVG的效果。

矩阵里面的元素解析如下:

图-02

二、模型和DAX

这里的示例模型都是我们常用的模型( https://jiaopengzi.com/1435.html )

表间关系

图-03

因为我们需要多项展示同质排名效果,所有加入了辅助的计算表:T08_大区_排名辅助

辅助表的ID则为排名提供了外部的筛选上下文条件,实现排名的复用。

T08_大区_排名辅助 = 
DATATABLE(
    "ID",INTEGER,
    "说明",STRING,
    {
        {1,"大区内销售额第1"},
        {2,"大区内销售额第2"},
        {3,"大区内销售额第3"},
        {4,"大区内销售额第4"},
        {5,"大区内销售额第5"},
        {6,"大区内销售额第6"},
        {7,"大区内销售额第7"}
    }
)

度量值DAX

基础度量值:01_销售金额

01_销售金额 = 
SUM ( 'T05_订单子表'[F_06_产品销售金额] )

实现简单文字版的度量值:02_大区内排名

注意:这里使用了 2023 年 4 月版本新函数 RANK, 需要升级到最新版才能体验。

02_大区内排名 = 
VAR DQ =
    SELECTEDVALUE ( 'D00_大区表'[F_01_大区ID] )
VAR tbaleSale =
    ADDCOLUMNS ( ALL ( 'D01_省份表' ), "@Sale", [01_销售金额] )
VAR tbaleRank =
    ADDCOLUMNS (
        tbaleSale,
        "@RankAll", RANK ( DENSE, tbaleSale, ORDERBY ( [@Sale], DESC ) )
    )
VAR tbaleDQ =
    FILTER ( tbaleRank, [F_01_大区ID] = DQ )
VAR tbaleRankDQ =
    ADDCOLUMNS (
        tbaleDQ,
        "@RankDQ", RANK ( DENSE, tbaleDQ, ORDERBY ( [@Sale], DESC ) )
    )
VAR N =
    SUM ( 'T08_大区_排名辅助'[ID] )
VAR tbaleRankProvince =
    FILTER ( tbaleRankDQ, [@RankDQ] = N )
VAR ProvinceName =
    MAXX ( tbaleRankProvince, [F_05_省简称2] )
RETURN
    ProvinceName

图-04

实现信息更加密集的SVG度量值:03_大区内排名_SVG

03_大区内排名_SVG = 
VAR DQ =
    SELECTEDVALUE ( 'D00_大区表'[F_01_大区ID] )
VAR tbaleSale =
    ADDCOLUMNS ( ALL ( 'D01_省份表' ), "@Sale", [01_销售金额] )
VAR tbaleRank =
    ADDCOLUMNS (
        tbaleSale,
        "@RankAll", RANK ( DENSE, tbaleSale, ORDERBY ( [@Sale], DESC ) )
    )
VAR tbaleDQ =
    FILTER ( tbaleRank, [F_01_大区ID] = DQ )
VAR tbaleRankDQ =
    ADDCOLUMNS (
        tbaleDQ,
        "@RankDQ", RANK ( DENSE, tbaleDQ, ORDERBY ( [@Sale], DESC ) )
    )
VAR N =
    SUM ( 'T08_大区_排名辅助'[ID] )
VAR tbaleRankProvince =
    FILTER ( tbaleRankDQ, [@RankDQ] = N )
VAR rankAll =
    MAXX ( tbaleRankProvince, [@RankAll] )
VAR rankAllTotal =
    IF ( rankAll, rankAll & "/" & COUNTROWS ( tbaleSale ), BLANK () )/*构造排名*/
VAR ProvinceName =
    MAXX ( tbaleRankProvince, [F_05_省简称2] )
VAR ProvinceSaleMax =
    MAXX ( tbaleSale, [@Sale] )
VAR ProvinceSale =
    MAXX ( tbaleRankProvince, [@Sale] )
VAR ProvinceSaleFormat =
    FORMAT ( ProvinceSale, "#,0" )
VAR ProvinceSalePercentFormat =
    FORMAT ( DIVIDE ( ProvinceSale, ProvinceSaleMax, BLANK () ), "0.0%" ) /*当前省份销售额占比最大省份销售额的百分比,即进度条*/
VAR SVG_start_image = "data:image/svg+xml;utf8," /*SVG 图像类型头部。*/
VAR SVG_start_html = "<svg id='jiaopengzi' version='1.1' baseProfile='full' width='80' height='50' xmlns='http://www.w3.org/2000/svg'>" /*SVG html类型头部。*/
VAR SVG_content = "
    <rect width='100%' height='100%' fill='rgba(0,0,0,0)' id='bg' rx='4%' ry='4%' />
    <text x='4%' y='20%' font-size='10' text-anchor='left' font-weight='normal' fill='rgba(30,40,88,0.6)' id='rank'>" & rankAllTotal & "</text>
    <text x='50%' y='55%' font-size='16' text-anchor='middle' font-weight='bold' fill='rgba(30,40,88,1)' id='name'>" & ProvinceName & "</text>
    <text x='50%' y='88%' font-size='10' text-anchor='middle' font-weight='normal' fill='rgba(30,40,88,0.6)' id='sale'>" & ProvinceSaleFormat & "</text>
    <rect y='92%' width='100%' height='6%' fill='rgba(30,40,88,0.2)' id='progressAll' rx='1%' ry='1%' />
    <rect y='92%' width='" & ProvinceSalePercentFormat & "' height='6%' fill='rgba(200,152,40,1)' id='progressAc' rx='1%' ry='1%' />
" /*SVG 内容构造。*/
VAR SVG_end = "</svg>"/*SVG 结束标签。*/
VAR SVG_html = SVG_start_html & SVG_content & SVG_end
VAR SVG_image = SVG_start_image & SVG_html
VAR RESULT =
    IF ( ProvinceSale, SVG_image, BLANK () )
RETURN
    RESULT

图-05

三、总结

  1. 类似这样多项排名共同展示的时候,使用矩阵比较好的展示;因为排名都是同质的,使用辅助表提前准备好排名,把排名放到行或列上,实现排名的复用。

  2. SVG版的内容会更加密集,可以更加自由的展示内容信息。

  3. 值得注意的是矩阵的每个格子的图像大小的宽高像素都可以达到 512像素,512像素*512像素的面积已经很大了,默认情况 Power BI 报告标准页面也就 1280像素*720像素。如此大的面积也就有了更多想象的空间。

    图-06

附件下载

https://jiaopengzi.com/2993.html


请关注

全网同名搜索 焦棚子

如果对你有帮助,请 点赞关注三连 支持一下,这是我们更新的动力。

by 焦棚子

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/509856.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

树结构 数据可视化

这边有个 树结构数据&#xff0c;想做一个可视化展示的需求&#xff1b;首先想到的是 python pyecharts, 一直传说 python 做数据可视化 一把梭&#xff1b; pyecharts 在线实例展示 pyecharts 官网 当看到上面的 示例 后&#xff0c;这不就我想找的嘛&#xff01;哈哈 随后 找…

web前端 --- CSS(02) -- 样式修饰

CSS本质是用来修饰HTML标签的 常用CSS属性 &#xff08;1&#xff09;字体及文本属性 文字相关效果 属性含义font字体及其属性&#xff08;复合属性&#xff0c;不建议直接使用&#xff09;font-family设置文本字体&#xff0c;电脑中存在字体font-size字体大小font-weight字…

PPT如何使用基础功能?

文章目录 0.引言1.菜单栏 0.引言 因科研办公等多场景需要进行汇报展示&#xff0c;笔者对PPT进行了学习&#xff0c;通过《PPT 2016高效办公实战应用与技巧大全666招》及其配套素材结合网上相关资料进行学习笔记总结&#xff0c;本文对软件界面基础功能进行阐述。    1.菜单…

[光源频闪] Basler相机光源频闪设置操作说明

&#x1f4e2;博客主页&#xff1a;https://loewen.blog.csdn.net&#x1f4e2;欢迎点赞 &#x1f44d; 收藏 ⭐留言 &#x1f4dd; 如有错误敬请指正&#xff01;&#x1f4e2;本文由 丶布布原创&#xff0c;首发于 CSDN&#xff0c;转载注明出处&#x1f649;&#x1f4e2;现…

2019年下半年软件设计师下午试题

【试题四】0-1背包问题 阅读下列说明和C代码&#xff0c;回答问题1至问题3。 【说明】 0-1背包问题定义为:给定i个物品的价值v[1…i]、小重量w[1...i]和背包容量T&#xff0c;每个物品装到背包里或者不装到背包里。求最优的装包方案&#xff0c;使得所得到的价值最大。 0-1…

程序进制换算

进制数介绍 一、进制介绍 二进制 &#xff1a;0或1&#xff0c;满2进1&#xff0c;以0B或者0b开头&#xff0c;如 0b1101 八进制&#xff1a;0-7&#xff0c;满8进1&#xff0c;&#xff0c;以0开头&#xff0c;如0234 十进制&#xff1a;0-9&#xff0c;满10进1&#xff0c;…

MVC分部视图的使用:Html.Partial/RenderPartial,Html.Action/RenderAction,RenderPage

ASP.NET MVC 里的部分视图&#xff0c;相当于 Web Form 里的 User Control。我们的页面往往会有许多重用的地方&#xff0c;可以进行封装重用。 使用部分视图有以下优点&#xff1a; 1. 可以简写代码。 2. 页面代码更加清晰、更好维护。 在视图里有多种方法可以 加载部分视图&a…

运营-10.算法分发

定义&#xff1a; 通过对信息的自动过滤和分流&#xff0c;从而实现对不同用户的个性化推荐 算法分发三要素 算法的前提 算法分发的前提&#xff1a;了解用户的喜好&#xff0c;给用户做画像。 用户画像是根据用户 基本属性 、 社会属性 、 行为属性 和 消费属性 等真实数 据信…

流式作业如何保证真正的精准一次消费

checkpoint 两阶段提交和WAL 真的是神&#xff01;&#xff01;&#xff01;&#xff01; 彻底解决了重复消费问题!! 状态一致性 当在分布式系统中引入状态时&#xff0c;自然也引入了一致性问题。一致性实际上是"正确性级别"的另一种说法&#xff0c;也就是说在成功…

【美化命令行教程】

目录 下载字体打开Teminal设置 美化powershell注意&#xff1a;主题路径powershell 自动提示看效果 美化git看效果 下载字体 防止乱码一定要下载下面的字体并安装 下载作者推荐MesloLGM NF字体&#xff0c;点此下载 打开Teminal设置 修改Teminal配置文件json "font&q…

数组存储与指针学习笔记(二)枚举类型、常量与变量

嵌入式C语言学习进阶系列文章 GUN C编译器拓展语法学习笔记(一&#xff09;GNU C特殊语法部分详解 GUN C编译器拓展语法学习笔记(二&#xff09;属性声明 GUN C编译器拓展语法学习笔记(三&#xff09;内联函数、内建函数与可变参数宏 数组存储与指针学习笔记(一&#xff09;数…

听劝 千万不要盲目自学网络安全

听劝 不要什么盲目的学网络安全。 一&#xff0c;怎么入门&#xff1f; 1、Web 安全相关概念&#xff08;2 周&#xff09; 了解网络安全相关法律法规 熟悉基本概念&#xff08;SQL 注入、上传、XSS、CSRF、一句话木马等&#xff09;。 通过关键字&#xff08;SQL 注入、…

人工智能简历-计算机视觉简历

前言 很多粉丝私我&#xff0c;说面试的事情。 这玩意我不理解&#xff0c;因为如果是计算机科班出身&#xff0c;计算机行业我觉得闭着眼睛找。 简历这玩意我真不会。。。 分享2个东西给大家。 第一个是 出国/在国外找实习/外企的英文简历。 比较流行的是一页。 第二个…

高速动车组全谱系图解

很多人认为中国高速铁路起源于2004年以来的技术引进&#xff0c;却不知道中国第一条高铁是1999年开工、2003年建成的秦沈客专&#xff1b;动车组的研制则更早&#xff0c;“蓝箭”、“中原之星”、“中华之星”都是鼎鼎大名。毫无疑问&#xff0c;2004年以来的引进技术&#xf…

SPI配置

I/O配置 主输出、从输入&#xff08;MOSI&#xff09; 主出从入&#xff08;MOSI &#xff09;引脚是主器件的输出和从器件的输入&#xff0c;用于主器件到从器件的串行数据传输。当SPI 配置为主器件时&#xff0c;该引脚为输出&#xff0c;当 SPI 配置为从器件时&#xff0c;该…

【原创】免费,不限量,使用OpenAI ChatGPT方法大揭秘

文章目录 微软的Edge浏览器集成WeTab插件就可以免费使用ChatGPT1、安装最新版的Edge浏览器2、选中浏览器的配置中的扩展3、在启动新页时&#xff0c;就可以看到chatGPT了4、这就可以免费使用chatGPT啦 微软的Edge浏览器集成WeTab插件就可以免费使用ChatGPT 1、安装最新版的Edg…

零信任网络安全

什么是零信任 零信任是一种安全思维方式&#xff0c;表示组织不应自动信任其边界内外的任何内容。在授予访问权限之前&#xff0c;必须验证任何尝试连接的实体。零信任安全策略围绕最低特权访问控制和严格的用户身份验证&#xff0c;因为假设不信任任何人。 若要实现这些原则…

4年外包终于上岸,我只能说别去....

我大学学的是计算机专业&#xff0c;毕业的时候&#xff0c;对于找工作比较迷茫&#xff0c;也不知道当时怎么想的&#xff0c;一头就扎进了一家外包公司&#xff0c;一干就是4年。现在终于跳槽到了互联网公司了&#xff0c;我想说的是&#xff0c;但凡有点机会&#xff0c;千万…

你不知道的自动化?使用自动化测试在项目中创造高业务价值...

目录&#xff1a;导读 前言一、Python编程入门到精通二、接口自动化项目实战三、Web自动化项目实战四、App自动化项目实战五、一线大厂简历六、测试开发DevOps体系七、常用自动化测试工具八、JMeter性能测试九、总结&#xff08;尾部小惊喜&#xff09; 前言 脱离数据支撑谈价…

WPF中嵌入web网页控件 WebBrowser

1 WebBrowser特点 <font colorblue>WebBrowser控件内部使用IE的引擎&#xff0c;因此使用WebBrowser我们必须安装IE浏览器。 WebBrowser使用的是IE内核&#xff0c;许多H5新特性都不支持&#xff0c;然后使用谷歌内核和火狐内核会使软件的体积增加至几十MB。 <font c…