Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Berlaku untuk:
Kolom terhitung
Tabel
terhitungUkur
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
| Istilah | Definisi |
|---|---|
from |
Menunjukkan di mana jendela dimulai. Ini bisa berupa ekspresi DAX apa pun yang mengembalikan nilai skalar.
Perilaku bergantung pada parameter from_type: - Jika from_type adalah REL, jumlah baris yang akan dikembalikan (nilai negatif) atau maju (nilai positif) dari baris saat ini untuk mendapatkan baris pertama di jendela.
- Jika from_type adalah ABS, dan from positif, itu adalah posisi awal jendela dari awal partisi. Pengindeksan berbasis 1 dan 0 ditafsirkan sebagai 1. Misalnya, 0 dan 1 berarti jendela dimulai dari awal partisi. Jika from negatif, itu adalah posisi awal jendela dari akhir partisi. -1 berarti baris terakhir dalam partisi. |
from_type |
Memodifikasi perilaku parameter from. Nilai yang mungkin ABS (absolut) dan REL (relatif). Defaultnya adalah REL. |
to |
Sama seperti from, tetapi menunjukkan akhir jendela. Baris terakhir disertakan dalam jendela. |
to_type |
Sama seperti from_type, tetapi memodifikasi perilaku to. |
relation |
(Opsional) Ekspresi tabel tempat baris output dikembalikan. Jika digunakan dalam perhitungan visual, parameter ini menerima sumbu dalam bentuk visual.
Jika ditentukan, semua kolom di partitionBy harus berasal dari kolom atau tabel terkait.
Jika dihilangkan: - Anda harus menentukan orderBy secara eksplisit.- Semua orderBy dan partitionBy ekspresi harus sepenuhnya memenuhi syarat nama kolom dan berasal dari satu tabel.
- Default ke ALLSELECTED() dari semua kolom di orderBy dan partitionBy. |
orderBy |
(Opsional) Klausa ORDERBY() yang berisi ekspresi yang menentukan bagaimana setiap partisi diurutkan.
Jika dihilangkan: - Anda harus menentukan relation secara eksplisit.
- Default untuk mengurutkan berdasarkan setiap kolom di relation yang belum ditentukan dalam partitionBy. |
blanks |
(Opsional) Enumerasi yang menentukan cara menangani nilai kosong saat mengurutkan relation atau axis.
Nilai yang didukung adalah:
Saat Anda menentukan blanks parameter dan kosong dalam ORDERBYfungsi () pada ekspresi individual, blanks pada ekspresi orderBy individual lebih diprioritaskan untuk ekspresi orderBy yang relevan. Ekspresi OrderBy tanpa blanks ditentukan menghormati blanks parameter pada fungsi induk. |
partitionBy |
(Opsional) Klausa relation diperlakukan sebagai partisi tunggal. |
matchBy |
(Opsional) Klausa |
reset |
(Opsional) Hanya tersedia dalam perhitungan visual. Menunjukkan apakah perhitungan diatur ulang, dan pada tingkat hierarki kolom bentuk visual mana. Nilai yang diterima adalah: referensi bidang ke kolom dalam bentuk visual saat ini, NONE (default), 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 biji-bijian tertinggi dan independen. HIGHESTPARENT setara dengan 1.
- Jika negatif, bilangan bulat mengidentifikasi kolom mulai dari terendah, relatif terhadap butir saat ini. LOWESTPARENT setara dengan -1. |
Mengembalikan nilai
Semua baris dari jendela.
Keterangan
Kecuali untuk kolom yang ditambahkan oleh DAX fungsi tabel, setiap kolom di relation (saat matchBy tidak ada), atau setiap kolom di matchBy dan partitionBy (saat 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, hal berikut ini hanya berlaku untuk partitionBy kolom:
- Jika ada satu kolom luar yang sesuai, nilainya akan digunakan.
- Jika tidak ada kolom luar yang sesuai:
- WINDOW pertama-tama menentukan semua kolom yang tidak memiliki kolom luar yang sesuai.
- Untuk setiap kombinasi nilai yang ada untuk kolom ini dalam WINDOWkonteks induk, WINDOW dievaluasi, dan baris yang sesuai dikembalikan.
- WINDOWOutput akhir adalah persatuan baris ini.
- Jika ada lebih dari satu kolom luar terkait, kesalahan akan ditampilkan.
Jika semua kolom relationditambahkan oleh fungsi tabel DAX, kesalahan akan ditampilkan.
Jika matchBy ada, WINDOW coba gunakan matchBy kolom dan partitionBy untuk mengidentifikasi baris.
Jika matchBy tidak ada dan kolom yang ditentukan di dalam orderBy dan partitionBy tidak dapat mengidentifikasi setiap baris secara unik di relation:
- WINDOW mencoba menemukan jumlah kolom tambahan paling sedikit yang diperlukan untuk mengidentifikasi setiap baris secara unik.
- Jika kolom tersebut dapat ditemukan, WINDOW 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
orderByataupartitionBytidak ada di dalamrelation. - Seluruh jendela berada di luar partisi, atau awal jendela setelah selesai.
Jika Anda menggunakan WINDOW dalam kolom terhitung yang ditentukan pada tabel yang sama dengan relation, dan orderBy dihilangkan, kesalahan akan ditampilkan.
Jika awal jendela adalah sebelum baris pertama, jendela diatur ke baris pertama. Demikian pula, jika akhir jendela adalah setelah baris terakhir partisi, itu diatur ke baris terakhir.
Anda hanya dapat menggunakan reset dalam perhitungan visual, dan Anda tidak dapat menggunakannya dalam kombinasi dengan orderBy atau partitionBy. Jika reset ada, Anda dapat menentukan axis tetapi tidak relation.
Jika nilai adalah absolut (bilangan reset bulat positif, HIGHESTPARENT, atau referensi bidang) dan perhitungan dievaluasi pada atau di atas tingkat target dalam hierarki, perhitungan diatur ulang untuk setiap elemen individu. Artinya, fungsi dievaluasi dalam partisi yang hanya berisi elemen tertentu.
Contoh dalam artikel ini dapat digunakan dengan contoh model Power BI Desktop Adventure Works DW 2020. Untuk mendapatkan model, lihat DAX contoh model.
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. 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 dapat digunakan alih-alih HIGHESTPARENT, dengan hasil yang sama.
Cuplikan layar di bawah ini memperlihatkan matriks visual dan ekspresi perhitungan visual:
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.
Nilai LOWESTPARENT dapat digunakan alih-alih -1, dengan hasil yang sama.