#Powerbi 10分钟,理解 Rankx 排名函数
一:本文思维导图及示例数据图
1.1思维导图
1.2 示例数据图

二:度量值示例
2.1 函数简介
RANKX 首先为的每一行计值表达式,将结果临时存储为一个值列表。然后在当前筛选上下文中计值,将得到的结果与列表中的值进行比较,根据排名规则和的设置,返回最终排名。
2.2 产品排名(稠密)度量值
这个公式使用RANKX函数计算每个产品的销售排名。它使用稠密排名,这意味着当有相同值时,排名将紧密排列。
- 第一个参数`ALL('销售模拟表'[产品])`是一个表,它定义了要进行排名的数据集。在这种情况下,我们使用`ALL`函数来移除任何筛选器,以便在整个`'销售模拟表'[产品]`列中计算排名。
- 第二个参数`[产品销量]`是一个表达式,它返回每行的产品销量。RANKX函数将使用这个表达式的值来计算排名。
- 第三个参数被省略了。这意味着RANKX函数将使用第二个参数`[产品销量]`的值作为要查找排名的值。
- 第四个参数`DESC`指定排名的顺序。在这种情况下,我们使用降序排名。
- 第五个参数`DENSE`定义了当有相同值时如何确定排名。在这种情况下,我们使用稠密排名。
整个公式被包含在一个`IF`函数中,它检查是否只选择了一个产品。如果只选择了一个产品,那么公式将返回该产品的排名。否则,整个公式的结果为空。
产品排名(稠密) =
IF (
HASONEVALUE ( '销售模拟表'[产品] ),
RANKX (
ALL ( '销售模拟表'[产品] ), ---第一参数,table,表或者返回表的表达式
[产品销量], ---第二参数,expression,沿着table每行计值的表达式
, ---value,标量值,指单一的数值,可以是数字、数量、文本、日期或者布尔值
DESC, ---排序依据,
DENSE ---处理同排名的依据,skip,稀疏排名,sense,稠密排名
)
)
2.3 产品排名(稀疏)(HASONEVALUE)
同上,只是这里没有选择 TIES 参数,所以默认为SKIP参数
产品排名(稀疏)(HASONEVALUE) =
IF (
HASONEVALUE ( '销售模拟表'[产品] ),
RANKX (
ALL ( '销售模拟表'[产品] ),
[产品销量],
,
DESC
)
)
2.4 产品排名(稀疏)(SELECTEDVALUE)
这个公式使用RANKX函数计算每个产品的销售排名。它使用跳过排名,这意味着当有相同值时,排名将跳过相同值的数量。
- 第一个参数
ALL('销售模拟表'[产品])是一个表,它定义了要进行排名的数据集。在这种情况下,我们使用ALL函数来移除任何筛选器,以便在整个'销售模拟表'[产品]列中计算排名。 - 第二个参数
[产品销量]是一个表达式,它返回每行的产品销量。RANKX函数将使用这个表达式的值来计算排名。 - 第三个参数被省略了。这意味着RANKX函数将使用第二个参数
[产品销量]的值作为要查找排名的值。 - 第四个参数
DESC指定排名的顺序。在这种情况下,我们使用降序排名。 - 第五个参数
SKIP定义了当有相同值时如何确定排名。在这种情况下,我们使用跳过排名。
整个公式被包含在一个IF函数中,它检查是否只选择了一个产品。如果只选择了一个产品,那么公式将返回该产品的排名。否则,整个公式的结果为空。
与我们上面的公式不同,这个公式使用SELECTEDVALUE函数来检查是否只选择了一个产品。如果只选择了一个产品,SELECTEDVALUE函数将返回该产品的值。否则,它将返回空值。
我们使用ISBLANK函数来检查SELECTEDVALUE函数的返回值是否为空。如果返回值为空,那么整个公式的结果也为空。否则,我们使用RANKX函数计算产品的排名。
产品排名(稀疏)(SELECTEDVALUE) =
IF (
ISBLANK (
SELECTEDVALUE ( '销售模拟表'[产品] )
),
BLANK (),
RANKX (
ALL ( '销售模拟表'[产品] ),
[产品销量],
,
DESC,
SKIP
)
)
2.5 可见排名
有时我需要只统计当前可见的产品排名,那么,只需要将上方的ALL更改为ALLSELECTED即可
产品排名(稀疏)_只统计可见排名 =
IF (
ISBLANK (
SELECTEDVALUE ( '销售模拟表'[产品] )
),
BLANK (),
RANKX (
ALLSELECTED ( '销售模拟表'[产品] ),
[产品销量],
,
DESC,
SKIP
)
)
比如,这里,我们只选择了A,B,C,F四个产品,那么排名逻辑就会只排名现在已经被选择的产品,而前面的度量值会按所有产品进行排名。

