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 的排名数。

备注

  • 如果 expressionvalue 计算结果为 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]))