Aracılığıyla paylaş


union işleci

İki veya daha fazla tablo alır ve tümünün satırlarını döndürür.

Sözdizimi

[ T | ] union [ UnionParameters ] [kind=outer|inner ] [withsource= ColumnName] [isfuzzy=|truefalse ] Tables

Söz dizimi kuralları hakkında daha fazla bilgi edinin.

Not

bir set deyimi kullanılarak veya istemci isteği özellikleri aracılığıyla istek özelliği olarak trueayarlanarak best_effort işlecin işlemi union değiştirilebilir. Bu özellik olarak trueunion ayarlandığında, işleç "birleşimli" alt ifadelerden herhangi birini yürütmek için benzer çözümleme ve bağlantı hatalarını göz ardı eder ve sorgu durumu sonuçlarında bir uyarı verir.

Parametreler

Ad Tür Zorunlu Açıklama
T string Giriş tablosal ifadesi.
UnionParameters string Satır eşleştirme işleminin ve yürütme planının davranışını denetleen Ad = Değeri biçiminde sıfır veya daha fazla boşlukla ayrılmış parametre. Desteklenen birleşim parametrelerine bakın.
kind string inner veya outer. inner , sonucun tüm giriş tablolarında ortak olan sütunların alt kümesine sahip olmasını neden olur. outer , sonucun girişlerden herhangi birinde oluşan tüm sütunlara sahip olmasını sağlar. Giriş satırı tarafından tanımlanmayan hücreler olarak nullayarlanır. Varsayılan değer: outer.

ile outersonuç, her ad ve tür oluşumları için bir sütun olan herhangi bir girişte oluşan tüm sütunları içerir. Başka bir deyişle, bir sütun birden çok tabloda görünüyorsa ve birden çok türe sahipse, birleşim sonucundaki her tür için karşılık gelen bir sütunu vardır. Bu sütun adı bir '_' ve ardından kaynak sütun türü ile son eklenmiştir.
withsource=ColumnName string Belirtilirse, çıkışta değeri her satıra katkıda bulunan kaynak tabloyu gösteren ColumnName adlı bir sütun bulunur. Sorgu, varsayılan veritabanı da dahil olmak üzere birden fazla veritabanındaki tablolara etkili bir şekilde başvuruyorsa, bu sütunun değeri veritabanıyla nitelenmiş bir tablo adına sahiptir. birden fazla kümeye başvurulsa değerde küme ve veritabanı nitelikleri bulunur.
isfuzzy bool olarak ayarlanırsa true, birleşim bacaklarının belirsiz çözünürlüğüne izin verir. Birleşim kaynakları kümesi, sorgu analiz edilirken ve yürütülmeye hazırlanırken var olan ve o sırada erişilebilir olan tablo başvuruları kümesine indirgenir. Bu tür tablolardan en az biri bulunursa, herhangi bir çözüm hatası sorgu durumu sonuçlarında bir uyarı verir, ancak sorgunun yürütülmesini engellemez. Hiçbir çözüm başarılı olmadıysa sorgu bir hata döndürür. Varsayılan değer: false.

isfuzzy=true yalnızca kaynak çözümleme aşaması için union geçerlidir. Kaynak tablo kümesi belirlendikten sonra olası ek sorgu hataları gizlenmeyecektir.
Tablolar string Bir veya daha fazla virgülle ayrılmış tablo başvurusu, parantez içine alınmış bir sorgu ifadesi veya joker karakterle belirtilen bir tablo kümesi. Örneğin, E* veritabanında adları başlayan Etüm tabloların birleşimini oluşturur.

Desteklenen birleşim parametreleri

Adı Tür Zorunlu Açıklama
hint.concurrency int Sisteme, işlecin kaç eşzamanlı alt sorgunun union paralel olarak yürütülmesi gerektiğini gösterir. Varsayılan değer, kümenin tek düğümündeki CPU çekirdeklerinin sayısıdır (2 ile 16).
hint.spread int Sisteme eşzamanlı union alt sorgu yürütmesi tarafından kaç düğüm kullanılması gerektiğini gösterir. Varsayılan değer 1'dir.
Adı Tür Zorunlu Açıklama
T string Giriş tablosal ifadesi.
kind string inner veya outer. inner , sonucun tüm giriş tablolarında ortak olan sütunların alt kümesine sahip olmasını neden olur. outer , sonucun girişlerden herhangi birinde oluşan tüm sütunlara sahip olmasını sağlar. Giriş satırı tarafından tanımlanmayan hücreler olarak nullayarlanır. Varsayılan değer: outer.

ile outersonuç, her ad ve tür oluşumları için bir sütun olan herhangi bir girişte oluşan tüm sütunları içerir. Başka bir deyişle, bir sütun birden çok tabloda görünüyorsa ve birden çok türe sahipse, birleşim sonucundaki her tür için karşılık gelen bir sütunu vardır. Bu sütun adı bir '_' ve ardından kaynak sütun türü ile son eklenmiştir.
withsource=ColumnName string Belirtilirse, çıkışta değeri her satıra katkıda bulunan kaynak tabloyu gösteren ColumnName adlı bir sütun bulunur. Sorgu, varsayılan veritabanı da dahil olmak üzere birden fazla veritabanındaki tablolara etkili bir şekilde başvuruyorsa, bu sütunun değeri veritabanıyla nitelenmiş bir tablo adına sahiptir. birden fazla kümeye başvurulsa değerde küme ve veritabanı nitelikleri bulunur.
isfuzzy bool olarak ayarlanırsa true, birleşim bacaklarının belirsiz çözünürlüğüne izin verir. Birleşim kaynakları kümesi, sorgu analiz edilirken ve yürütülmeye hazırlanırken var olan ve o sırada erişilebilir olan tablo başvuruları kümesine indirgenir. Bu tür tablolardan en az biri bulunursa, herhangi bir çözüm hatası sorgu durumu sonuçlarında bir uyarı verir, ancak sorgunun yürütülmesini engellemez. Hiçbir çözüm başarılı olmadıysa sorgu bir hata döndürür. Ancak çalışma alanları ve uygulamalar arası sorgularda çalışma alanlarından veya uygulamalardan herhangi biri bulunamazsa sorgu başarısız olur. Varsayılan değer: false.

isfuzzy=true yalnızca kaynak çözümleme aşaması için union geçerlidir. Kaynak tablo kümesi belirlendikten sonra olası ek sorgu hataları gizlenmeyecektir.
Tablolar string Bir veya daha fazla virgülle ayrılmış tablo başvurusu, parantez içine alınmış bir sorgu ifadesi veya joker karakterle belirtilen bir tablo kümesi. Örneğin, E* veritabanında adları başlayan Etüm tabloların birleşimini oluşturur.

Tablo listesi her bilindiği zaman joker karakter kullanmaktan kaçının. Bazı çalışma alanları, verimsiz yürütmeye yol açabilecek çok sayıda tablo içerir. Tablolar da zaman içinde eklenerek öngörülemeyen sonuçlar elde edilebilir.

Not

  • Kapsam, union anahtar sözcüğüyle view ilişkilendirildiyse let deyimlerini içerebilir.
  • Kapsam union işlevleri içermez. İşlev eklemek için anahtar sözcüğüyle bir let deyimi view tanımlayın.
  • Birleşim bacaklarının hangi sırada görüneceğinin garantisi yoktur, ancak her bacağın bir order by operatörü varsa, her bacak sıralanır.

Döndürülenler

Tüm giriş tablolarında olduğu kadar çok satırı olan bir tablo.

Örnekler

Ad veya sütunda dize içeren tablolar

union K* | where * has "Kusto"

Veritabanındaki adı ile Kbaşlayan ve herhangi bir sütunun sözcüğünü Kustoiçerdiği tüm tablolardaki satırlar.

Ayrı sayı

union withsource=SourceTable kind=outer Query, Command
| where Timestamp > ago(1d)
| summarize dcount(UserId)

Geçen gün içinde bir Query olay veya Command olay oluşturan farklı kullanıcıların sayısı. Sonuç olarak , 'SourceTable' sütunu "Sorgu" veya "Komut" olarak gösterilir.

Query
| where Timestamp > ago(1d)
| union withsource=SourceTable kind=outer 
   (Command | where Timestamp > ago(1d))
| summarize dcount(UserId)

Bu daha verimli sürüm aynı sonucu verir. Birleşim oluşturulmadan önce her tabloyu filtreler.

isfuzzy=true kullanma

// 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 

Çıktı

Sayı
2

Sorgu Durumunu Gözlemleme - aşağıdaki uyarı döndürüldü: 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 

Çıktı

Sayı
3

Sorgu Durumunu Gözlemleme - aşağıdaki uyarı döndürüldü: Failed to resolve entity 'SomeView*'

Kaynak sütun türleri uyuşmazlığı

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

Çıktı

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 

Çıktı

TableName x_long1 x_int x_long
View_1 1
View_2 2
View_3 3

x sütunundan View_1 alınan sonek _longve adlı x_long sütun sonuç şemasında zaten var olduğundan, sütun adları yinelenenleri kaldırılarak yeni bir sütun oluşturulur:x_long1