operator top-nested
Berlaku untuk: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Operator top-nested
melakukan agregasi hierarkis dan pemilihan nilai.
Bayangkan Anda memiliki tabel dengan informasi penjualan seperti wilayah, tenaga penjualan, dan jumlah yang dijual. Operator top-nested
dapat membantu Anda menjawab pertanyaan kompleks, seperti "Apa lima wilayah teratas berdasarkan penjualan, dan siapa tiga tenaga penjualan teratas di masing-masing wilayah tersebut?"
Data sumber dipartisi berdasarkan kriteria yang ditetapkan dalam klausa pertama top-nested
, seperti wilayah. Selanjutnya, operator memilih rekaman teratas di setiap partisi menggunakan agregasi, seperti menambahkan jumlah penjualan. Setiap klausa berikutnya top-nested
menyempurnakan partisi yang dibuat oleh klausul sebelumnya, membuat hierarki grup yang lebih tepat.
Hasilnya adalah tabel dengan dua kolom per klausa. Satu kolom menyimpan nilai partisi, seperti wilayah, sementara kolom lainnya menyimpan hasil perhitungan agregasi, seperti jumlah penjualan.
Sintaks
T top-nested
|
[ N ] of
Expr [with
=
others
ConstExpr] by
Agregasi [asc
| desc
] [,
top-nested
... ]
Pelajari selengkapnya tentang konvensi sintaksis.
Parameter
Nama | Tipe | Wajib | Deskripsi |
---|---|---|---|
T | string |
✔️ | Ekspresi tabular input. |
N | int |
Jumlah nilai teratas yang akan dikembalikan untuk tingkat hierarki ini. Jika dihilangkan, semua nilai berbeda dikembalikan. | |
Expr | string |
✔️ | Ekspresi atas rekaman input yang menunjukkan nilai mana yang akan dikembalikan untuk tingkat hierarki ini. Biasanya, ini mengacu pada kolom dari T atau melibatkan perhitungan seperti bin() pada kolom. Secara opsional, atur nama kolom output sebagai Name = Expr. |
ConstExpr | string |
Jika ditentukan, untuk setiap tingkat hierarki, satu rekaman ditambahkan dengan nilai yang merupakan agregasi atas semua rekaman yang tidak berhasil ke bagian atas. | |
Agregasi | string |
Fungsi agregasi diterapkan ke rekaman dengan nilai Expr yang sama. Hasilnya menentukan rekaman teratas. Lihat Fungsi agregasi yang didukung. Secara opsional, tetapkan nama kolom output sebagai Agregasi Nama = . |
Fungsi agregasi yang didukung
Fungsi agregasi berikut didukung:
Catatan
Setiap kombinasi aljabar dari agregasi juga didukung.
Mengembalikan
Tabel dengan dua kolom untuk setiap klausa. Satu kolom berisi nilai unik yang dihitung menggunakan Expr, dan kolom lainnya memperlihatkan hasil yang diperoleh dari perhitungan Agregasi .
with
others
Menggunakan klausa
top-nested
Menggunakan operator dengan with
others
menambahkan kemampuan untuk melihat konten teratas Anda di kontekstualisasi dalam himpunan data yang lebih luas. Mengevaluasi data Anda dengan cara ini sangat berharga saat merender data secara visual.
Sertakan data dari kolom lain
Hanya kolom yang ditentukan sebagai top-nested
klausa Expr yang ditampilkan dalam tabel output.
Untuk menyertakan semua nilai kolom pada tingkat tertentu:
- Jangan tentukan nilai N.
- Gunakan nama kolom sebagai nilai Expr.
- Gunakan
Ignore=max(1)
sebagai nilai Agregasi. - Hapus kolom yang tidak perlu
Ignore
dengan project-away.
Misalnya, lihat Peristiwa terbaru per status dengan data kolom lainnya.
Pertimbangan performa
Jumlah rekaman dapat tumbuh secara eksponensial dengan jumlah top-nested
klausul, dan mencatat pertumbuhan bahkan lebih cepat jika parameter N tidak ditentukan. Operator ini dapat menggunakan sejumlah besar sumber daya.
Jika distribusi agregasi tidak teratur, batasi jumlah nilai berbeda untuk dikembalikan dengan menentukan N. Kemudian, gunakan with
others
=
klausul ConstExpr untuk merasakan berat semua kasus lainnya.
Contoh
Status rusak teratas, jenis peristiwa, dan lokasi akhir berdasarkan kerusakan properti
Kueri berikut mempartisi StormEvents
tabel menurut State
kolom dan menghitung total kerusakan properti untuk setiap status. Kueri memilih dua status teratas dengan jumlah kerusakan properti terbesar. Dalam dua status teratas ini, kueri mengelompokkan data menurut EventType
dan memilih tiga jenis peristiwa teratas dengan kerusakan terbanyak. Kemudian kueri mengelompokkan data berdasarkan EndLocation
dan memilih EndLocation
dengan kerusakan tertinggi. Hanya satu EndLocation
nilai yang muncul dalam hasil, mungkin karena sifat besar peristiwa badai atau tidak mendokumentasikan lokasi akhir.
StormEvents // Data source.
| top-nested 2 of State by sum(DamageProperty), // Top 2 States by total damaged property.
top-nested 3 of EventType by sum(DamageProperty), // Top 3 EventType by total damaged property for each State.
top-nested 1 of EndLocation by sum(DamageProperty) // Top 1 EndLocation by total damaged property for each EventType and State.
| project State, EventType, EndLocation, StateTotalDamage = aggregated_State, EventTypeTotalDamage = aggregated_EventType, EndLocationDamage = aggregated_EndLocation
Hasil
Provinsi | EventType | EndLocation | StateTotalDamage | EventTypeTotalDamage | EndLocationDamage |
---|---|---|---|---|---|
CALIFORNIA | Wildfire | 1445937600 | 1326315000 | 1326315000 | |
CALIFORNIA | HighWind | 1445937600 | 61320000 | 61320000 | |
CALIFORNIA | DebrisFlow | 1445937600 | 48000000 | 48000000 | |
OKLAHOMA | Badai Es | 915470300 | 826000000 | 826000000 | |
OKLAHOMA | Musim DinginStorm | 915470300 | 40027000 | 40027000 | |
OKLAHOMA | Banjir | PERDAGANGAN | 915470300 | 21485000 | 20000000 |
Lima status teratas dengan kerusakan with
others
properti dikelompokkan
Contoh berikut menggunakan top-nested
operator untuk mengidentifikasi lima status teratas dengan kerusakan properti terbanyak with
others
dan menggunakan klausul untuk mengelompokkan properti yang rusak untuk semua status lainnya. Kemudian memvisualisasikan properti yang rusak untuk lima status teratas dan semua status lainnya sebagai piechart
menggunakan render
perintah .
StormEvents
| top-nested 5 of State with others="OtherStates" by sum(DamageProperty)
| render piechart
Hasil
Peristiwa terbaru per status dengan data kolom lainnya
Kueri berikut mengambil dua peristiwa terbaru untuk setiap status AS dengan detail peristiwa yang relevan. Ini menggunakan max(1)
dalam kolom tertentu untuk menyebarluaskan data tanpa menggunakan logika pemilihan berlapis atas. Kolom agregasi yang dihasilkan Ignore
dihapus menggunakan project-away
.
StormEvents
| top-nested of State by Ignore0=max(1), // Partition the data by each unique value of state.
top-nested 2 of StartTime by Ignore1=max(StartTime), // Get the 2 most recent events in each state.
top-nested of EndTime by Ignore2=max(1), // Append the EndTime for each event.
top-nested of EpisodeId by Ignore3=max(1) // Append the EpisodeId for each event.
| project-away Ignore* // Remove the unnecessary aggregation columns.
| order by State asc, StartTime desc // Sort results alphabetically and chronologically.
Rekaman terbaru per identitas dengan data kolom lainnya
Contoh berikut top-nested
mengekstrak rekaman terbaru per identitas dan membangun konsep yang diperkenalkan dalam contoh sebelumnya. Klausul pertama top-nested
mempartisi data dengan nilai berbeda dari penggunaan id
Ignore0=max(1)
sebagai tempat penampung. Untuk setiap id
, ini mengidentifikasi dua rekaman terbaru berdasarkan timestamp
. Informasi lain ditambahkan menggunakan top-nested
operator tanpa menentukan hitungan dan penggunaan Ignore2=max(1)
sebagai tempat penampung. Terakhir, kolom agregasi yang tidak perlu dihapus menggunakan project-away
operator.
datatable(id: string, timestamp: datetime, otherInformation: string) // Create a source datatable.
[
"Barak", datetime(2015-01-01), "1",
"Barak", datetime(2016-01-01), "2",
"Barak", datetime(2017-01-20), "3",
"Donald", datetime(2017-01-20), "4",
"Donald", datetime(2017-01-18), "5",
"Donald", datetime(2017-01-19), "6"
]
| top-nested of id by Ignore0=max(1), // Partition the data by each unique value of id.
top-nested 2 of timestamp by Ignore1=max(timestamp), // Get the 2 most recent events for each state.
top-nested of otherInformation by Ignore2=max(1) // Append otherInformation for each event.
| project-away Ignore0, Ignore1, Ignore2 // Remove the unnecessary aggregation columns.
Hasil
id | rentang waktu | otherInformation |
---|---|---|
Barak | 2016-01-01T00:00:00Z | 2 |
Donald | 2017-01-19T00:00:00Z | 6 |
Barak | 2017-01-20T00:00:00Z | 3 |
Donald | 2017-01-20T00:00:00Z | 4 |