operator union

Mengambil dua atau beberapa tabel dan menampilkan baris dari semuanya.

Sintaks

[ T| ] union [ UnionParameters ] [kind=|outerinner] [withsource=ColumnName] [isfuzzy=|truefalse] Tabel

Pelajari selengkapnya tentang konvensi sintaksis.

Catatan

Operasi union operator dapat diubah dengan mengatur best_effort properti permintaan ke true, menggunakan pernyataan yang ditetapkan atau melalui properti permintaan klien. Ketika properti ini diatur ke true, union operator akan mengabaikan resolusi fuzzy dan kegagalan konektivitas untuk menjalankan salah satu sub-ekspresi yang "disatukan" dan menghasilkan peringatan dalam hasil status kueri.

Parameter

Nama Jenis Diperlukan Deskripsi
T string Ekspresi tabular input.
UnionParameters string Nol atau lebih parameter yang dipisahkan spasi dalam bentukNilaiNama= yang mengontrol perilaku operasi pencocokan baris dan rencana eksekusi. Lihat parameter union yang didukung.
kind string Baik inner atau outer. inner menyebabkan hasilnya memiliki subset kolom yang umum untuk semua tabel input. outer menyebabkan hasilnya memiliki semua kolom yang terjadi di salah satu input. Sel yang tidak ditentukan oleh baris input diatur ke null. Default adalah outer.

Dengan outer, hasilnya memiliki semua kolom yang terjadi di salah satu input, satu kolom untuk setiap nama dan jenis kemunculan. Ini berarti bahwa jika kolom muncul di beberapa tabel dan memiliki beberapa jenis, kolom yang sesuai untuk setiap jenis dalam hasil serikat. Nama kolom ini dia akhiri dengan '_' diikuti dengan jenis kolom asal.
withsource=ColumnName string Jika ditentukan, output menyertakan kolom yang disebut ColumnName yang nilainya menunjukkan tabel sumber mana yang telah berkontribusi setiap baris. Jika kueri secara efektif mereferensikan tabel dari lebih dari satu database termasuk database default, maka nilai kolom ini memiliki nama tabel yang memenuhi syarat dengan database. kualifikasi kluster dan database ada dalam nilai jika lebih dari satu kluster dirujuk.
isfuzzy bool Jika diatur ke true, memungkinkan resolusi fuzzy kaki serikat. Kumpulan sumber gabungan dikurangi ke kumpulan referensi tabel yang ada dan dapat diakses pada saat itu saat menganalisis kueri dan mempersiapkan eksekusi. Jika setidaknya satu tabel tersebut ditemukan, kegagalan resolusi apa pun menghasilkan peringatan dalam hasil status kueri, tetapi tidak akan mencegah eksekusi kueri. Jika tidak ada resolusi yang berhasil, kueri mengembalikan kesalahan. Default adalah false.

isfuzzy=true hanya berlaku untuk fase resolusi sumber union. Setelah kumpulan tabel sumber ditentukan, kemungkinan kegagalan kueri tambahan tidak akan ditekan.
Tabel string Satu atau beberapa referensi tabel yang dipisahkan koma, ekspresi kueri yang diapit dengan tanda kurung, atau sekumpulan tabel yang ditentukan dengan kartubebas. Misalnya, E* akan membentuk union dari semua tabel dalam database yang namanya dimulai dengan E.

Parameter union yang didukung

Nama Jenis Diperlukan Deskripsi
hint.concurrency int Memberi sistem petunjuk berapa banyak subkueri bersamaan dari operator union yang harus dijalankan secara paralel. Defaultnya adalah jumlah inti CPU pada simpul tunggal kluster (2 hingga 16).
hint.spread int Memberi sistem petunjuk berapa banyak node yang harus digunakan oleh eksekusi subkueri union bersamaan. Defaultnya adalah 1.
Nama Jenis Diperlukan Deskripsi
T string Ekspresi tabular input.
kind string Baik inner atau outer. inner menyebabkan hasilnya memiliki subset kolom yang umum untuk semua tabel input. outer menyebabkan hasilnya memiliki semua kolom yang terjadi di salah satu input. Sel yang tidak ditentukan oleh baris input diatur ke null. Default adalah outer.

Dengan outer, hasilnya memiliki semua kolom yang terjadi di salah satu input, satu kolom untuk setiap nama dan jenis kemunculan. Ini berarti bahwa jika kolom muncul di beberapa tabel dan memiliki beberapa jenis, kolom yang sesuai untuk setiap jenis dalam hasil serikat. Nama kolom ini dia akhiri dengan '_' diikuti dengan jenis kolom asal.
withsource=ColumnName string Jika ditentukan, output menyertakan kolom yang disebut ColumnName yang nilainya menunjukkan tabel sumber mana yang telah berkontribusi setiap baris. Jika kueri secara efektif mereferensikan tabel dari lebih dari satu database termasuk database default, maka nilai kolom ini memiliki nama tabel yang memenuhi syarat dengan database. kualifikasi kluster dan database ada dalam nilai jika lebih dari satu kluster dirujuk.
isfuzzy bool Jika diatur ke true, memungkinkan resolusi fuzzy kaki serikat. Kumpulan sumber gabungan dikurangi ke kumpulan referensi tabel yang ada dan dapat diakses pada saat itu saat menganalisis kueri dan mempersiapkan eksekusi. Jika setidaknya satu tabel tersebut ditemukan, kegagalan resolusi apa pun menghasilkan peringatan dalam hasil status kueri, tetapi tidak akan mencegah eksekusi kueri. Jika tidak ada resolusi yang berhasil, kueri mengembalikan kesalahan. Namun, dalam kueri lintas ruang kerja dan lintas aplikasi, jika salah satu ruang kerja atau aplikasi tidak ditemukan, kueri akan gagal. Default adalah false.

isfuzzy=true hanya berlaku untuk fase resolusi sumber union. Setelah kumpulan tabel sumber ditentukan, kemungkinan kegagalan kueri tambahan tidak akan ditekan.
Tabel string Satu atau beberapa referensi tabel yang dipisahkan koma, ekspresi kueri yang diapit dengan tanda kurung, atau sekumpulan tabel yang ditentukan dengan kartubebas. Misalnya, E* akan membentuk union dari semua tabel dalam database yang namanya dimulai dengan E.

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.

Catatan

  • Cakupan union dapat menyertakan pernyataan let jika dikaitkan view dengan kata kunci .
  • Cakupan union tidak akan menyertakan fungsi. Untuk menyertakan fungsi, tentukan pernyataan let dengan view kata kunci .
  • Tidak ada jaminan urutan di mana kaki serikat akan muncul, tetapi jika setiap kaki memiliki order by operator, maka setiap kaki akan diurutkan.

Mengembalikan

Tabel dengan baris sebanyak yang ada di semua tabel input.

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.

Hitungan jelas

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.

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 

Output

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 

Output

Menghitung
3

Mengamati Status Kueri - peringatan berikut ditampilkan: Failed to resolve entity 'SomeView*'

Tipe kolom sumber tidak cocok

let View_1 = view () { print x=1 };
let View_2 = view () { print x=toint(2) };
union withsource=TableName View_1, View_2

Output

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 

Output

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