Bagikan melalui


WINDOW

Berlaku untuk: Kolom terhitung Tabel terhitung Ukur perhitungan Visual

Mengembalikan beberapa baris yang diposisikan dalam interval tertentu.

Sintaks

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

Parameter

Term Definisi
dari Menunjukkan di mana jendela dimulai. Ini bisa berupa ekspresi DAX apa pun yang mengembalikan nilai skalar.
Perilaku tergantung pada <parameter from_type> :
- Jika <from_type> adalah REL, jumlah baris yang akan kembali (nilai negatif) atau maju (nilai positif) dari baris saat ini untuk mendapatkan baris pertama di jendela.
- Jika <from_type> adalah ABS, dan <dari> positif, maka itu adalah posisi awal jendela dari awal partisi. Pengindeksan berbasis 1. Misalnya, 1 berarti jendela dimulai dari awal partisi. Jika <dari> negatif, maka itu adalah posisi awal jendela dari akhir partisi. -1 berarti baris terakhir dalam partisi.
from_type Memodifikasi perilaku dari <> parameter. Nilai yang mungkin adalah ABS (absolut) dan REL (relatif). Defaultnya adalah REL.
ke Sama seperti <dari>, tetapi menunjukkan akhir jendela. Baris terakhir disertakan dalam jendela.
to_type Sama seperti <from_type, tetapi memodifikasi perilakunya<>.>
relation (Opsional) Ekspresi tabel tempat baris output dikembalikan.
Jika ditentukan, semua kolom di <partitionBy> harus berasal dari kolom atau tabel terkait.
Jika dihilangkan:
- <orderBy> harus ditentukan secara eksplisit.
- Semua <ekspresi orderBy> dan <partitionBy> harus sepenuhnya memenuhi syarat nama kolom dan berasal dari satu tabel.
- Default ke ALLSELECTED() dari semua kolom dalam <orderBy> dan <partitionBy>.
sumbu (Opsional) Sumbu dalam bentuk visual. Hanya tersedia dalam perhitungan visual, dan menggantikan <relasi>.
orderBy (Opsional) Klausa ORDERBY() yang berisi ekspresi yang menentukan bagaimana setiap partisi diurutkan.
Jika dihilangkan:
- <relasi> harus ditentukan secara eksplisit.
- Default untuk mengurutkan oleh setiap kolom dalam <hubungan> yang belum ditentukan dalam <partitionBy>.
Kosong (Opsional) Enumerasi yang menentukan cara menangani nilai kosong saat mengurutkan.
Parameter ini dicadangkan untuk digunakan di masa mendatang.
Saat ini, satu-satunya nilai yang didukung adalah DEFAULT, di mana perilaku untuk nilai numerik adalah nilai kosong diurutkan antara nilai nol dan negatif. Perilaku untuk string adalah nilai kosong diurutkan sebelum semua string, termasuk string kosong.
partitionBy (Opsional) Klausa PARTITIONBY() yang berisi kolom yang menentukan bagaimana <hubungan> dipartisi. Jika dihilangkan, <relasi> diperlakukan sebagai partisi tunggal.
matchBy (Opsional) Klausa MATCHBY() yang berisi kolom yang menentukan cara mencocokkan data dan mengidentifikasi baris saat ini.
mengatur ulang (Opsional) Hanya tersedia dalam perhitungan visual. Menunjukkan apakah perhitungan diatur ulang, dan pada tingkat hierarki kolom bentuk visual mana. Nilai yang diterima adalah: NONE, LOWESTPARENT, HIGHESTPARENT, atau bilangan bulat. Perilaku tergantung pada tanda bilangan bulat:
- Jika nol atau dihilangkan, perhitungan tidak direset. Setara dengan NONE.
- Jika positif, bilangan bulat mengidentifikasi kolom mulai dari yang tertinggi, terlepas dari biji-bijian. HIGHESTPARENT setara dengan 1.
- Jika negatif, bilangan bulat mengidentifikasi kolom mulai dari terendah, relatif terhadap butir saat ini. LOWESTPARENT setara dengan -1.

Nilai hasil

Semua baris dari jendela.

Keterangan

