指定された間隔内に配置されている複数の行を返します。
構文
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 式は、完全修飾列名で、単一のテーブルから取得する必要があります。
- ALLSELECTED および orderByのすべての列の partitionBy() が既定値になります。 |
orderBy |
(省略可能)各パーティションの並べ替え方法を定義する式を含む ORDERBY() 句。
省略した場合: - relation を明示的に指定する必要があります。
- 既定では、 partitionByでまだ指定されていないrelation内のすべての列で並べ替えられます。 |
blanks |
(省略可能)relation または axisを並べ替えるときに空白値を処理する方法を定義する列挙体。
サポートされている値は次のとおりです。
個々の式に対して ORDERBY() 関数で blanks パラメーターと空白の両方を指定すると、個々の orderBy 式のblanksが関連する orderBy 式に優先されます。
blanksが指定されていない OrderBy 式では、親関数のblanks パラメーターが優先されます。 |
partitionBy |
(省略可能)PARTITIONBY のパーティション分割方法を定義する列を含む 句。 省略すると、relation は 1 つのパーティションとして扱われます。 |
matchBy |
(省略可能)データの照合方法と現在の行の識別方法を定義する列を含む MATCHBY() 句。 |
reset |
(省略可能) 視覚的な計算でのみ使用できます。 計算がリセットされるかどうか、およびビジュアル図形の列階層のレベルを示します。 使用できる値は、現在の視覚図形の列へのフィールド参照、NONE (既定値)、LOWESTPARENT、HIGHESTPARENT、または整数です。 動作は、整数符号 ( - 0 または省略した場合) によって異なります。計算はリセットされません。 NONEに相当します。
- 正の場合、整数はグレインに関係なく、最も高い列から始まる列を識別します。 HIGHESTPARENT は 1 に相当します。
- 負の値の場合、整数は現在のグレインを基準にして、最下位から始まる列を識別します。 LOWESTPARENT は -1 に相当します。 |
戻り値
ウィンドウのすべての行。
注釈
DAXテーブル関数によって追加される列を除き、relation内の各列 (matchByが存在しない場合)、またはmatchByとpartitionByの各列 (matchByが存在する場合) には、操作する現在の行を定義するのに役立つ対応する外部値が必要です。
from_typeとto_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内に存在しません。 - ウィンドウ全体がパーティションの外側にあるか、ウィンドウの先頭がその末尾の後にあります。
relationと同じテーブルに定義されている計算列内でWINDOWを使用し、orderByを省略すると、エラーが返されます。
ウィンドウの先頭が最初の行の前にある場合は、最初の行に設定されます。 同様に、ウィンドウの末尾がパーティションの最後の行の後にある場合は、最後の行に設定されます。
resetはビジュアル計算でのみ使用でき、orderByやpartitionByと組み合わせて使用することはできません。
resetが存在する場合は、axisを指定できますが、relationは指定できません。
resetの値が絶対値 (正の整数、HIGHESTPARENT、またはフィールド参照) であり、階層内のターゲット レベル以上で計算が評価される場合、計算は個々の要素ごとにリセットされます。 つまり、関数は、その特定の要素のみを含むパーティション内で評価されます。
この記事の例は、Adventure Works DW 2020 Power BI Desktop モデルのサンプルと共に使用できます。 モデルを取得するには、サンプル モデル
例 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]
)
各会計年度の月数別の合計売上の合計を返します。
| 年 | 月の年数 | 売上金額 | RunningSum |
|---|---|---|---|
| 2018 年度 | 1 | $1,327,675 | $1,327,675 |
| 2018 年度 | 2 | $3,936,463 | $5,264,138 |
| 2018 年度 | 3 | $700,873 | $5,965,011 |
| 2018 年度 | 4 | $1,519,275 | $7,484,286 |
| 2018 年度 | 5 | $2,960,378 | $10,444,664 |
| 2018 年度 | 6 | $1,487,671 | $11,932,336 |
| 2018 年度 | 7 | $1,423,357 | $13,355,693 |
| 2018 年度 | 8 | $2,057,902 | $15,413,595 |
| 2018 年度 | 9 | $2,523,948 | $17,937,543 |
| 2018 年度 | 10 | $561,681 | $18,499,224 |
| 2018 年度 | 11 | $4,764,920 | $23,264,145 |
| 2018 年度 | 12 | $596,747 | $23,860,891 |
| 2019 年度 | 1 | $1,847,692 | $1,847,692 |
| 2019 年度 | 2 | $2,829,362 | $4,677,054 |
| 2019 年度 | 3 | $2,092,434 | $6,769,488 |
| 2019 年度 | 4 | $2,405,971 | $9,175,459 |
| 2019 年度 | 5 | $3,459,444 | $12,634,903 |
| 2019 年度 | 6 | $2,850,649 | $15,485,552 |
| 2019 年度 | 7 | $2,939,691 | $18,425,243 |
| 2019 年度 | 8 | $3,964,801 | $22,390,045 |
| 2019 年度 | 9 | $3,287,606 | $25,677,650 |
| 2019 年度 | 10 | $2,157,287 | $27,834,938 |
| 2019 年度 | 11 | $3,611,092 | $31,446,030 |
| 2019 年度 | 12 | $2,624,078 | $34,070,109 |
| 2020 年度 | 1 | $3,235,187 | $3,235,187 |
| 2020 年度 | 2 | $4,070,046 | $7,305,233 |
| 2020 年度 | 3 | $4,429,833 | $11,735,066 |
| 2020 年度 | 4 | $4,002,614 | $15,737,680 |
| 2020 年度 | 5 | $5,265,797 | $21,003,477 |
| 2020 年度 | 6 | $3,465,241 | $24,468,717 |
| 2020 年度 | 7 | $3,513,064 | $27,981,781 |
| 2020 年度 | 8 | $5,247,165 | $33,228,947 |
| 2020 年度 | 9 | $5,104,088 | $38,333,035 |
| 2020 年度 | 10 | $3,542,150 | $41,875,184 |
| 2020 年度 | 11 | $5,151,897 | $47,027,081 |
| 2020 年度 | 12 | $4,851,194 | $51,878,275 |
例 3 - 視覚的な計算
次の視覚的な計算 DAX クエリです。
TotalSalesRunningSumByYear =
SUMX ( WINDOW ( 0, ABS, 0, REL, ROWS, HIGHESTPARENT ), [SalesAmount] )
各年に沿って計算された月別の累積売上合計を返します。 同じ結果で、 HIGHESTPARENTの代わりに値 1 を使用できます。
次のスクリーンショットは、ビジュアル マトリックスとビジュアル計算式を示しています。
視覚的な計算 を
例 4 - 視覚的な計算
次の視覚的な計算 DAX クエリです。
TotalSalesRunningSumByQuarter =
SUMX ( WINDOW ( 0, ABS, 0, REL,, -1 ), [SalesAmount] )
各四半期に沿って計算された月別の累積売上合計を返します。
LOWESTPARENT値は、-1 ではなく、同じ結果で使用できます。