次の方法で共有


OFFSET

適用対象:計算列計算テーブルMeasureビジュアル計算

特定の orによって、同じテーブル内の 現在の行 の後に offset する前に配置された 1 つの行を返します。 現在の行を 1 つの行に推定できない If、複数の行が返される可能性があります。

構文

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

パラメーター

用語 定義
delta データを取得する現在の行の後に value する前 (負の or) の行数 (正の value)。 スカラー DAXを返す任意の value 式を指定できます。
relation (省略可能)出力行が返されるテーブル式。 指定
If、all の partitionBy 列は、or テーブル related 列から取得する必要があります。
If 省略:
- orderBy を明示的に指定する必要があります。
- AllorderByandpartitionBy 式は、1 つのテーブルから取得 and 完全修飾列名である必要があります。
- ALLSELECTEDallorderByの and 列の partitionBy() が既定値になります。
axis (省略可能)視覚図形の軸。 視覚的な計算でのみ使用でき、and は relationを置き換えます。
orderBy (省略可能)各パーティションの並べ替え方法を ORDERBY する式を含む define() 句。
If 省略:
- relation を明示的に指定する必要があります。
- relationで既に指定 notpartitionBy 内のすべての列による順序付けが既定値です。
blanks (省略可能)並べ替え時の blankvalues の処理方法を定義する列挙体。
このパラメーターは、将来使用するために予約されています。
現在、サポートされている唯一の value は DEFAULTであり、数値 values の動作は 0 blank 負の valuesの間で並べ替 andvalues。 文字列の動作は、空の文字列を含む文字列を blank する前に順序付け valuesall。
partitionBy (省略可能)PARTITIONBY のパーティション分割方法を define する列を含む relation() 句。 省略
If、relation は 1 つのパーティションとして扱われます。
matchBy (省略可能)現在の行を識別 MATCHBY データの照合方法を define する列を含む and() 句。
reset (省略可能)ビジュアル計算でのみ使用できます。 計算 if リセット and、ビジュアル図形の列階層のレベルを示します。 使用できる values は、NONELOWESTPARENTHIGHESTPARENT、整数 or です。 動作は、整数の signによって異なります:
- If 0 or 省略すると、計算はリセット not。 NONEに相当します。
- 正 If、整数はグレインに関係なく、最も高い列から始まる列を識別します。 HIGHESTPARENT は 1 に相当します。
- 負 If、整数は現在のグレインを基準にして、最下位から始まる列を識別します。 LOWESTPARENT は -1 に相当します。

value を返す

1 つ orrelationから行を増やします。

備考

Except テーブル関数によって追加された列の DAX、relation が存在する場合は、matchBy内の各列、notormatchByand内の各列 partitionBymatchBy が存在する場合は、動作する現在の行を value するのに役立つ対応する外部 define が必要です。次の動作を行います。

  • 対応する外部列が 1 つだけ存在する If は、その value が使用されます。
  • 対応する外部列がない If は、次のようになります。
    • OFFSET は、対応する外部列がない first 列を決定 all。
    • valuesの親コンテキスト内のこれらの列に対する既存の OFFSET の組み合わせごとに、行が返 OFFSETand が評価されます。
    • OFFSET最終的な出力は、これらの行の union です。
  • 複数の対応する外部列がある If は、error が返されます。

テーブル関数によって追加された Ifの列 allrelationDAX、error が返されます。

If matchBy が存在 OFFSET は、matchByandpartitionBy 列を使用して行を識別しようとします。 If matchBy not、and内のすべての行を一意に識別できない orderByandpartitionBy 内で指定された列 relation 存在します。

  • OFFSET は、すべての行を一意に識別するために必要な追加列の最小数を find しようとします。
  • このような列が見つかる If、OFFSET は自動的にこれらの新しい列を orderByに追加します。and 各パーティションは、この新しい一連の OrderBy 列を使用して並べ替えられます。
  • このような列が見つからない If は、error が返されます。

空のテーブルが if返されます。

  • value OrderBy or 列の対応する外部 PartitionBy は、not内に存在 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]
        )
)

SalesOrderNumber previous SalesOrderLineNumber によって現在の販売が識別される、同じ productの and 販売の金額を示す列を追加した FactInternetSales テーブルを返します。 MATCHBYしないと、FactInternetSales テーブルにキー列がないため、クエリは error を返します。

例 4 - ビジュアル計算

次の視覚的な計算 DAX クエリです。

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

同じ month内の and の各 previousyear の売上合計の差を返します。

次のスクリーンショットは、ビジュアル計算式 and ビジュアル マトリックスを示しています。

視覚的な計算 を する

INDEX ORDERBY PARTITIONBY MATCHBY WINDOW RANK ROWNUMBER