Bagikan melalui


ROWNUMBER

Berlaku untuk: Kolom terhitung Tabel terhitung Ukur perhitungan Visual

Mengembalikan peringkat unik untuk konteks saat ini dalam partisi yang ditentukan, diurutkan menurut urutan yang ditentukan. Jika kecocokan tidak dapat ditemukan, maka rownumber kosong.

Sintaks

ROWNUMBER ( [<relation> or <axis>][, <orderBy>][, <blanks>][, <partitionBy>][, <matchBy>][, <reset>] )

Parameter

Term Definisi
relation (Opsional) Ekspresi tabel tempat baris output dikembalikan.
Jika ditentukan, semua kolom dalam <orderBy> dan <partitionBy> harus berasal darinya.
Jika dihilangkan:
- <orderBy> harus ditentukan secara eksplisit.
- Semua <kolom orderBy> dan <partitionBy> harus sepenuhnya memenuhi syarat 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 kolom 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.
Nilai yang didukung adalah:
  • DEFAULT (nilai 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.
  • PERTAMA, kosong selalu diurutkan pada awal, terlepas dari urutan pengurutan naik atau turun.
  • TERAKHIR, kosong selalu diurutkan di akhir, terlepas dari urutan pengurutan naik atau turun.

Catatan, ketika <mengosongkan> parameter dan kosong dalam fungsi ORDERBY() pada ekspresi individual ditentukan, <kosong> pada ekspresi orderBy individual lebih diprioritaskan untuk ekspresi orderBy yang relevan, dan ekspresi orderBy tanpa <kosong> yang ditentukan akan mematuhi <parameter kosong> pada fungsi Jendela induk.
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

Nomor rownumber untuk konteks saat ini.

Keterangan

Setiap <kolom orderBy>, <partitionBy>, dan <matchBy> harus memiliki nilai luar yang sesuai untuk membantu menentukan baris saat ini untuk dioperasikan, dengan perilaku berikut:

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

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

  • ROWNUMBER akan mencoba menemukan jumlah kolom tambahan paling sedikit yang diperlukan untuk mengidentifikasi setiap baris secara unik.
  • Jika kolom tersebut dapat ditemukan, ROWNUMBER akan
    • Cobalah untuk menemukan jumlah kolom tambahan paling sedikit yang diperlukan untuk mengidentifikasi setiap baris secara unik.
    • Tambahkan kolom baru ini secara otomatis ke <klausa orderBy> .
    • Urutkan setiap partisi menggunakan kumpulan kolom orderBy baru ini.
  • Jika kolom tersebut tidak dapat ditemukan dan fungsi mendeteksi dasi saat runtime, kesalahan akan ditampilkan.

<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 - kolom terhitung

Kueri DAX berikut:

EVALUATE
ADDCOLUMNS(
    'DimGeography',
    "UniqueRank",
    ROWNUMBER(
    	'DimGeography',
    	ORDERBY(
    		'DimGeography'[StateProvinceName], desc,
    		'DimGeography'[City], asc),
    	PARTITIONBY(
    		'DimGeography'[EnglishCountryRegionName])))
ORDER BY [EnglishCountryRegionName] asc, [StateProvinceName] desc, [City] asc

Mengembalikan tabel yang secara unik memberi peringkat setiap geografi dengan EnglishCountryRegionName yang sama, menurut StateProvinceName dan City mereka.

Contoh 2 - perhitungan visual

Kueri DAX penghitungan visual berikut:

SalesRankWithinYear = ROWNUMBER(ORDERBY([SalesAmount], DESC), PARTITIONBY([CalendarYear]))

SalesRankAllHistory = ROWNUMBER(ORDERBY([SalesAmount], DESC))

Buat dua kolom yang secara unik memberi peringkat setiap bulan berdasarkan total penjualan, baik dalam setiap tahun, dan seluruh riwayat.

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

Perhitungan visual DAX

INDEX
ORDERBY
PARTITIONBY
WINDOW
RANK