ROWNUMBER

适用于:计算列计算表Measure视觉计算

返回当前上下文在指定分区内按指定顺序排序的唯一级别。 If 找不到匹配项,则 rownumberblank。

语法

ROWNUMBER ( [<relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

parameters

术语 定义
relation (可选)从中返回输出行的表表达式。
If 指定,allorderByand 中的 partitionBy 列必须来自它。 省略
If:必须显式指定
- orderBy
- AllorderByandpartitionBy 列必须完全限定 and 来自单个表。
- 默认为 ALLSELECTEDallorderByand 列的 partitionBy()。
axis (可选)视觉形状中的轴。 仅在视觉计算中可用,and 替换 relation
orderBy (可选)一个 ORDERBY() 子句,其中包含 define 如何对每个分区进行排序的列。 省略
If:必须显式指定
- relation
- 默认按 relation 中已 notpartitionBy中指定的每一列进行排序。
blanks (可选)定义排序时如何处理 blankvalues 的枚举。
支持的 values 为:
  • DEFAULT(默认 value),其中数值 valuesblankvalues 的行为在零 and 负 values之间排序。 字符串的行为 blankvalues 在 all 字符串(包括空字符串)之前排序。
  • FIRST,无论升序 or 降序排序顺序如何,空白始终在开头排序。
  • LAST,无论升序 or 降序排序顺序如何,空白始终在末尾进行排序。

注意,当同时指定单个表达式 blanks() 函数中的 and 参数 ORDERBY 空白时,blanks 表达式上的单个 blanks 表达式 orderBy 优先于相关 and 表达式,orderByblanks 表达式未指定 blanks 将遵循父 Window 函数上的 参数。
partitionBy (可选)一个 PARTITIONBY() 子句,其中包含 define 如何对 relation 进行分区的列。
If 省略,relation 被视为单个分区。
matchBy (可选)MATCHBY() 子句,其中包含 define 如何匹配数据 and 标识当前行的列。
reset (可选)仅在视觉计算中可用。 指示 if 计算重置,and 视觉形状的列层次结构级别。 接受的 values 为:NONELOWESTPARENTHIGHESTPARENT、or 整数。 此行为取决于整数 sign:
- If 省略零 or,计算 not 重置。 等效于 NONE
- If 正,整数标识从最高、与粒度无关的列。 HIGHESTPARENT 等效于 1。
- If 负数,整数标识从最低到当前粒度的列。 LOWESTPARENT 等效于 -1。

返回 value

当前上下文的 rownumber 编号。

备注

每个 orderBypartitionBy,andmatchBy 列必须具有相应的外部 value,以帮助 define 要对其操作的当前行,并具有以下行为:

  • If 正好有一个对应的外部列,则使用其 value。
  • If 没有相应的外部列,然后:
    • ROWNUMBER 将 first 确定没有相应外部列的列 allorderBypartitionByandmatchBy 列。
    • 对于 values 父上下文中这些列的现有 ROWNUMBER 的每个组合,ROWNUMBER 在返回行 and 计算。
    • ROWNUMBER的最终输出是这些行的 union。
  • If 有多个相应的外部列,则返回 error。

If matchBy 存在,则 ROWNUMBER 将尝试使用 matchByandpartitionBy 中的列来 idenfity 当前行。 If orderBy and partitionBy 中指定的列无法唯一标识 relation中的每一行,然后:

  • ROWNUMBER 将尝试 find 唯一标识每行所需的最少列数。
  • If 可以找到此类列,ROWNUMBER
    • 尝试 find 唯一标识每行所需的附加列数最少。
    • 自动将这些新列追加到 orderBy 子句。
    • 使用此新 orderBy 列集对每个分区进行排序。
  • If 无法找到此类列,and 函数在运行时检测到平局,则返回 error。

reset 只能用于视觉计算,and 不能与 orderByorpartitionBy结合使用。 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 视觉计算表达式:

DAX 视觉计算

INDEX ORDERBY PARTITIONBY WINDOW RANK