从数据到信息
从信息到洞察

理解 RANK.EQ

DAX 中的 RANK.EQ 函数与 Microsoft Excel 中的同名函数类似,它返回某个数字在整个值集中的排名,功能上相当于 RANKX 函数的子集。除非需要照搬 Excel 公式,否则我们很少在 DAX 中使用它。

RANK.EQ

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

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

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

Product[Price Rank] := RANK.EQ ( Product[Unit Price], Product[Unit Price] )

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

RANKX 和 RANK.EQ

RANK.EQ 是 RANKX 的极简形式,只适用于非常有限的场景,我们可以使用 RANKX 重写 RANK.EQ

RANK.EQ ( <value>, table[column] )

-------- 等价于 --------

RANKX (
    VALUES ( table[column] ),
    table[column],
    <value>
)
RANK.EQ ( <value>, table[column], <order> )

-------- 等价于 --------

RANKX (
    VALUES ( table[column] ),
    table[column],
    <value>,
    <order>
)

 

6
说点什么

1000
 
鼓掌微笑开心憧憬爱你色并不觉得吃瓜doge二哈喵喵思考笑哭捂脸悲伤大哭抓狂汗偷笑打脸捂眼黑线问号晕拜拜闭嘴衰咒骂ok作揖
3 评论数
3 被回复的评论
4 订阅评论的人数
 
查看最近回复
查看最热评论
  订阅本文评论  
最新 最旧 得票最多
提醒
成员
悟空

rank.eq(column,column)排名是间断的,比如,111,44,66,但是rankx(values(column),column)排名是不间断的,比如1112233

成员
pearlzhang

函数代码行,“,”错位了 微笑

成员
A5121103420

照这个速度过年也更新不完

DAX 圣经

导读

初识 DAX

DAX 基础知识

DAX 原理

DAX 高级原理

基础函数类型

迭代函数

CALCULATE 函数

CALCULATE 调节器

基础表函数

条件判断函数

查找匹配函数

时间智能函数

统计类函数

投影函数

分组/连接函数

集合函数

其他函数