Aracılığıyla paylaş


find işleci

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

'nin find kapsamı, 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 çok 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.

Sözdizimi

  • find[withsource= ColumnName] [in( Tablolar)] where Koşul [ | project-smartproject ColumnName[ : ColumnType , ... ] [, pack_all()]]

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

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

Parametreler

Ad Tür Zorunlu 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. Benzer şekilde , birden fazla kümeye başvurulursa değerde küme ve veritabanı nitelikleri bulunur.
Yüklem 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. Şunları 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 . çıktı şeması ayrıntıları.
  • withsource=ColumnName: İsteğe bağlı. 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.

  • Koşul: boolean Giriş tablolarının sütunları üzerinde bir ifade Tablo [, Tablo, ...]. 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 , tüm tablolarda şu aramalar için arama yapacaktır:

    • Bir 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 . çıktı şeması ayrıntıları.

Döndürülenler

Koşul olan Tablo [, Tablo, ...] içindeki satırların truedönüştürülmesi. Satırlar çıkış şemasına göre dönüştürülür.

Çıkış şeması

source_ sütunu

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, çıktıda görünecek sütunlar şöyle olur:

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

Kalan sütunlar 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üre sahip birden çok tabloda görünen bir sütun, sonuç şemasında bu tür her tür için farklı bir sütuna sahip olur. Sütun adlarının her biri özgün sütun adından ve türünden oluşturulur ve alt çizgiyle ayrılır.

ColumnName[ : ColumnType , ... ] [, pack_all()]:project

  • 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 atılır. Koşul değerlendirilirken atamanın sütun türü üzerinde bir etkisi olmaz.
  • Kullanıldığında pack_all() , yansıtılan 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ı ve sütunun değeri özellik değeri olarak görev görü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 terim aranacaktır.

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ümcesinde 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 bir değişikliğe neden olabilir. Sabit sonuç şeması gerekiyorsa bunun yerine projeyi kullanın
  • findkapsam işlevleri içeremez. Bulma kapsamına bir işlev eklemek için view anahtar sözcüğüne sahip bir let deyimi tanımlayın.

Performans ipuçları

  • Tablosal ifadelerin aksine tabloları kullanın. Tablosal ifadeyse, bul 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 ColumnType eklemeyi findtercih 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ürleri birden fazla tür için çözümlenirken geçerliyse, sorgu birleşime geri döner. Örneğin, bulmanın birleşim işlevi göreceği örneklerine bakın.

Örnekler

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

Sorgu, herhangi bir sütunun sözcüğünü Hernandeziçerdiği geçerli veritabanındaki 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 SalesTable ContosoSales 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 araması

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 tablo 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 K B 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 K B 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österir: EventsTable1 ve EventsTable2. Bu iki tablonun sonraki içeriğine sahip olduğumuzu varsayalım:

EventsTable1

Session_Id Level EventText Sürüm
acbd207d-51aa-4df7-bfa7-be70eb68f04e Bilgiler 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 Bilgiler Bazı Metin4 v1.1.0

EventsTable2

Session_Id Level EventText EventName
f7d5f95f-f580-4ea6-830b-5776c8d64fdd Bilgiler Bazı Diğer Metin1 Olay1
acbd207d-51aa-4df7-bfa7-be70eb68f04e Bilgiler 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 arama yapma, ortak ve yaygın olmayan sütunları yansıtma ve kalanları paketleme

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

Çıktı

kaynak_ EventText Sürüm EventName paketlemek_
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

Çıktı

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'

Çıktı

kaynak_ Session_Id Level EventText paketlemek_
EventsTable1 acbd207d-51aa-4df7-bfa7-be70eb68f04e Bilgiler 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 Bilgiler Bazı Diğer 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()

Çıktı

kaynak_ paketlemek_
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"}

Gibi davranacak örnekler findunion

İşleneni bulmak için 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ı (Level:string, Timestamp, ProcessId_string, ProcessId_int) olacaktır.

  • 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)