同じテーブル内の 
構文
OFFSET ( <delta>[, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )
パラメーター
| 用語 | 定義 | 
|---|---|
| delta | データを取得する現在の行の前 (負の値) または後 (正の値) の行数。 スカラー値を返す任意の DAX 式を指定できます。 | 
| relation | (省略可能)出力行が返されるテーブル式。 ビジュアル計算で使用する場合、このパラメーターは視覚図形の軸を受け入れます。 指定した場合、 partitionBy内のすべての列は、その列または関連テーブルから取得する必要があります。省略した場合: - orderByを明示的に指定する必要があります。- すべての orderBy式とpartitionBy式は、完全修飾列名で、単一のテーブルから取得する必要があります。- ALLSELECTED および orderByのすべての列のpartitionBy() が既定値になります。 | 
| orderBy | (省略可能)各パーティションの並べ替え方法を定義する式を含む ORDERBY() 句。 省略した場合: - relationを明示的に指定する必要があります。- 既定では、 relationでまだ指定されていないpartitionBy内のすべての列によって並べ替えられます。 | 
| blanks | (省略可能) relationまたはaxisを並べ替えるときに空白値を処理する方法を定義する列挙体。サポートされている値は次のとおりです。 
 注意: 個々の式に対する blanks関数の ORDERBY パラメーターと空白の両方が指定されている場合、個々の orderBy 式の  は関連する orderBy 式に優先され、blanksを指定しない orderBy 式は親関数のblanksパラメーターを受け取ります。 | 
| partitionBy | (省略可能)PARTITIONBY のパーティション分割方法を定義する列を含む  句。 省略すると、 relationは 1 つのパーティションとして扱われます。 | 
| matchBy | (省略可能)データの照合方法と現在の行の識別方法を定義する列を含む MATCHBY() 句。 | 
| reset | (省略可能)ビジュアル計算でのみ使用できます。 計算がリセットされるかどうか、およびビジュアル図形の列階層のレベルを示します。 使用できる値は、現在の視覚図形の列へのフィールド参照、 NONE(既定値)、LOWESTPARENT、HIGHESTPARENT、または整数です。 動作は、整数符号 (- 0 または省略した場合) に依存し、計算はリセットされません。 NONEに相当します。- 正の場合、整数はグレインに関係なく、最も高い列から始まる列を識別します。 HIGHESTPARENTは 1 に相当します。- 負の値の場合、整数は現在のグレインを基準にして、最下位から始まる列を識別します。 LOWESTPARENTは -1 に相当します。 | 
戻り値
              relationから 1 つ以上の行。
備考
              DAX テーブル関数によって追加される列を除き、relation内の各列 (matchBy が存在しない場合)、または matchBy および partitionBy内の各列 (matchBy が存在する場合) には、次の動作を行う現在の行を定義するのに役立つ、対応する外部値が必要です。
- 対応する外部列が 1 つだけ存在する場合は、その値が使用されます。
- 対応する外部列がない場合は、次のようにします。- OFFSET は、最初に、対応する外部列がないすべての列を決定します。
- OFFSETの親コンテキスト内のこれらの列の既存の値の組み合わせごとに、OFFSET が評価され、行が返されます。
- OFFSETの最終的な出力は、これらの行の和集合です。
 
- 対応する外部列が複数ある場合は、エラーが返されます。
テーブル関数によって relationのすべての列 DAX 追加された場合は、エラーが返されます。
              matchBy が存在する場合、OFFSET は matchBy 列と partitionBy 列を使用して行を識別しようとします。
              matchBy が存在せず、orderBy および partitionBy 内で指定された列が relation内のすべての行を一意に識別できない場合は、次のようになります。
- OFFSET は、すべての行を一意に識別するために必要な追加列の最小数を検索しようとします。
- このような列が見つかった場合、OFFSET はこれらの新しい列を orderByに自動的に追加し、各パーティションは、この新しい OrderBy 列セットを使用して並べ替えられます。
- このような列が見つからない場合は、エラーが返されます。
次の場合、空のテーブルが返されます。
- OrderBy 列または PartitionBy 列の対応する外部値は、relation内に存在しません。
- 
              delta値を指定すると、パーティション内に存在しない行にシフトします。
              OFFSET
              relationと同じテーブルで定義された計算列内で使用され、orderBy を省略すると、エラーが返されます。
              reset はビジュアル計算でのみ使用でき、orderBy または partitionByと組み合わせて使用することはできません。 
              reset が存在する場合は、axis を指定できますが、relation 指定できません。
              resetの値が絶対値 (正の整数、HIGHESTPARENT、またはフィールド参照) であり、階層内のターゲット レベル以上で計算が評価される場合、計算は個々の要素ごとにリセットされます。 つまり、関数は、その特定の要素のみを含むパーティション内で評価されます。
例 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]
    )
)
各製品カテゴリと暦年の売上合計と、前年のそのカテゴリの売上合計をまとめた表を返します。
例 2 - メジャー
次の 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() を使用して、各暦年の売上合計と前年の売上合計を要約したテーブルを返します。
例 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 テーブルを返します。このテーブルには、SalesOrderNumber と SalesOrderLineNumber によって現在の販売が識別され、同じ製品の前の販売額が同じ製品の前の売上金額を示す列が追加されます。 MATCHBYしないと、FactInternetSales テーブルにキー列がないため、クエリはエラーを返します。
例 4 - ビジュアル計算
次の視覚的な計算 DAX クエリです。
SalesRelativeToPreviousMonth = [SalesAmount] - CALCULATE(SUM([SalesAmount]), OFFSET(-1, ROWS, HIGHESTPARENT))
同じ年内の各月と前の月の売上合計の差を返します。
次のスクリーンショットは、ビジュアル マトリックスとビジュアル計算式を示しています。
視覚的な計算 を