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 を並べ替えるときに空白値を処理する方法を定義する列挙体。
サポートされている値は次のとおりです。
注意: 個々の式に対する ORDERBY() 関数の blanks パラメーターと空白の両方が指定されている場合、個々の orderBy 式の blanks は関連する orderBy 式に優先され、blanks を指定しない orderBy 式は親関数の blanks パラメーターを受け取ります。 |
partitionBy |
(省略可能)relation のパーティション分割方法を定義する列を含む PARTITIONBY() 句。 省略すると、relation は 1 つのパーティションとして扱われます。 |
matchBy |
(省略可能)データの照合方法と現在の行の識別方法を定義する列を含む MATCHBY() 句。 |
reset |
(省略可能) 視覚的な計算でのみ使用できます。 計算がリセットされるかどうか、およびビジュアル図形の列階層のレベルを示します。 使用できる値は、現在の視覚図形の列へのフィールド参照、NONE (既定値)、LOWESTPARENT 、HIGHESTPARENT 、または整数です。 動作は、整数符号 (- 0 または省略した場合) に依存し、計算はリセットされません。 NONE に相当します。
- 正の場合、整数はグレインに関係なく、最も高い列から始まる列を識別します。 HIGHESTPARENT は 1 に相当します。
- 負の値の場合、整数は現在のグレインを基準にして、最下位から始まる列を識別します。 LOWESTPARENT は -1 に相当します。 |
戻り値
ウィンドウのすべての行。
注釈
DAX テーブル関数によって追加される列を除き、matchBy
が存在しない場合は relation
の各列、または 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
内に存在しません。 - ウィンドウ全体がパーティションの外側にあるか、ウィンドウの先頭が終了の後にあります。
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