RANKX
返回 table
参数中每一行的数字列表中的数字的排名。
语法
RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])
parameters
table
返回计算表达式的数据表的任何 DAX 表达式。
expression
返回单个标量值的任意 DAX 表达式。 为 table
的每一行计算表达式,以生成所有可能的排名值。 请参阅备注部分,了解 expression
计算结果为 BLANK时的函数行为。
value
(可选)返回要找到其排名的单个标量值的任何 DAX 表达式。 请参阅备注部分,了解在表达式中找不到 value
时函数的行为。
省略 value
参数时,将改用当前行中的表达式值。
order
(可选)一个值,指定如何对 value
、低到高或高到低进行排名:
价值 | 备用值 | 说明 |
---|---|---|
0(零) | FALSE |
按表达式值的降序排名。 如果值等于表达式中最高的数字,则 RANKX 返回 1。 当省略 order 参数时,这是默认值。 |
1 | TRUE |
表达式按升序进行排名。 如果值等于表达式中最低的数字,则 RANKX 返回 1。 |
ties
(可选)一个枚举,用于定义在有联系时如何确定排名。
枚举 | 说明 |
---|---|
Skip |
下一个排名值在平局后是平局的排名值加上绑定值的计数。 例如,如果五个 (5) 个值与排名 11 绑定,则下一个值将收到 16(11 + 5)的排名。 省略 ties 参数时,这是默认值。 |
Dense |
下一个排名值在平局后是下一个排名值。 例如,如果 5 个值与排名 11 绑定,则下一个值将收到 12 的排名。 |
返回值
为 table
数字的所有行计算 expression
的所有可能值的 value
的排名数。
备注
如果
expression
或value
计算结果为 BLANK 它被视为导致数字的所有表达式的 0(零),或作为所有文本表达式的空文本。如果
value
不是expression
的所有可能值之一,则 RANKX 暂时将value
添加到expression
的值,然后重新评估 RANKX 以确定value
的正确排名。通过将空的逗号(,)置于参数列表中(如
RANKX(Inventory, [InventoryCost],,,"Dense")
),可以跳过可选参数。与 十进制数 数据类型的值之间的相等比较(
=
、<
、>
、>=
和<=
)可能会在使用 RANKX 函数时返回意外结果。 由于 十进制数 数据类型的值存储为 IEEE 标准 754 浮点数,并且其精度有固有限制,因此可能会出现不正确的结果。 为了避免意外的结果,请将数据类型更改为 固定十进制数 或使用 ROUND执行强制舍入。在计算列或行级别安全性 (RLS) 规则中使用时,不支持在 DirectQuery 模式下使用此函数。
示例
“产品”表中的以下计算列计算 Internet 渠道中每个产品的销售额排名。
= RANKX(ALL(Products), SUMX(RELATEDTABLE(InternetSales), [SalesAmount]))