Kecuali untuk kolom yang ditambahkan oleh fungsi tabel DAX, setiap kolom dalam <hubungannya>, ketika <matchBy> tidak ada, atau setiap kolom di <matchBy> dan <partitionBy>, ketika <matchBy> ada, harus memiliki nilai luar yang sesuai untuk membantu menentukan baris saat ini yang akan dioperasikan. Jika <from_type> dan <to_type> keduanya memiliki nilai ABS, maka berikut ini hanya berlaku untuk <kolom partitionBy> :

  • Jika ada tepat satu kolom luar yang sesuai, nilainya akan digunakan.
  • Jika tidak ada kolom luar yang sesuai:
    • WINDOW pertama-tama akan menentukan semua kolom yang tidak memiliki kolom luar yang sesuai.
    • Untuk setiap kombinasi nilai yang ada untuk kolom ini dalam konteks induk WINDOW, WINDOW dievaluasi, dan baris yang sesuai dikembalikan.
    • Output akhir WINDOW adalah persatuan baris ini.
  • Jika ada lebih dari satu kolom luar yang sesuai, kesalahan akan ditampilkan.

Jika semua <kolom relasi> ditambahkan oleh fungsi tabel DAX, kesalahan akan ditampilkan.

Jika <ada matchBy> , WINDOW akan mencoba menggunakan <kolom matchBy> dan <partitionBy> untuk mengidentifikasi baris.
Jika <matchBy> tidak ada dan kolom yang ditentukan dalam <orderBy> dan <partitionBy> tidak dapat mengidentifikasi setiap baris secara unik dalam <hubungannya>, maka:

  • WINDOW akan mencoba menemukan jumlah kolom tambahan paling sedikit yang diperlukan untuk mengidentifikasi setiap baris secara unik.
  • Jika kolom tersebut dapat ditemukan, WINDOW akan secara otomatis menambahkan kolom baru ini ke <orderBy>, dan setiap partisi diurutkan menggunakan kumpulan kolom orderBy baru ini.
  • Jika kolom tersebut tidak dapat ditemukan, kesalahan akan ditampilkan.

Tabel kosong dikembalikan jika:

  • Nilai luar yang <sesuai dari kolom orderBy> atau <partitionBy> tidak ada dalam <relasi>.
  • Seluruh jendela berada di luar partisi, atau awal jendela setelah berakhir.

Jika WINDOW digunakan dalam kolom terhitung yang ditentukan pada tabel yang sama dengan <relasi>, dan <orderBy> dihilangkan, kesalahan akan ditampilkan.

Jika awal jendela ternyata sebelum baris pertama, maka diatur ke baris pertama. Demikian pula, jika akhir jendela adalah setelah baris terakhir partisi, maka itu diatur ke baris terakhir.

<reset> hanya dapat digunakan dalam perhitungan visual, dan tidak dapat digunakan dalam kombinasi dengan <orderBy> atau <partitionBy>. Jika <reset> ada, <sumbu> dapat ditentukan tetapi <relasi> tidak dapat.

Contoh 1 - pengukuran

Ukuran berikut:

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

Mengembalikan rata-rata harga satuan 3 hari untuk setiap produk. Perhatikan jendela 3 hari terdiri dari tiga hari di mana produk memiliki penjualan, belum tentu tiga hari kalender berturut-turut.

Contoh 2 - pengukuran

Ukuran berikut:

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

Mengembalikan jumlah berjalan untuk Total Penjualan menurut Jumlah Bulan Tahun, memulai ulang untuk setiap Tahun Fiskal:

Tahun Jumlah Bulan Tahun Jumlah Penjualan 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

Contoh 3 - perhitungan visual

Kueri DAX penghitungan visual berikut:

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

Mengembalikan total penjualan kumulatif menurut bulan, dihitung sepanjang setiap tahun. Nilai 1 dan -2 dapat digunakan alih-alih HIGHESTPARENT, dengan hasil yang sama.

Cuplikan layar di bawah ini memperlihatkan matriks visual dan ekspresi perhitungan visual:

Perhitungan visual DAX

Contoh 4 - perhitungan visual

Kueri DAX penghitungan visual berikut:

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

Mengembalikan total penjualan kumulatif menurut bulan, dihitung sepanjang setiap kuartal.

INDEX
MOVINGAVERAGE
OFFSET
ORDERBY
PARTITIONBY
LINGKUP
RANK
ROWNUMBERRUNNINGSUM