ROWNUMBER
返回当前上下文在指定分区内按指定顺序排序的唯一级别。 If 找不到匹配项,则 rownumberblank。
语法
ROWNUMBER ( [<relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
parameters
术语 | 定义 |
---|---|
relation |
(可选)从中返回输出行的表表达式。
If 指定,all orderBy and 中的 partitionBy 列必须来自它。 省略 If:必须显式指定 - orderBy 。- All orderBy andpartitionBy 列必须完全限定 and 来自单个表。
- 默认为 ALLSELECTEDall orderBy and 列的 partitionBy ()。 |
axis |
(可选)视觉形状中的轴。 仅在视觉计算中可用,and 替换 relation 。 |
orderBy |
(可选)一个 ORDERBY() 子句,其中包含 define 如何对每个分区进行排序的列。 省略 If:必须显式指定 - relation 。
- 默认按 relation 中已 notpartitionBy 中指定的每一列进行排序。 |
blanks |
(可选)定义排序时如何处理 blankvalues 的枚举。
支持的 values 为:
注意,当同时指定单个表达式 blanks () 函数中的 and 参数 ORDERBY 空白时,blanks 表达式上的单个 blanks 表达式 orderBy 优先于相关 and 表达式,orderByblanks 表达式未指定 blanks 将遵循父 Window 函数上的 参数。 |
partitionBy |
(可选)一个 PARTITIONBY() 子句,其中包含 define 如何对 relation 进行分区的列。
If 省略, relation 被视为单个分区。 |
matchBy |
(可选)MATCHBY() 子句,其中包含 define 如何匹配数据 and 标识当前行的列。 |
reset |
(可选)仅在视觉计算中可用。 指示 if 计算重置,and 视觉形状的列层次结构级别。 接受的 values 为:NONE 、LOWESTPARENT 、HIGHESTPARENT 、or 整数。 此行为取决于整数 sign:- If 省略零 or,计算 not 重置。 等效于 NONE 。
- If 正,整数标识从最高、与粒度无关的列。 HIGHESTPARENT 等效于 1。
- If 负数,整数标识从最低到当前粒度的列。 LOWESTPARENT 等效于 -1。 |
返回 value
当前上下文的 rownumber 编号。
备注
每个 orderBy
,partitionBy
,andmatchBy
列必须具有相应的外部 value,以帮助 define 要对其操作的当前行,并具有以下行为:
- If 正好有一个对应的外部列,则使用其 value。
-
If 没有相应的外部列,然后:
-
ROWNUMBER 将 first 确定没有相应外部列的列 all
orderBy
、partitionBy
andmatchBy
列。 - 对于 values 父上下文中这些列的现有 ROWNUMBER 的每个组合,ROWNUMBER 在返回行 and 计算。
- ROWNUMBER的最终输出是这些行的 union。
-
ROWNUMBER 将 first 确定没有相应外部列的列 all
- If 有多个相应的外部列,则返回 error。
If
matchBy
存在,则 ROWNUMBER 将尝试使用 matchBy
andpartitionBy
中的列来 idenfity 当前行。
If
orderBy
and
partitionBy
中指定的列无法唯一标识 relation
中的每一行,然后:
- ROWNUMBER 将尝试 find 唯一标识每行所需的最少列数。
-
If 可以找到此类列,ROWNUMBER
- 尝试 find 唯一标识每行所需的附加列数最少。
- 自动将这些新列追加到
orderBy
子句。 - 使用此新 orderBy 列集对每个分区进行排序。
- If 无法找到此类列,and 函数在运行时检测到平局,则返回 error。
reset
只能用于视觉计算,and 不能与 orderBy
orpartitionBy
结合使用。
If
reset
存在,可以指定 axis
,但无法指定 relation
。
示例 1 - 计算列
以下 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 and City 对每个地理位置使用相同的 EnglishCountryRegionName 进行唯一排名。
示例 2 - 视觉计算
以下视觉计算 DAX 查询:
SalesRankWithinYear = ROWNUMBER(ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))
SalesRankAllHistory = ROWNUMBER(ORDERBY([SalesAmount], DESC))
创建两列,每个列分别按总销售额 rank 每个 month(每个 year内)and 整个历史记录。
以下屏幕截图显示了视觉对象矩阵 andfirst 视觉计算表达式: