RANKX 函数 (DAX)
对于 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。
返回值
value 在针对所有 table 数字行计算的 expression 的所有可能值中的排名数字。
注释
如果 expression 或 value 的计算结果为 BLANK,则对于其结果为数字的所有表达式,它被视为 0(零);或者对于所有文本表达式,则被视为空文本。
如果 value 不在 expression 的所有可能值内,RANKX 会临时将 value 添加到 expression 的值中,并重新计算 RANKX 以确定 value 的正确排名。
可以通过在参数列表中放入一个空的逗号 (,) 来跳过可选参数,也即 RANKX(Inventory, [InventoryCost],,,"Dense")
示例
Products 表中的以下计算列将为 Internet 渠道中的每个产品计算销售额排名。
=RANKX(ALL(Products), SUMX(RELATEDTABLE(InternetSales), [SalesAmount]))