RANK
返回指定分区中当前上下文的排名,按指定顺序排序。 如果找不到匹配项,则排名为空。
语法
RANK ( [<ties>][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
参数
术语 | 定义 |
---|---|
ties |
(可选)定义在绑定两行或多行时如何处理排名。
如果指定,则支持的值为 DENSE 或 SKIP。 如果省略 : - 默认为 SKIP |
relation |
(可选)从中返回输出行的表表达式。
如果指定,则 orderBy 和 partitionBy 中的所有列都必须来自它。
如果省略:必须显式指定 - orderBy 。- 所有 orderBy 列和 partitionBy 列必须完全限定,并且来自单个表。
- 默认为 orderBy 和 partitionBy 中的所有列的 ALLSELECTED()。 |
axis |
(可选)视觉形状中的轴。 仅在视觉计算中可用,并替换 relation 。 |
orderBy |
(可选)一个 ORDERBY() 子句,其中包含定义每个分区的排序方式的列。
如果省略:必须显式指定 - relation 。
- 默认为 relation 中尚未在 partitionBy 中指定的每一列排序。 |
blanks |
(可选)一个枚举,用于定义在对 relation 或 axis 进行排序时如何处理空值。
支持的值为:
注意,如果同时指定 ORDERBY() 函数中的 blanks 参数和空值,则单个 orderBy 表达式上的 blanks 优先于相关 orderBy 表达式,而未指定 blanks orderBy 表达式将遵循父函数上的 blanks 参数。 |
partitionBy |
(可选)PARTITIONBY() 子句,其中包含定义如何对 relation 进行分区的列。 如果省略,则 relation 被视为单个分区。 |
matchBy |
(可选)MATCHBY() 子句,其中包含定义如何匹配数据和标识当前行的列。 |
reset |
(可选)仅在视觉计算中可用。 指示计算是否重置,以及视觉形状的列层次结构的哪个级别。 接受的值包括:对当前视觉形状、NONE (默认值)、LOWESTPARENT 、HIGHESTPARENT 或整数中的列的字段引用。 此行为取决于整数符号:- 如果为零或省略,则计算不会重置。 等效于 NONE 。
- 如果为正值,则整数标识从最高、与粒度无关的列。 HIGHESTPARENT 等效于 1。
- 如果为负数,则整数标识从最低到当前粒度的列。 LOWESTPARENT 等效于 -1。 |
返回值
当前上下文的排名号。
言论
每个
orderBy
、partitionBy
和matchBy
列必须具有相应的外部值,以帮助定义要对其操作的当前行,并具有以下行为:- 如果正好有一个对应的外部列,则使用其值。
- 如果没有相应的外部列,则:
-
RANK 首先确定没有相应外部列的所有
orderBy
、partitionBy
和matchBy
列。 - 对于 RANK 父上下文中这些列的现有值的每个组合,将计算 RANK 并返回一行。
- RANK的最终输出是排名数字。
-
RANK 首先确定没有相应外部列的所有
如果存在
matchBy
,则 RANK 将尝试使用matchBy
中的列,并partitionBy
以 idenfity 当前行。如果
orderBy
中指定的列和partitionBy
无法唯一标识relation
中的每一行,则两行或更多行的排名可能具有相同的排名,排名将由关系参数确定。RANK 返回总行的空值。 建议彻底测试表达式。
RANK 不与 RANKX 进行比较,因为与 SUMX相比 SUM。
reset
只能用于视觉计算,不能与orderBy
或partitionBy
结合使用。 如果存在reset
,则可以指定axis
,但无法指定relation
。
示例 1 - 计算列
以下 DAX 查询:
EVALUATE
ADDCOLUMNS(
'DimGeography',
"Rank",
RANK(
DENSE,
'DimGeography',
ORDERBY(
'DimGeography'[StateProvinceName], desc,
'DimGeography'[City], asc),
LAST,
PARTITIONBY(
'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc
返回一个表,该表按其 StateProvinceName 和 City 对每个地理位置使用相同的 EnglishCountryRegionName 进行排名。 空白 orderBy
列值在末尾排序。
示例 2 - 视觉计算
以下视觉计算 DAX 查询:
SalesRankWithinYear = RANK(DENSE, ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))
SalesRankAllHistory = RANK(DENSE, ORDERBY([SalesAmount], DESC))
创建两列,按每个月的总销售额(每年内)和整个历史记录进行排名。
以下屏幕截图显示了视觉对象矩阵和第一个视觉对象计算表达式: