find işleci

Bir tablo kümesi genelinde koşulla eşleşen satırları bulur.

kapsamı find veritabanları arası veya kümeler arası da olabilir.

find in (Table1, Table2, Table3) where Fruit=="apple"

find in (database('*').*) where Fruit == "apple"

find in (cluster('cluster_name').database('MyDB*').*) where Fruit == "apple"
find in (Table1, Table2, Table3) where Fruit=="apple"

Not

find işleci, sütuna özgü metin filtrelemeden önemli ölçüde daha az verimlidir. Sütunlar her bilindiği zaman where işlecini kullanmanızı öneririz. find çalışma alanı çok sayıda tablo ve sütun içerdiğinde ve taranan veri hacmi yüksek olduğunda ve sorgunun zaman aralığı yüksek olduğunda düzgün çalışmaz.

Syntax

  • find [withsource= ColumnName] [in(Tables)] whereKoşulu [project-smart | projectColumnName[:ColumnType, ... ] [,pack_all()]]

  • findKoşul [project-smart | projectColumnName[:ColumnType, ... ] [,pack_all()]]

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

Parametreler

Ad Tür Gerekli Açıklama
Columnname string Varsayılan olarak çıkış, değerleri her satıra katkıda bulunan kaynak tabloyu gösteren source_ adlı bir sütun içerir. Belirtilirse, source_ yerine ColumnName kullanılır. Joker karakter eşleştirmesinden sonra, sorgu varsayılan veritabanı da dahil olmak üzere birden fazla veritabanından tablolara başvuruyorsa, bu sütunun değeri veritabanıyla nitelenmiş bir tablo adına sahip olur. Aynı şekilde, birden fazla kümeye başvurulursa değerde küme ve veritabanı nitelikleri bulunur.
Yüklemi bool ✔️ Bu boole ifadesi, her giriş tablosundaki her satır için değerlendirilir. Daha fazla bilgi için koşul söz dizimi ayrıntılarına bakın.
Tablolar string Sıfır veya daha fazla virgülle ayrılmış tablo başvurusu. Varsayılan olarak, find geçerli veritabanındaki tüm tablolara bakar. Şunu kullanabilirsiniz:
1. Tablonun adı, örneğin Events
2. Sorgu ifadesi, örneğin (Events | where id==42)
3. Joker karakterle belirtilen tablo kümesi. Örneğin, E* veritabanında adları ile Ebaşlayan tüm tabloların birleşimini oluşturur.
project-smart veya project string Belirtilmezse, project-smart varsayılan olarak kullanılır. Daha fazla bilgi için bkz. çıkış şeması ayrıntıları.
  • withsource=ColumnName: İsteğe bağlı. Varsayılan olarak çıkış, değerleri her satıra hangi kaynak tablonun katkıda bulunduğunu gösteren source_ adlı bir sütun içerir. Belirtilirse, source_ yerine ColumnName kullanılır.

  • Koşul: boolean [Tablo, ...] giriş, tablolarının sütunları üzerinde bir ifade. Her giriş tablosundaki her satır için değerlendirilir. Daha fazla bilgi için koşul söz dizimi ayrıntılarına bakın.

  • Tablolar: İsteğe bağlı. Sıfır veya daha fazla virgülle ayrılmış tablo başvurusu. Varsayılan olarak bul , aşağıdakiler için tüm tablolarda arama yapacaktır:

    • Tablonun adı, örneğin Events
    • Sorgu ifadesi, örneğin (Events | where id==42)
    • Joker karakterle belirtilen tablo kümesi. Örneğin, E* adları ile Ebaşlayan tüm tabloların birleşimini oluşturur.
  • project-smart | project: Belirtilmezse project-smart varsayılan olarak kullanılır. Daha fazla bilgi için bkz. çıkış şeması ayrıntıları.

Döndürülenler

Koşul olan [,Tablo, ...] tablosundakisatırların dönüştürülmesitrue. Satırlar çıkış şemasına göre dönüştürülür.

Çıkış şeması

source_ sütun

Bul işleci çıkışı her zaman kaynak tablo adına sahip bir source_ sütunu içerir. Sütun parametresi kullanılarak withsource yeniden adlandırılabilir.

sonuç sütunları

Koşul değerlendirmesi tarafından kullanılan herhangi bir sütun içermeyen kaynak tablolar filtrelenir.

kullandığınızda project-smart, çıkışta görünecek sütunlar şu şekilde olur:

  • Koşulda açıkça görünen sütunlar.
  • Tüm filtrelenmiş tablolarda ortak olan sütunlar.

Sütunların geri kalanı bir özellik paketine paketlenir ve ek pack bir sütunda görünür. Koşul tarafından açıkça başvuruda bulunup birden çok türü olan birden çok tabloda görünen bir sütunun sonuç şemasında bu tür her tür için farklı bir sütun olacaktır. Sütun adlarının her biri, özgün sütun adından ve türünden alt çizgiyle ayrılmış olarak oluşturulur.

ColumnName[:ColumnType, ... ] [,pack_all()] kullanılırkenproject:

  • Sonuç tablosu listede belirtilen sütunları içerir. Kaynak tablo belirli bir sütun içermiyorsa, karşılık gelen satırlardaki değerler null olur.
  • ColumnName ile bir ColumnType belirtirken, "sonuç" içindeki bu sütun belirtilen türe sahip olur ve gerekirse değerler bu türe yayınlanır. Koşul değerlendirilirken tür değiştirmenin sütun türü üzerinde bir etkisi olmaz.
  • pack_all() Kullanıldığında, öngörülen sütunlar da dahil olmak üzere tüm sütunlar bir özellik paketinde paketlenir ve varsayılan olarak 'column1' ek bir sütunda görünür. Özellik paketinde kaynak sütun adı özellik adı, sütunun değeri ise özellik değeri olarak görev alır.

Koşul söz dizimi

Bul işleci terim için alternatif bir söz dizimini * has destekler ve yalnızca terim kullanıldığında tüm giriş sütunları arasında bir terimi arar.

Bazı filtreleme işlevlerinin özeti için bkz . where işleci.

Notlar

  • Yan tümcesi project birden çok tabloda görünen ve birden çok türü olan bir sütuna başvuruyorsa, bir türün proje yan tümcesindeki bu sütun başvurusuna uyması gerekir
  • Bir sütun birden çok tabloda görünüyorsa ve birden çok türe sahipse ve project-smart kullanımdaysa, birleşimde açıklandığı gibi sonucundaki findher tür için karşılık gelen bir sütun olacaktır
  • Project-smart kullandığınızda koşuldaki, kaynak tablo kümesindeki veya tablo şemasındaki değişiklikler çıkış şemasında değişiklikle sonuçlanabilir. Sabit sonuç şeması gerekiyorsa bunun yerine projeyi kullanın
  • find kapsam işlevleri içeremez. Bulma kapsamına bir işlev eklemek için view anahtar sözcüğüyle bir let deyimi tanımlayın.

Performans ipuçları

  • Tablosal ifadelerin aksine tabloları kullanın. Tablosal ifadeyse, bulma işleci performansın düşmesine neden olabilecek bir union sorguya geri döner.
  • Birden çok tabloda görünen ve birden çok türü olan bir sütun proje yan tümcesinin bir parçasıysa, tabloyu 'a geçirmeden önce değiştirmek yerine proje yan tümcesine findColumnType eklemeyi tercih edin.
  • Koşula zamana bağlı filtreler ekleyin. Datetime sütun değeri veya ingestion_time() kullanın.
  • Tam metin araması yerine belirli sütunlarda arama yapma.
  • Birden çok tabloda görünen ve birden çok türü olan sütunlara başvurmamak daha iyidir. Koşul, bu tür sütun türlerini birden fazla tür için çözümlerken geçerliyse, sorgu birleşime geri döner. Örneğin, bulmanın birleşim işlevi göreceği durum örneklerine bakın.

Örnekler

Geçerli veritabanındaki tüm tablolarda terim arama

Sorgu, geçerli veritabanındaki herhangi bir sütunun sözcüğünü Hernandeziçerdiği tüm tablolardaki tüm satırları bulur. Sonuçta elde edilen kayıtlar çıkış şemasına göre dönüştürülür. Çıktı, tablodaki Customers satırları ve veritabanının SalesTableContosoSales tablosunu içerir.

find "Hernandez"

Geçerli veritabanındaki bir ad deseni ile eşleşen tüm tablolarda terim araması

Sorgu, geçerli veritabanındaki adı ile Cbaşlayan ve herhangi bir sütunun sözcüğünü Hernandeziçerdiği tüm tablolardaki tüm satırları bulur. Sonuçta elde edilen kayıtlar çıkış şemasına göre dönüştürülür. Artık çıkışta yalnızca tablodaki Customers kayıtlar yer alır.

find in (C*) where * has "Hernandez"

Kümedeki tüm veritabanlarındaki tüm tablolarda terim arama

Sorgu, herhangi bir sütunun sözcüğünü Kustoiçerdiği tüm veritabanlarındaki tüm tablolardaki tüm satırları bulur. Bu sorgu, veritabanları arası bir sorgudur. Sonuçta elde edilen kayıtlar çıkış şemasına göre dönüştürülür.

find in (database('*').*) where * has "Kusto"

Kümedeki bir ad deseni ile eşleşen tüm tablolarda ve veritabanlarında terim araması

Sorgu, adı ile başlayan ve herhangi bir sütunun sözcüğünü Kustoiçerdiği tüm veritabanlarında adı ile KB başlayan tüm tablolardaki tüm satırları bulur. Sonuçta elde edilen kayıtlar çıkış şemasına göre dönüştürülür.

find in (database("S*").C*) where * has "Kusto"

Çeşitli kümelerde terim arama

Sorgu, adı ile başlayan ve herhangi bir sütunun sözcüğünü Kustoiçerdiği tüm veritabanlarında adı ile KB başlayan tüm tablolardaki tüm satırları bulur. Sonuçta elde edilen kayıtlar çıkış şemasına göre dönüştürülür.

find in (cluster("cluster1").database("B*").K*, cluster("cluster2").database("C*".*))
where * has "Kusto"

Tüm tablolarda terim arama

Sorgu, herhangi bir sütunun sözcüğünü Kustoiçerdiği tüm tablolardaki tüm satırları bulur. Sonuçta elde edilen kayıtlar çıkış şemasına göre dönüştürülür.

find "Kusto"

Çıkış sonuçları örnekleri find

Aşağıdaki örnekler iki tablo üzerinde nasıl find kullanılabileceğini göstermektedir: EventsTable1 ve EventsTable2. Bu iki tablonun bir sonraki içeriğine sahip olduğumuzu varsayalım:

EventsTable1

Session_id Level EventText Sürüm
acbd207d-51aa-4df7-bfa7-be70eb68f04e Bilgi Bazı Metin1 v1.0.0
acbd207d-51aa-4df7-bfa7-be70eb68f04e Hata Bazı Metin2 v1.0.0
28b8e46e-3c31-43cf-83cb-48921c3986fc Hata Bazı Metin3 v1.0.1
8f057b11-3281-45c3-a856-05ebb18a3c59 Bilgi Bazı Metin4 v1.1.0

EventsTable2

Session_id Level EventText EventName
f7d5f95f-f580-4ea6-830b-5776c8d64fdd Bilgi Bazı Diğer Metin1 Olay1
acbd207d-51aa-4df7-bfa7-be70eb68f04e Bilgi Bazı Diğer Metin2 Olay2
acbd207d-51aa-4df7-bfa7-be70eb68f04e Hata Bazı Diğer Metin3 Olay3
15eaeab5-8576-4b58-8fc6-478f75d8fee4 Hata Bazı Diğer Metin4 Olay4

Ortak sütunlarda, ortak ve yaygın olmayan sütunlarda arama yapma ve geri kalanını paketleme

find in (EventsTable1, EventsTable2) 
     where Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e' and Level == 'Error' 
     project EventText, Version, EventName, pack_all()

Çıkış

Kaynak_ EventText Sürüm EventName Paketi_
EventsTable1 Bazı Metin2 v1.0.0 {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Error"}
EventsTable2 Bazı Diğer Metin3 Olay3 {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Error"}

Ortak ve yaygın olmayan sütunlarda arama yapma

find Version == 'v1.0.0' or EventName == 'Event1' project Session_Id, EventText, Version, EventName

Çıkış

Kaynak_ Session_id EventText Sürüm EventName
EventsTable1 acbd207d-51aa-4df7-bfa7-be70eb68f04e Bazı Metin1 v1.0.0
EventsTable1 acbd207d-51aa-4df7-bfa7-be70eb68f04e Bazı Metin2 v1.0.0
EventsTable2 f7d5f95f-f580-4ea6-830b-5776c8d64fdd Bazı Diğer Metin1 Olay1

Not: Pratikte , EventsTable1 satırları koşulla Version == 'v1.0.0' ve EventsTable2 satırları koşulla EventName == 'Event1' filtrelenir.

Geçerli veritabanındaki tüm tablolarda arama yapmak için kısaltılmış gösterimi kullanma

find Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e'

Çıkış

Kaynak_ Session_id Level EventText Paketi_
EventsTable1 acbd207d-51aa-4df7-bfa7-be70eb68f04e Bilgi Bazı Metin1 {"Version":"v1.0.0"}
EventsTable1 acbd207d-51aa-4df7-bfa7-be70eb68f04e Hata Bazı Metin2 {"Version":"v1.0.0"}
EventsTable2 acbd207d-51aa-4df7-bfa7-be70eb68f04e Bilgi Diğer Bazı Metin2 {"EventName":"Event2"}
EventsTable2 acbd207d-51aa-4df7-bfa7-be70eb68f04e Hata Bazı Diğer Metin3 {"EventName":"Event3"}

Her satırdaki sonuçları özellik paketi olarak döndürme

find Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e' project pack_all()

Çıkış

Kaynak_ Paketi_
EventsTable1 {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Information", "EventText":"Some Text1", "Version":"v1.0.0"}
EventsTable1 {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Error", "EventText":"Some Text2", "Version":"v1.0.0"}
EventsTable2 {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Information", "EventText":"Some Other Text2", "EventName":"Event2"}
EventsTable2 {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Error", "EventText":"Some Other Text3", "EventName":"Event3"}

Şu şekilde davranacak örnekler:findunion

İşlenen bulma olarak tablosal olmayan bir ifade kullanma

let PartialEventsTable1 = view() { EventsTable1 | where Level == 'Error' };
find in (PartialEventsTable1, EventsTable2) 
     where Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e'

Birden çok tabloda görünen ve birden çok türü olan bir sütuna başvurma

Komutunu çalıştırarak iki tablo oluşturduğumuz varsayılır:

.create tables 
  Table1 (Level:string, Timestamp:datetime, ProcessId:string),
  Table2 (Level:string, Timestamp:datetime, ProcessId:int64)
  • Aşağıdaki sorgu olarak unionyürütülür.
find in (Table1, Table2) where ProcessId == 1001

Çıkış sonucu şeması olacaktır (Düzey:dize, Zaman damgası, ProcessId_string, ProcessId_int).

  • Aşağıdaki sorgu da olarak unionyürütülür, ancak farklı bir sonuç şeması oluşturur.
find in (Table1, Table2) where ProcessId == 1001 project Level, Timestamp, ProcessId:string 

Çıkış sonucu şeması olacaktır (Level:string, Timestamp, ProcessId_string)