union işleci

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

Syntax

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

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

Not

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

Parametreler

Ad Tür Gerekli 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 herhangi bir girişte 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şimin sonucundaki her tür için karşılık gelen bir sütunu vardır. Bu sütun adı, '_' ve ardından kaynak sütun türü ile son eklenmiştir.
withsource=Columnname string Belirtilirse çıkışta ColumnName adlı bir sütun bulunur ve değeri her satıra hangi kaynak tablonun katkıda bulunduğunu gösterir. 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şvurulursa değerde küme ve veritabanı nitelikleri bulunur.
isfuzzy bool olarak ayarlanırsa true, birleşim bacakları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. Böyle bir tablodan 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ı olmazsa, 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 Gerekli 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 - 16).
hint.spread int Eşzamanlı alt sorgu yürütmesi tarafından union kaç düğüm kullanılması gerektiğini sisteme ipuçları. Varsayılan değer 1'dir.
Ad Tür Gerekli 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 herhangi bir girişte 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şimin sonucundaki her tür için karşılık gelen bir sütunu vardır. Bu sütun adı, '_' ve ardından kaynak sütun türü ile son eklenmiştir.
withsource=Columnname string Belirtilirse çıkışta ColumnName adlı bir sütun bulunur ve değeri her satıra hangi kaynak tablonun katkıda bulunduğunu gösterir. 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şvurulursa değerde küme ve veritabanı nitelikleri bulunur.
isfuzzy bool olarak ayarlanırsa true, birleşim bacakları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. Böyle bir tablodan 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ı olmazsa, 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çınabilirsiniz. Bazı çalışma alanları, verimsiz yürütmeye yol açabilecek çok sayıda tablo içerir. Zaman içinde tablolar da eklenebilir ve bu da öngörülemeyen sonuçlara yol açabilir.

Not

  • Kapsam, union anahtar sözcüğüyle view ilişkilendirildiyse let deyimlerini içerebilir.
  • Kapsam unionişlevleri içermez. İşlev eklemek için anahtar sözcüğüyle view bir let deyimi tanımlayın.
  • Birleşim bacakların görüneceği sıranın 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 tablolardan 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 üreten ayrı kullanıcıların sayısı. Sonuçta, 'SourceTable' sütunu "Query" veya "Command" değerini gösterir.

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şturmadan ö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 

Çıkış

Count
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 

Çıkış

Count
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

Çıkış

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 

Çıkış

TableName x_long1 x_int x_long
View_1 1
View_2 2
View_3 3

x'den View_1 alınan sütun sonekini _longalır ve sonuç şemasında adlı x_long bir sütun zaten var olduğundan, sütun adları yinelenenleri kaldırılarak yeni bir sütun oluşturulur.x_long1