活动
RANKX
返回 table
参数中每一行的数字列表中的数字的排名。
RANKX(<table>, <expression>[, <value>[, <order>[, <ties>]]])
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 模式下使用此函数。
Products 表中的以下计算列将为 Internet 渠道中的每种产品计算销售排名。
= RANKX(ALL(Products), SUMX(RELATEDTABLE(InternetSales), [SalesAmount]))