次の方法で共有


WINDOW

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

指定された間隔内に配置されている複数の行を返します。

構文

WINDOW ( from[, from_type], to[, to_type][, <relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

パラメーター

用語 定義
from ウィンドウの開始位置を示します。 スカラー値を返す任意の DAX 式を指定できます。
動作は、from_type パラメーターによって異なります。
- from_type が REL の場合、ウィンドウの最初の行を取得するために現在の行から戻る行の数 (負の値) または前方 (正の値)。
- from_type が ABSされ、from が正の場合は、パーティションの先頭からのウィンドウの開始位置になります。 インデックス作成は 1 から始まります。0 は 1 と解釈されます。 たとえば、0 と 1 は、ウィンドウがパーティションの先頭から開始を意味します。 from が負の値の場合は、パーティションの末尾からのウィンドウの開始位置になります。 -1 は、パーティション内の最後の行を意味します。
from_type from パラメーターの動作を変更します。 指定できる値は、ABS (絶対) と REL (相対) です。 既定値は REL です。
to fromと同じですが、ウィンドウの末尾を示します。 最後の行がウィンドウに含まれます。
to_type from_typeと同じですが、toの動作を変更します。
relation (省略可能) 返される出力行の基になるテーブル式。
指定した場合、partitionBy 内のすべての列は、その列または関連テーブルから取得する必要があります。
省略した場合:
- orderBy を明示的に指定する必要があります。
- すべての orderBy 式と partitionBy 式は、完全修飾列名で、単一のテーブルから取得する必要があります。
- orderBy および partitionByのすべての列の 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 に相当します。

戻り値

ウィンドウのすべての行。

注釈

DAX テーブル関数によって追加される列を除き、matchBy が存在しない場合は relationの各列、または matchBy および partitionByの各列 (matchBy が存在する場合) には、操作する現在の行を定義するのに役立つ対応する外部値が必要です。 from_typeto_type の両方に値 ABSがある場合、次のことが partitionBy 列にのみ適用されます。

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

テーブル関数によって relationのすべての列 DAX 追加された場合は、エラーが返されます。

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

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

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

  • orderBy または partitionBy 列の対応する外部値が relation内に存在しません。
  • ウィンドウ全体がパーティションの外側にあるか、ウィンドウの先頭が終了の後にあります。

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

ウィンドウの先頭が最初の行の前にある場合は、最初の行に設定されます。 同様に、ウィンドウの末尾がパーティションの最後の行の後にある場合は、最後の行に設定されます。

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

例 1 - メジャー

次のメジャー:

3-day Average Price = 
AVERAGEX(
    WINDOW(
        -2,REL,0,REL,
        SUMMARIZE(ALLSELECTED('Sales'), 'Date'[Date], 'Product'[Product]),
        ORDERBY('Date'[Date]),
        KEEP,
        PARTITIONBY('Product'[Product])
    ), 
    CALCULATE(AVERAGE(Sales[Unit Price]))
)

各製品の単価の 3 日間の平均を返します。 3 日間のウィンドウは、製品の売上が 3 日間で構成されていることに注意してください。必ずしも連続するカレンダー日が 3 日であるとは限りません。

例 2 - メジャー

次のメジャー:

RunningSum =
SUMX (
    WINDOW (
        1, ABS, 0, REL,
        ALLSELECTED (
            'Date'[Fiscal Year],
            'Date'[Month Number Of Year]
        ),
        PARTITIONBY ( 'Date'[Fiscal Year] )
    ),
    [Total Sales]
)

各会計年度の月数別の合計売上の合計を返します。

月の年数 Sales Amount RunningSum
FY2018 1 $1,327,675 $1,327,675
FY2018 2 $3,936,463 $5,264,138
FY2018 3 $700,873 $5,965,011
FY2018 4 $1,519,275 $7,484,286
FY2018 5 $2,960,378 $10,444,664
FY2018 6 $1,487,671 $11,932,336
FY2018 7 $1,423,357 $13,355,693
FY2018 8 $2,057,902 $15,413,595
FY2018 9 $2,523,948 $17,937,543
FY2018 10 $561,681 $18,499,224
FY2018 11 $4,764,920 $23,264,145
FY2018 12 $596,747 $23,860,891
FY2019 1 $1,847,692 $1,847,692
FY2019 2 $2,829,362 $4,677,054
FY2019 3 $2,092,434 $6,769,488
FY2019 4 $2,405,971 $9,175,459
FY2019 5 $3,459,444 $12,634,903
FY2019 6 $2,850,649 $15,485,552
FY2019 7 $2,939,691 $18,425,243
FY2019 8 $3,964,801 $22,390,045
FY2019 9 $3,287,606 $25,677,650
FY2019 10 $2,157,287 $27,834,938
FY2019 11 $3,611,092 $31,446,030
FY2019 12 $2,624,078 $34,070,109
FY2020 1 $3,235,187 $3,235,187
FY2020 2 $4,070,046 $7,305,233
FY2020 3 $4,429,833 $11,735,066
FY2020 4 $4,002,614 $15,737,680
FY2020 5 $5,265,797 $21,003,477
FY2020 6 $3,465,241 $24,468,717
FY2020 7 $3,513,064 $27,981,781
FY2020 8 $5,247,165 $33,228,947
FY2020 9 $5,104,088 $38,333,035
FY2020 10 $3,542,150 $41,875,184
FY2020 11 $5,151,897 $47,027,081
FY2020 12 $4,851,194 $51,878,275

例 3 - 視覚的な計算

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

TotalSalesRunningSumByYear = SUMX(WINDOW(0, ABS, 0, REL, ROWS, HIGHESTPARENT), [SalesAmount])

各年に沿って計算された月別の累積売上合計を返します。 HIGHESTPARENTの代わりに値 1 と -2 を使用すると、同じ結果を得られます。

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

視覚的な計算 を する

例 4 - 視覚的な計算

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

TotalSalesRunningSumByQuarter = SUMX(WINDOW(0, ABS, 0, REL, , -1), [SalesAmount])

各四半期に沿って計算された月別の累積売上合計を返します。

INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM