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 dengan E.
  • 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 ke null.
  • 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: Jika isfuzzy diatur ke true - mengizinkan resolusi kabur kaki union. Fuzzy berlaku untuk set sumber union. 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 adalah isfuzzy=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.concurrency Angka Memberi sistem petunjuk berapa banyak subkueri bersamaan dari operator union yang harus dijalankan secara paralel. Default: Jumlah inti CPU pada node tunggal kluster (2 hingga 16).
    hint.spread Number Memberi sistem petunjuk berapa banyak node yang harus digunakan oleh eksekusi subkueri union bersamaan. 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 dengan E.

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 ke null.
  • 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: Jika isfuzzy diatur ke true - mengizinkan resolusi kabur kaki union. Fuzzy berlaku untuk set sumber union. 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 adalah isfuzzy=false.

Mengembalikan

Tabel dengan baris sebanyak yang ada di semua tabel input.

Catatan

  1. cakupan union dapat menyertakan pernyataan let jika dikaitkan dengan kata kunci view
  2. cakupan union tidak akan menyertakan fungsi. Untuk menyertakan fungsi dalam cakupan union, tentukan pernyataan let dengan kata kunci view
  3. Jika input union adalah tabel (bukan ekspresi tabular), dan union diikuti oleh operator where, untuk performa yang lebih baik, pertimbangkan mengganti keduanya dengan find. Perhatikan skema output berbeda yang dihasilkan oleh operator find.
  4. isfuzzy=true hanya berlaku untuk fase resolusi sumber union. Setelah set tabel sumber ditentukan, kemungkinan kegagalan kueri tambahan tidak akan ditekan.
  5. 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 hasil union. Nama kolom ini akan diakhiri dengan '_' diikuti oleh jenis kolom asal.
  6. Tidak ada jaminan urutan di mana kaki union akan muncul (tetapi jika setiap kaki memiliki operator order by, maka setiap kaki akan diurutkan).
  7. Dua pernyataan apa pun harus dipisahkan oleh titik koma.
  1. cakupan union dapat menyertakan pernyataan let jika dikaitkan dengan kata kunci view
  2. cakupan union tidak akan menyertakan fungsi. Untuk menyertakan fungsi dalam cakupan union - tentukan pernyataan let dengan kata kunci view
  3. Jika input union adalah tabel (bukan ekspresi tabular), dan union diikuti oleh operator where, pertimbangkan mengganti keduanya dengan find. Harap perhatikan skema output berbeda yang dihasilkan oleh operator find.
  4. isfuzzy=true hanya berlaku untuk fase resolusi sumber union. Setelah set tabel sumber ditentukan, kemungkinan kegagalan kueri tambahan tidak akan ditekan.
  5. 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 hasil union. Nama kolom ini akan diakhiri dengan '_' diikuti oleh jenis kolom asal.
  6. 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