次の方法で共有


WINDOW

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

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

構文

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

パラメーター

用語 定義
from window の開始位置を示します。 スカラー DAXを返す任意の value 式を指定できます。
動作は、from_type パラメーターによって異なります。
- Iffrom_type は REL です。戻る行の数 (負の value) は、現在の行から前方 (正の or) に value して、firstの window 行を取得します。
- Iffrom_type が ABS、andfrom が正の場合、パーティションの先頭からの window の開始位置です。 値は 1 から始まります。 たとえば、1 は window パーティションの先頭から開始します。 If from 負の値を指定すると、パーティションの末尾からの window の開始位置になります。 -1 は、パーティション内の last 行を意味します。
from_type from パラメーターの動作を変更します。 可能な values は、REL (相対) ABSand (絶対) です。 既定値は REL です。
to fromと同じですが、windowの終わりを示します。 last 行は、windowに含まれます。
to_type from_typeと同じですが、toの動作を変更します。
relation (省略可能) 返される出力行の基になるテーブル式。 指定
If、all の partitionBy 列は、or テーブル related 列から取得する必要があります。
If 省略:
- orderBy を明示的に指定する必要があります。
- AllorderByandpartitionBy 式は、1 つのテーブルから取得 and 完全修飾列名である必要があります。
- ALLSELECTEDallorderByの and 列の partitionBy() が既定値になります。
axis (省略可能) 視覚的な図形の軸。 視覚的な計算でのみ使用でき、and は relationを置き換えます。
orderBy (省略可能)各パーティションの並べ替え方法を ORDERBY する式を含む define() 句。
If 省略:
- relation を明示的に指定する必要があります。
- relationで既に指定 notpartitionBy 内のすべての列による順序付けが既定値です。
blanks (省略可能)並べ替え時の blankvalues の処理方法を定義する列挙体。
このパラメーターは将来使用するために予約されています。
現在、サポートされている唯一の value は DEFAULTであり、数値 values の動作は 0 blank 負の valuesの間で並べ替 andvalues。 文字列の動作は、空の文字列を含む文字列を blank する前に順序付け valuesall。
partitionBy (省略可能)PARTITIONBY のパーティション分割方法を define する列を含む relation() 句。 省略 If、relation は 1 つのパーティションとして扱われます。
matchBy (省略可能)現在の行を識別 MATCHBY データの照合方法を define する列を含む and() 句。
reset (省略可能) 視覚的な計算でのみ使用できます。 計算 if リセット and、ビジュアル図形の列階層のレベルを示します。 使用できる values は、NONELOWESTPARENTHIGHESTPARENT、整数 or です。 動作は、整数の signによって異なります:
- If 0 or 省略すると、計算はリセット not。 NONEに相当します。
- 正 If、整数はグレインに関係なく、最も高い列から始まる列を識別します。 HIGHESTPARENT は 1 に相当します。
- 負 If、整数は現在のグレインを基準にして、最下位から始まる列を識別します。 LOWESTPARENT は -1 に相当します。

value を返す

Allから行を window します。

注釈

Except テーブル関数によって追加された列の DAX、relation内の各列、matchBy が not 存在する場合、ormatchByand内の各列 partitionBymatchBy が存在する場合は、操作する現在の行を value するのに役立つ対応する外部 define が必要です。 両方に Iffrom_typeがある andto_typevalueABS、次は partitionBy 列にのみ適用されます。

  • 対応する外部列が 1 つだけ存在する If は、その value が使用されます。
  • 対応する外部列がない If:
    • WINDOW は、対応する外部列がない first 列を決定 all。
    • valuesの親コンテキスト内のこれらの列に対する既存の WINDOW の組み合わせごとに、WINDOW が評価 and、対応する行が返されます。
    • 最終的な出力 WINDOW、これらの行の union です。
  • 複数の対応する外部列がある If は、error が返されます。

テーブル関数によって追加された Ifの列 allrelationDAX、error が返されます。

If matchBy が存在 WINDOW は、matchByandpartitionBy 列を使用して行を識別しようとします。 If matchBy は、not内のすべての行を一意に識別できない andorderByand 内で指定された列 partitionByrelation 存在します。

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

空のテーブルが if返されます。

  • value orderBy or 列の対応する外部 partitionBy は、not内に存在 relation
  • window 全体がパーティションの外側にある or、window の先頭が終了した後です。

If WINDOW は、relationと同じテーブルで定義された計算列内で使用 andorderBy 省略すると、error が返されます。

If の先頭が window 行の前 first、first 行に設定されます。 同様に、if の末尾がパーティションの window 行の後にある last は、last 行に設定されます。

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

例 1 - measure

次の measure:

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]))
)

各 dayの単価の 3averageproduct を返します。 3-daywindow は、product が売上を持つ 3 日間で構成 not、必ずしも 3 日間連続 calendar 日であることに注意してください。

例 2 - measure

次の measure:

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

すべての会計 sumについて、Month 数の Yearで合計売上の実行中の Year を返します。

Year Month Year の数 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])

各 monthに沿って計算された、yearごとの累積売上合計を返します。 values 1 and -2 は、同じ結果で、HIGHESTPARENTの代わりに使用できます。

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

視覚的な計算 を する

例 4 - 視覚的な計算

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

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

各 monthに沿って計算された、quarterごとの累積売上合計を返します。

INDEX MOVINGAVERAGE OFFSET ORDERBY PARTITIONBY RANGE RANK ROWNUMBER RUNNINGSUM