operator union
Mengambil dua atau beberapa tabel dan menampilkan baris dari semuanya.
Table1 | union Table2, Table3
Sintaks
T| union [UnionParameters] [kind=inner|outer] [withsource=ColumnName] [isfuzzy=true|false] Table [,Table]...
Formulir alternatif tanpa input berisi karakter pipa:
union [UnionParameters] [kind=inner|outer] [withsource=ColumnName] [isfuzzy=true|false] Table [,Table]...
Argumen
Table:- Nama tabel, seperti
Events; atau - Ekspresi kueri yang harus diapit dengan tanda kurung, seperti
(Events | where id==42)atau(cluster("https://help.kusto.windows.net").database("Samples").table("*")); atau - Satu set tabel yang ditentukan dengan kartubebas. Misalnya,
E*akan membentuk union dari semua tabel dalam database yang namanya dimulai denganE.
- Nama tabel, seperti
kind:inner- Hasilnya memiliki subset kolom yang umum untuk semua tabel input.outer- (default) Hasilnya memiliki semua kolom yang terjadi di salah satu input. Sel yang tidak ditentukan oleh baris input diatur kenull.
withsource=ColumnName: Jika ditentukan, output akan menyertakan kolom yang disebut ColumnName yang nilainya menunjukkan tabel sumber mana yang telah berkontribusi setiap baris. Jika kueri secara efektif (setelah pencocokan kartubebas) mereferensikan tabel dari lebih dari satu database (database default selalu dihitung) nilai kolom ini akan memiliki nama tabel yang memenuhi syarat dengan database. Demikian pula persyaratan kluster dan database akan ditampilkan dalam nilai jika lebih dari satu kluster direferensikan.isfuzzy=true|false: Jikaisfuzzydiatur ketrue- mengizinkan resolusi kabur kaki union.Fuzzyberlaku untuk set sumberunion. Ini berarti bahwa saat menganalisis kueri dan mempersiapkan eksekusi, set sumber union dikurangi menjadi set referensi tabel yang ada dan dapat diakses pada saat itu. Jika setidaknya satu tabel tersebut ditemukan, kegagalan resolusi apa pun akan menghasilkan peringatan dalam hasil status kueri (satu untuk setiap referensi yang hilang), tetapi tidak akan mencegah eksekusi kueri; jika tidak ada resolusi yang berhasil - kueri akan menampilkan kesalahan. Default adalahisfuzzy=false.UnionParameters: Nol atau beberapa parameter (yang dipisahkan spasi) dalam bentuk Name
=Value yang mengontrol perilaku operasi pencocokan baris dan rencana eksekusi. Parameter berikut didukung oleh:Nama Nilai Deskripsi hint.concurrencyAngka Memberi sistem petunjuk berapa banyak subkueri bersamaan dari operator unionyang harus dijalankan secara paralel. Default: Jumlah inti CPU pada node tunggal kluster (2 hingga 16).hint.spreadNumber Memberi sistem petunjuk berapa banyak node yang harus digunakan oleh eksekusi subkueri unionbersamaan. Default: 1.
Table:- Nama tabel, seperti
Events - Ekspresi kueri yang harus diapit dengan tanda kurung, seperti
(Events | where id==42) - Satu set tabel yang ditentukan dengan kartubebas. Misalnya,
E*akan membentuk union dari semua tabel dalam database yang namanya dimulai denganE.
- Nama tabel, seperti
Catatan
Setiap kali daftar tabel diketahui, sebaiknya jangan gunakan kartubebas. Beberapa ruang kerja berisi sejumlah besar tabel yang akan menyebabkan eksekusi yang tidak efisien. Tabel juga dapat ditambahkan seiring waktu yang menyebabkan hasil tidak terduga.
kind:inner- Hasilnya memiliki subset kolom yang umum untuk semua tabel input.outer- (default) Hasilnya memiliki semua kolom yang terjadi di salah satu input. Sel yang tidak ditentukan oleh baris input diatur kenull.
withsource=ColumnName: Jika ditentukan, output akan menyertakan kolom yang disebut ColumnName yang nilainya menunjukkan tabel sumber mana yang telah berkontribusi setiap baris. Jika kueri secara efektif (setelah pencocokan kartubebas) mereferensikan tabel dari lebih dari satu database (database default selalu dihitung) nilai kolom ini akan memiliki nama tabel yang memenuhi syarat dengan database. Demikian pula kualifikasi kluster dan database akan ditampilkan dalam nilai jika lebih dari satu kluster direferensikan.isfuzzy=true|false: Jikaisfuzzydiatur ketrue- mengizinkan resolusi kabur kaki union.Fuzzyberlaku untuk set sumberunion. Ini berarti bahwa saat menganalisis kueri dan mempersiapkan eksekusi, set sumber union dikurangi menjadi set referensi tabel yang ada dan dapat diakses pada saat itu. Jika setidaknya satu tabel tersebut ditemukan, kegagalan resolusi apa pun akan menghasilkan peringatan dalam hasil status kueri (satu untuk setiap referensi yang hilang), tetapi tidak akan mencegah eksekusi kueri; jika tidak ada resolusi yang berhasil - kueri akan menampilkan kesalahan. Defaultnya adalahisfuzzy=false.
Mengembalikan
Tabel dengan baris sebanyak yang ada di semua tabel input.
Catatan
- cakupan
uniondapat menyertakan pernyataan let jika dikaitkan dengan kata kunci view - cakupan
uniontidak akan menyertakan fungsi. Untuk menyertakan fungsi dalam cakupan union, tentukan pernyataan let dengan kata kunci view - Jika input
unionadalah tabel (bukan ekspresi tabular), danuniondiikuti oleh operator where, untuk performa yang lebih baik, pertimbangkan mengganti keduanya dengan find. Perhatikan skema output berbeda yang dihasilkan oleh operatorfind. isfuzzy=truehanya berlaku untuk fase resolusi sumberunion. Setelah set tabel sumber ditentukan, kemungkinan kegagalan kueri tambahan tidak akan ditekan.- Saat menggunakan
outer union, hasilnya memiliki semua kolom yang terjadi di input mana pun, satu kolom untuk setiap nama dan jenis peristiwa. Ini berarti bahwa jika kolom muncul dalam beberapa tabel dan memiliki beberapa jenis, kolom tersebut akan memiliki kolom yang sesuai untuk setiap jenis dalam hasilunion. Nama kolom ini akan diakhiri dengan '_' diikuti oleh jenis kolom asal. - Tidak ada jaminan urutan di mana kaki union akan muncul (tetapi jika setiap kaki memiliki operator
order by, maka setiap kaki akan diurutkan). - Dua pernyataan apa pun harus dipisahkan oleh titik koma.
- cakupan
uniondapat menyertakan pernyataan let jika dikaitkan dengan kata kunci view - cakupan
uniontidak akan menyertakan fungsi. Untuk menyertakan fungsi dalam cakupan union - tentukan pernyataan let dengan kata kunci view - Jika input
unionadalah tabel (bukan ekspresi tabular), danuniondiikuti oleh operator where, pertimbangkan mengganti keduanya dengan find. Harap perhatikan skema output berbeda yang dihasilkan oleh operatorfind. isfuzzy=truehanya berlaku untuk fase resolusi sumberunion. Setelah set tabel sumber ditentukan, kemungkinan kegagalan kueri tambahan tidak akan ditekan.- Saat menggunakan
outer union, hasilnya memiliki semua kolom yang terjadi di input mana pun, satu kolom untuk setiap nama dan jenis peristiwa. Ini berarti bahwa jika kolom muncul dalam beberapa tabel dan memiliki beberapa jenis, kolom tersebut akan memiliki kolom yang sesuai untuk setiap jenis dalam hasilunion. Nama kolom ini akan diakhiri dengan '_' diikuti oleh jenis kolom asal. - Dua pernyataan apa pun harus dipisahkan oleh titik koma.
Contoh: Tabel dengan string dalam nama atau kolom
union K* | where * has "Kusto"
Baris dari semua tabel dalam database saat ini yang namanya dimulai dengan K, dan di kolom mana pun yang menyertakan kata Kusto.
Contoh: Jumlah yang berbeda
union withsource=SourceTable kind=outer Query, Command
| where Timestamp > ago(1d)
| summarize dcount(UserId)
Jumlah pengguna berbeda yang telah menghasilkan peristiwa Query atau peristiwa Command selama sehari terakhir. Hasilnya, kolom 'SourceTable' akan menunjukkan "Kueri" atau "Perintah".
Query
| where Timestamp > ago(1d)
| union withsource=SourceTable kind=outer
(Command | where Timestamp > ago(1d))
| summarize dcount(UserId)
Versi yang lebih efisien ini menghasilkan hasil yang sama. Ini menyaring setiap tabel sebelum membuat union.
Contoh: Menggunakan isfuzzy=true
// Using union isfuzzy=true to access non-existing view:
let View_1 = view () { print x=1 };
let View_2 = view () { print x=1 };
let OtherView_1 = view () { print x=1 };
union isfuzzy=true
(View_1 | where x > 0),
(View_2 | where x > 0),
(View_3 | where x > 0)
| count
| Count |
|---|
| 2 |
Mengamati Status Kueri - peringatan berikut ditampilkan: Failed to resolve entity 'View_3'
// Using union isfuzzy=true and wildcard access:
let View_1 = view () { print x=1 };
let View_2 = view () { print x=1 };
let OtherView_1 = view () { print x=1 };
union isfuzzy=true View*, SomeView*, OtherView*
| count
| Menghitung |
|---|
| 3 |
Mengamati Status Kueri - peringatan berikut ditampilkan: Failed to resolve entity 'SomeView*'
Contoh: ketidakcocokan jenis kolom sumber
let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
union withsource=TableName View_1, View_2
| TableName | x_long | x_int |
|---|---|---|
| View_1 | 1 | |
| View_2 | 2 |
let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
let View_3 = view () { print x_long=3 };
union withsource=TableName View_1, View_2, View_3
| TableName | x_long1 | x_int | x_long |
|---|---|---|---|
| View_1 | 1 | ||
| View_2 | 2 | ||
| View_3 | 3 |
Kolom x dari View_1 menerima akhiran _long, dan sebagai kolom bernama x_long sudah ada dalam skema hasil, nama kolom yang de-diduplikasi, menghasilkan kolom baru- x_long1