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