OFFSET

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

返回一行,该行位于同一表中 or 之后的 之前,由给定的 offset。 If 无法将当前行推断为单个行,可能会返回多个行。

语法

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

参数

术语 定义
delta 从中获取数据的当前行之后(负 value)or(正 value)之前的行数。 它可以是返回标量 DAX的任何 value 表达式。
relation (可选)从中返回输出行的表表达式。
If 指定,all 中的 partitionBy 列必须来自 orrelated 表。 省略
If:必须显式指定
- orderBy
- AllorderByandpartitionBy 表达式必须是来自单个表的完全限定列名 and。
- 默认为 ALLSELECTEDallorderByand 列的 partitionBy()。
axis (可选)视觉形状中的轴。 仅在视觉计算中可用,and 替换 relation
orderBy (可选)一个 ORDERBY() 子句,其中包含 define 每个分区排序方式的表达式。 省略
If:必须显式指定
- relation
- 默认按 relation 中已 notpartitionBy中指定的每一列进行排序。
blanks (可选)定义排序时如何处理 blankvalues 的枚举。
此参数保留供将来使用。
目前,唯一受支持的 value 是 DEFAULT,其中数值 valuesblankvalues 的行为在零 and 负 values之间排序。 字符串的行为 blankvalues 在 all 字符串(包括空字符串)之前排序。
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

一个 or 来自 relation的更多行。

言论

Except 由 DAX 表函数添加的列,relation中的每个列,当 matchBynot 存在时,ormatchByandpartitionBy中的每个列,当存在 matchBy 时,必须具有相应的外部 value 来帮助 define 要对其操作的当前行,并具有以下行为:

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

If 表函数添加了 all列的 relationDAX,将返回 error。

If matchBy 存在,OFFSET 将尝试使用 matchByandpartitionBy 列来标识行。 If matchBy not 存在 andorderByandpartitionBy 中指定的列无法唯一标识 relation中的每一行,然后:

  • OFFSET 将尝试 find 唯一标识每行所需的最少列数。
  • If 可以找到此类列,OFFSET 会自动将这些新列追加到 orderBy,and 每个分区都使用此新 OrderBy 列集进行排序。
  • 找不到此类列 If 返回 error。

if返回空表:

  • value OrderBy or 列的相应外部 PartitionBynot 存在于 relation中。
  • delta value 会导致转移到分区中存在 not 的行。

If OFFSET 在与 relation相同的表中定义的计算列内使用,andorderBy 省略,则返回 error。

reset 只能用于视觉计算,and 不能与 orderByorpartitionBy结合使用。 If reset 存在,可以指定 axis,但无法指定 relation

示例 1 - 计算列

以下 DAX 查询:

DEFINE
VAR vRelation = SUMMARIZECOLUMNS ( 
                    DimProductCategory[EnglishProductCategoryName], 
                    DimDate[CalendarYear], 
                    "CurrentYearSales", SUM(FactInternetSales[SalesAmount]) 
                  )
EVALUATE
ADDCOLUMNS (
    vRelation, 
    "PreviousYearSales", 
    SELECTCOLUMNS(
        OFFSET ( 
                -1, 
                vRelation, 
                ORDERBY([CalendarYear]), 
                PARTITIONBY([EnglishProductCategoryName])
        ),
        [CurrentYearSales]
    )
)

返回一个表,该表汇总了每个 product 类别的总销售额 andcalendaryear,以及 previousyear中该类别的总销售额。

示例 2 - measure

以下 DAX 查询:

DEFINE
MEASURE DimProduct[CurrentYearSales] = SUM(FactInternetSales[SalesAmount])
MEASURE DimProduct[PreviousYearSales] = CALCULATE(SUM(FactInternetSales[SalesAmount]), OFFSET(-1, , ORDERBY(DimDate[CalendarYear])))
EVALUATE
SUMMARIZECOLUMNS (
    DimDate[CalendarYear],
    "CurrentYearSales", DimProduct[CurrentYearSales],
    "PreviousYearSales", DimProduct[PreviousYearSales]
)

使用 OFFSET 中的 measure()返回一个表,该表汇总了 calendaryear的每个 andpreviousyear 总销售额。

示例 3 - 计算列

以下 DAX 查询:

EVALUATE
ADDCOLUMNS (
    FactInternetSales,
    "Previous Sales Amount",
        SELECTCOLUMNS (
            OFFSET (
                -1,
                FactInternetSales,
                ORDERBY ( FactInternetSales[SalesAmount], DESC ),
                PARTITIONBY ( FactInternetSales[ProductKey] ),
                MATCHBY( FactInternetSales[SalesOrderNumber], FactInternetSales[SalesOrderLineNumber] )
            ),
            FactInternetSales[SalesAmount]
        )
)

返回 FactInternetSales 表,并添加一个列,该列指示每个销售的 previous 销售金额(同一 product),当前销售量由 SalesOrderNumber and SalesOrderLineNumber 标识。 如果没有 MATCHBY,查询将返回 error,因为 FactInternetSales 表中没有键列。

示例 4 - 视觉计算

以下视觉计算 DAX 查询:

SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))

返回同一 month中每个 andpreviousyear 的总销售额差异。

以下屏幕截图显示了视觉对象矩阵 and 视觉计算表达式:

DAX 视觉计算

INDEX ORDERBY PARTITIONBY MATCHBY WINDOW RANK ROWNUMBER