一:本文思维导图及示例数据图

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 排名函数的更多相关文章

  1. [转帖]SQL Server 10分钟理解游标

    SQL Server 10分钟理解游标 https://www.cnblogs.com/VicLiu/p/11671776.html 概述 游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合 ...

  2. 10分钟理解BFC原理

    10 分钟理解 BFC 原理 一.常见定位方案 在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制元素的布局,有三种常见方案: 普通流 (normal flow) 在普通流中,元素按照 ...

  3. T-SQL查询进阶-10分钟理解游标

    转:http://www.cnblogs.com/CareySon/archive/2011/11/01/2231381.html 概述 游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的 ...

  4. SQL Server 10分钟理解游标

    概述 游标是邪恶的! 在关系数据库中,我们对于查询的思考是面向集合的.而游标打破了这一规则,游标使得我们思考方式变为逐行进行.对于类C的开发人员来着,这样的思考方式会更加舒服. 正常面向集合的思维方式 ...

  5. 10分钟理解JS引擎的执行机制

    首先,请牢记2点: (1) JS是单线程语言 (2) JS的Event Loop是JS的执行机制.深入了解JS的执行,就等于深入了解JS里的event loop 1.灵魂三问 (1) JS为什么是单线 ...

  6. 10 分钟理解 BFC 原理

    一.常见定位方案 在讲 BFC 之前,我们先来了解一下常见的定位方案,定位方案是控制元素的布局,有三种常见方案: 普通流 (normal flow) 在普通流中,元素按照其在 HTML 中的先后位置至 ...

  7. 10分钟理解Android数据库的创建与使用(附具体解释和演示样例代码)

    1.Android数据库简单介绍. Android系统的framework层集成了Sqlite3数据库.我们知道Sqlite3是一种轻量级的高效存储的数据库. Sqlite数据库具有以下长处: (1) ...

  8. 10分钟理解React生命周期

    前言 学习React,生命周期很重要,我们了解完生命周期的各个组件,对写高性能组件会有很大的帮助. 一.简介 React /riˈækt/ 组件的生命周期指的是组件从创建到销毁过程中所经历的一系列方法 ...

  9. 对iOS后台模式最多10分钟运行时间的进一步理解

    在app进入后台时,系统初始默认是只有10s的处理时间,但如果10s不够,我们可以主动申请,网上流传最多的一个说法是10分钟. 但这种说法有个前提: 那就是iOS7之前,是这样 但从iOS7开始,我们 ...

  10. 智能合约语言 Solidity 教程系列10 - 完全理解函数修改器

    这是Solidity教程系列文章第10篇,带大家完全理解Solidity的函数修改器. Solidity系列完整的文章列表请查看分类-Solidity. 写在前面 Solidity 是以太坊智能合约编 ...

随机推荐

  1. JS 实现关键字文本搜索 高亮显示

    示例:  利用字符串的 split 方法,通过搜索的关键字分割成数组  在利用数组的 join 方法拼接成字符串 我是利用mock的省份 1 <template> 2 <div cl ...

  2. [Pytorch框架] 2.1.2 使用PyTorch计算梯度数值

    文章目录 使用PyTorch计算梯度数值 Autograd 简单的自动求导 复杂的自动求导 Autograd 过程解析 扩展Autograd import torch torch.__version_ ...

  3. 玩一玩 Ubuntu 下的 VSCode 编程

    一:背景 1. 讲故事 今天是五一的最后一天,想着长期都在 Windows 平台上做开发,准备今天换到 Ubuntu 系统上体验下,主要是想学习下 AT&T 风格的汇编,这里 Visual S ...

  4. 《爆肝整理》保姆级系列教程-玩转Charles抓包神器教程(16)-Charles其他骚操作之大结局

    1.简介 今天就说一些Charles的其他操作.以及抓包跨域的问题和常见的问题如何解决.到此Charles这一系列的文章也要和大家说再见了,其他什么小程序.Android7.0等等的问题可以查看宏哥的 ...

  5. 基于APM模式的异步实现及跨线程操作窗体或控件方法的实现示例

    最近在一家某电力外派公司开发相关于GIS的功能,在实现代码的过程中出现了一些常见的问题比如: 1.跨线程执行窗体或控件操作(直接使用委拖) 2.异步模式执行某长时间耗时方法 经过一系列摸索可算找到解决 ...

  6. 文心一言 VS chatgpt (11)-- 算法导论2.3 7题 3.1 4~5题

    四.2 ^ (n+1)=O(2 ^ n)成立吗? 2^(2n)=O(2 ^ n)成立吗? 文心一言: chatgpt: 第一个式子不成立,第二个式子成立. 2 ^ (n+1) = O(2 ^ n) 该 ...

  7. 2021-01-18:java中,HashMap的创建流程是什么?

    福哥答案2021-01-18: jdk1.7创建流程:三种构造器.1.初始容量不能为负数,默认16.2.初始容量大于最大容量时,初始容量等于最大容量.3.负载因子必须大于0,默认0.75.4.根据初始 ...

  8. 【GiraKoo】Riters瑞特斯闹钟说明书

    对于闹钟这种按钮存在大量复用,长按操作的设备.说明书一旦丢失,真的很麻烦. 特准备了一个系列,专门保存使用说明书.希望能给大家提供一点帮助. 型号:RTS-1909

  9. 【重学C++】01| C++ 如何进行内存资源管理?

    文章首发 [重学C++]01| C++ 如何进行内存资源管理? 前言 大家好,我是只讲技术干货的会玩code,今天是[重学C++]的第一讲,我们来学习下C++的内存管理. 与java.golang等自 ...

  10. computed与watch监听同一对象的场景

    今日项目需要一个详细的权限配置,如:路由权限,页面tabs权限,操作权限:而路由权限大都知道就不赘述,而操作权限这就涉及页面中每个按钮了,这里使用VUEX进行管理 1.配置store store 中 ...