[知识体系] 理解 RANK.EQ

  [复制链接]
查看104496 | 回复117 | 2021-2-21 18:53:40 | 显示全部楼层 |阅读模式
DAX 中的 RANK.EQ 函数与 Microsoft Excel 中的同名函数类似,它返回某个数字在整个值集中的排名,功能上相当于 RANKX 函数的子集。除非需要照搬 Excel 公式,否则我们很少在 DAX 中使用它。

RANK.EQ
  1. RANK.EQ ( <value>, <column>, [<order>] )
复制代码
参数属性描述
Value需要计算排名的 DAX 表达式
ColumnName用来确定排名的现有列,不能使用表达式
Order可选排序规则. 0/FALSE/DESC – 降序; 1/TRUE/ASC – 升序. 默认降序


在 Excel 中,这个函数可以接受一系列单元格区域作为列参数。在 DAX 中,它通常与表达式共用同一列,这意味着你希望计算的是列对其自身值的排序。


有一种情况可能需要使用不同的列,当你有两个表, 一个表包含要计算排名的元素(例如, 特定的产品),另一个表包含要用于排名的整个元素集(例如, 所有产品的列表)。但是,由于<column>存在的限制:它不能是表达式或使用 ADDCOLUMNSROWSUMMARIZE 创建的列,RANK.EQ 通常用于计算列,值参数和列参数使用相同的列,即引用相同表中的列,如下例所示:
  1. Product[Price Rank] := RANK.EQ ( Product[Unit Price], Product[Unit Price] )
复制代码

如果希望得到更加灵活或者动态的排名结果,可以用 RANKX 代替 RANK.EQ,后者主要用来满足 Excel 函数兼容性。

RANKX 和 RANK.EQ

RANK.EQ 是 RANKX 的极简形式,只适用于非常有限的场景,我们可以使用 RANKX 重写 RANK.EQ
  1. RANK.EQ ( <value>, table[column] )

  2. -------- 等价于 --------

  3. RANKX (
  4.     VALUES ( table[column] ),
  5.     table[column],
  6.     <value>
  7. )
复制代码
  1. RANK.EQ ( <value>, table[column], <order> )

  2. -------- 等价于 --------

  3. RANKX (
  4.     VALUES ( table[column] ),
  5.     table[column],
  6.     <value>,
  7.     <order>
  8. )
复制代码
回复

使用道具 举报

飞翔吧 | 2021-4-24 13:54:26 | 显示全部楼层
我也来支持一下,很喜欢这里老师
回复

使用道具 举报

宇文寒涛 | 2021-5-20 12:05:27 | 显示全部楼层
路过 帮顶 嘿嘿
回复

使用道具 举报

鸥飞007 | 2021-5-24 06:27:55 来自手机 | 显示全部楼层
支持,楼下的跟上哈~
回复

使用道具 举报

Sanie | 2021-6-22 13:10:46 来自手机 | 显示全部楼层
楼猪V5啊
回复

使用道具 举报

风含雨 | 2021-8-7 21:39:40 来自手机 | 显示全部楼层
LZ敢整点更有创意的不?兄弟们等着围观捏~
回复

使用道具 举报

luzf2004 | 2021-8-17 22:16:24 | 显示全部楼层
这个不错,学习了
回复

使用道具 举报

canape | 2021-8-28 10:01:27 | 显示全部楼层
占位编辑
回复

使用道具 举报

stockbroker888 | 2021-9-18 16:07:57 | 显示全部楼层
啊啊啊啊啊啊啊啊啊啊啊
回复

使用道具 举报

gege | 2021-10-10 13:02:08 来自手机 | 显示全部楼层
努力,努力,再努力!!!!!!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则