次の方法で共有


INDEX

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

指定したパーティション内の位置パラメーターで指定された絶対位置にある行を、指定した順序で並べ替え、返します。 現在のパーティションを 1 つのパーティションに推測できない場合は、複数の行が返される可能性があります。

構文

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

パラメーター

用語 定義
position データを取得する絶対位置 (1 から基づく) :
- position は正です。1 は最初の行、2 は 2 番目の行、
- position は負の値です。-1 は最後の行、-2 は 2 番目の最後の行などです。
position が境界外にある場合、または BLANK() INDEX は空のテーブルを返します。 スカラー値を返す任意の DAX 式を指定できます。
relation (省略可能)出力が返されるテーブル式。
指定した場合、partitionBy 内のすべての列は、その列または関連テーブルから取得する必要があります。
省略した場合:
- orderBy を明示的に指定する必要があります。
- すべての orderBy 式と partitionBy 式は、完全修飾列名で、単一のテーブルから取得する必要があります。
- orderBypartitionByのすべての列の ALLSELECTED() が既定値になります。
axis (省略可能)視覚図形の軸。 ビジュアル計算でのみ使用でき、relationを置き換えます。
orderBy (省略可能)各パーティションの並べ替え方法を定義する式を含む ORDERBY() 句。
省略した場合:
- relation を明示的に指定する必要があります。
- 既定では、partitionByでまだ指定されていない relation 内のすべての列によって並べ替えられます。
blanks (省略可能)relation または axisを並べ替えるときに空白値を処理する方法を定義する列挙体。
サポートされている値は次のとおりです。
  • DEFAULT (既定値)、数値の動作が空白値である場合は、0 から負の値の間で並べ替えます。 文字列の動作は空白値であり、空の文字列を含むすべての文字列の前に並べ替えられます。
  • FIRST、昇順または降順の並べ替え順序に関係なく、空白は常に先頭に並べ替えられます。
  • LAST、昇順または降順の並べ替え順序に関係なく、空白は常に末尾に並べ替えられます。

注意: 個々の式に対する ORDERBY() 関数の blanks パラメーターと空白の両方が指定されている場合、個々の orderBy 式の blanks は関連する orderBy 式に優先され、blanks を指定しない orderBy 式は親関数の blanks パラメーターを受け取ります。
partitionBy (省略可能)relation のパーティション分割方法を定義する列を含む PARTITIONBY() 句。 省略すると、relation は 1 つのパーティションとして扱われます。
matchBy (省略可能)データの照合方法と現在の行の識別方法を定義する列を含む MATCHBY() 句。
reset (省略可能)ビジュアル計算でのみ使用できます。 計算がリセットされるかどうか、およびビジュアル図形の列階層のレベルを示します。 使用できる値は、現在の視覚図形の列へのフィールド参照、NONE (既定値)、LOWESTPARENTHIGHESTPARENT、または整数です。 動作は、整数符号 (
- 0 または省略した場合) に依存し、計算はリセットされません。 NONEに相当します。
- 正の場合、整数はグレインに関係なく、最も高い列から始まる列を識別します。 HIGHESTPARENT は 1 に相当します。
- 負の値の場合、整数は現在のグレインを基準にして、最下位から始まる列を識別します。 LOWESTPARENT は -1 に相当します。

戻り値

絶対位置にある行。

備考

partitionBy 列と matchBy 列には、動作する "現在のパーティション" を定義するのに役立つ、対応する外部値が必要です。次の動作を行います。

  • 対応する外部列が 1 つだけ存在する場合は、その値が使用されます。
  • 対応する外部列がない場合:
    • INDEX は、最初に、対応する外部列がないすべての partitionBy 列と matchBy 列を決定します。
    • INDEXの親コンテキスト内のこれらの列の既存の値の組み合わせごとに、INDEX が評価され、行が返されます。
    • INDEXの最終的な出力は、これらの行の和集合です。
  • 対応する外部列が複数ある場合は、エラーが返されます。

matchBy が存在する場合、INDEX は matchBy 列と partitionBy 列を使用して行を識別しようとします。 matchBy が存在せず、orderBy および partitionBy 内で指定された列が、relation内のすべての行を一意に識別できない場合:

  • INDEX は、すべての行を一意に識別するために必要な追加列の最小数を検索しようとします。
  • このような列が見つかった場合、INDEX はこれらの新しい列を orderByに自動的に追加し、各パーティションは、この新しい OrderBy 列セットを使用して並べ替えられます。
  • このような列が見つからない場合は、エラーが返されます。

次の場合、空のテーブルが返されます。

  • PartitionBy 列の対応する外部値は、relation内に存在しません。
  • position 値は、パーティション内に存在しない位置を参照します。

relation と同じテーブルで定義された計算列内で INDEX を使用し、orderBy を省略すると、エラーが返されます。

reset はビジュアル計算でのみ使用でき、orderBy または partitionByと組み合わせて使用することはできません。 reset が存在する場合は、axis を指定できますが、relation 指定できません。

例 1 - 計算列

次の DAX クエリ:

EVALUATE INDEX(1, ALL(DimDate[CalendarYear]))

次の表を返します。

DimDate[CalendarYear]
2005

例 2 - 計算列

次の DAX クエリ:

EVALUATE
SUMMARIZECOLUMNS (
    FactInternetSales[ProductKey],
    DimDate[MonthNumberOfYear],
    FILTER (
            VALUES(FactInternetSales[ProductKey]),
            [ProductKey] < 222
    ),
    "CurrentSales", SUM(FactInternetSales[SalesAmount]),
    "LastMonthSales",
    CALCULATE (
        SUM(FactInternetSales[SalesAmount]),
        INDEX(-1, ORDERBY(DimDate[MonthNumberOfYear]))
    )
)
ORDER BY [ProductKey], [MonthNumberOfYear]

次の表を返します。

FactInternetSales[ProductKey] DimDate[MonthNumberOfYear] [CurrentSales] [LastMonthSales]
214 1 5423.45 8047.7
214 2 4968.58 8047.7
214 3 5598.4 8047.7
214 4 5073.55 8047.7
214 5 5248.5 8047.7
214 6 7487.86 8047.7
214 7 7382.89 8047.7
214 8 6543.13 8047.7
214 9 6788.06 8047.7
214 10 6858.04 8047.7
214 11 8607.54 8047.7
214 12 8047.7 8047.7
217 1 5353.47 7767.78
217 2 4268.78 7767.78
217 3 5773.35 7767.78
217 4 5738.36 7767.78
217 5 6158.24 7767.78
217 6 6998 7767.78
217 7 5563.41 7767.78
217 8 5913.31 7767.78
217 9 5913.31 7767.78
217 10 6823.05 7767.78
217 11 6683.09 7767.78
217 12 7767.78 7767.78

例 3 - ビジュアル計算

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

SalesComparedToBeginningOfYear = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, ROWS, HIGHESTPARENT))

SalesComparedToBeginningOfQuarter = [SalesAmount] - CALCULATE(SUM([SalesAmount]), INDEX(1, , -1))

各月のテーブルを拡張します。
- 合計売上額。
- それぞれの年の最初の月との差。
- 各四半期の最初の月との差。

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

視覚的な計算 を する

OFFSET ORDERBY PARTITIONBY WINDOW RANK ROWNUMBER