三:注意事项
不要忘记ALL函数以及第二参数CALCULATE。
其他注意事项,后续博主使用中如有问题,会单独开文罗列。
以上,如果本文有帮到你,希望点赞支持一下。感谢!
#Powerbi 10分钟,理解 Rankx 排名函数的更多相关文章
- [转帖]SQL Server 10分钟理解游标
SQL Server 10分钟理解游标 https://www.cnblogs.com/VicLiu/p/11671776.html 概述 游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合 ...
- 10分钟理解BFC原理
10 分钟理解 BFC 原理 一.常见定位方案 在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制元素的布局,有三种常见方案: 普通流 (normal flow) 在普通流中,元素按照 ...
- T-SQL查询进阶-10分钟理解游标
转:http://www.cnblogs.com/CareySon/archive/2011/11/01/2231381.html 概述 游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的 ...
- SQL Server 10分钟理解游标
概述 游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的.而游标打破了这一规则,游标使得我们思考方式变为逐行进行.对于类C的开发人员来着,这样的思考方式会更加舒服. 正常面向集合的思维方式 ...
- 10分钟理解JS引擎的执行机制
首先,请牢记2点: (1) JS是单线程语言 (2) JS的Event Loop是JS的执行机制.深入了解JS的执行,就等于深入了解JS里的event loop 1.灵魂三问 (1) JS为什么是单线 ...
- 10 分钟理解 BFC 原理
一.常见定位方案 在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制元素的布局,有三种常见方案: 普通流 (normal flow) 在普通流中,元素按照其在 HTML 中的先后位置至 ...
- 10分钟理解Android数据库的创建与使用(附具体解释和演示样例代码)
1.Android数据库简单介绍. Android系统的framework层集成了Sqlite3数据库.我们知道Sqlite3是一种轻量级的高效存储的数据库. Sqlite数据库具有以下长处: (1) ...
- 10分钟理解React生命周期
前言 学习React,生命周期很重要,我们了解完生命周期的各个组件,对写高性能组件会有很大的帮助. 一.简介 React /riˈækt/ 组件的生命周期指的是组件从创建到销毁过程中所经历的一系列方法 ...
- 对iOS后台模式最多10分钟运行时间的进一步理解
在app进入后台时,系统初始默认是只有10s的处理时间,但如果10s不够,我们可以主动申请,网上流传最多的一个说法是10分钟. 但这种说法有个前提: 那就是iOS7之前,是这样 但从iOS7开始,我们 ...
- 智能合约语言 Solidity 教程系列10 - 完全理解函数修改器
这是Solidity教程系列文章第10篇,带大家完全理解Solidity的函数修改器. Solidity系列完整的文章列表请查看分类-Solidity. 写在前面 Solidity 是以太坊智能合约编 ...
随机推荐
- Rust中的迭代器的使用:map转换、filter过滤、fold聚合、chain链接
什么是迭代器 Rust中的迭代器是一种强大的工具,它提供了一种灵活.通用的方法来遍历序列.迭代器是实现了Iterator trait的类型,并需要至少实现一个next函数,用于让迭代器指向下一个迭代对 ...
- .NET无侵入自动化探针原理和主流实现
前言 最近,我在微信公众号和博客园分享了一篇关于.NET微服务系统迁移至.NET 6.0的故事的文章,引起了许多读者的关注.其中,许多人对基于 OpenTelemetry .NET 的观测指标和无侵入 ...
- 深度学习--PyTorch定义Tensor以及索引和切片
深度学习--PyTorch定义Tensor 一.创建Tensor 1.1未初始化的方法 这些方法只是开辟了空间,所附的初始值(非常大,非常小,0),后面还需要我们进行数据的存入. torch.em ...
- 从原理聊JVM(一):染色标记和垃圾回收算法
作者:京东科技 康志兴 1 JVM运行时内存划分 1.1 运行时数据区域 • 方法区 属于共享内存区域,存储已被虚拟机加载的类信息.常量.静态变量.即时编译器编译后的代码等数据.运行时常量池,属于方法 ...
- Mastering Regular Expressions(精通正则表达式) 阅读笔记:前言
General Concept(一般概念) If you master the general concept of regular expressions, it's a short step to ...
- Java中数字相关的类有哪些?Nuber数字类和Math数学类详解
前言 我们在解决实际问题时,会经常对数字.日期和系统设置进行处理,比如在我们的代码中,经常会遇到一些数字&数学问题.随机数问题.日期问题和系统设置问题等. 为了解决这些问题,Java给我们提供 ...
- Hadoop运行集群搭建
Hadoop运行集群搭建 虚拟机环境准备 安装虚拟机及基本配置 IP地址192.168.10.100.主机名称hadoop100,内存4G.硬盘50G 测试下虚拟机联网情况 1 [root@hadoo ...
- springMVC中注解
其中常见注解: 1.@RequestMapping:用于请求url路径,可用于类和方法上,用于类上,则表示类中所有响应请求的方法都是以该路径作为父路径. 2.@RequestBody:注解实现接收 h ...
- Webpack5构建性能优化:构建耗时从150s到60s再到10s
作者:京东科技 牛志伟 近期对Webpack5构建性能进行了优化,构建耗时从150s到60s再到10s,下面详细讲解下优化过程. 优化前现状 1.历史项目基于Vue3 + Webpack5技术栈,其中 ...
- 2022-09-11:arr是一个可能包含重复元素的整数数组,我们将这个数组分割成几个“块”, 并将这些块分别进行排序。之后再连接起来,使得连接的结果和按升序排序后的原数组相同。 我们最多能将数组分成
2022-09-11:arr是一个可能包含重复元素的整数数组,我们将这个数组分割成几个"块", 并将这些块分别进行排序.之后再连接起来,使得连接的结果和按升序排序后的原数组相同. ...