find işleci

Sürüm açılan listesini kullanarak hizmetler arasında geçiş yapın. Gezinti hakkında daha fazla bilgi edinin.
Şunlar için geçerlidir: ✅ Microsoft Fabric ✅ Azure Veri Gezgini ✅ Azure İzleyici ✅ Microsoft Sentinel

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

İşlecin 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)] whereKoşul [project-smart | projectColumnName[ : ColumnType, ... ] [,pack_all()]]

  • find Koşul [project-smart | project ColumnName[ : ... ] [,]]

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 hangi kaynak tablonun katkıda bulunduğunu 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 sahiptir. 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: booleanGiriş 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 , aşağıdakiler için tüm tabloları arar:

    • 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 Satırlar çıkış şemasına göre dönüştürülür.

Çıkış şeması

source_ sütunu

İşleç find çı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üntülenen sütunlar şunlardır:

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

Sütunların geri kalanı bir özellik paketinde 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 sahiptir. 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.

ColumnNameproject

  • 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 belirttiğinizde, "sonuç" içindeki bu sütun belirtilen türe sahiptir ve gerekirse değerler bu türe atılır. Koşul değerlendirilirken atamanın sütun türü üzerinde bir etkisi yoktur.
  • 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

find işleci terim için alternatif bir söz dizimini * has destekler ve yalnızca terim kullanarak tüm giriş sütunlarını bir terimde arar.

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

Değerlendirmeler

  • 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, find gibi ' sonucundaki her tür için karşılık gelen bir sütun vardı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. Kapsama bir işlev find 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ürlerini birden fazla tür için çözümlerken geçerliyse, sorgu birleşime geri döner. Örneğin, birleşim işlevi gören find örneklerine bakın.

Örnekler

Genel örnekler

Aşağıdaki örnek, 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 SalesTableContosoSales tablosunu içerir.

find "Hernandez"

Çıktı

Bu tabloda çıkışın ilk üç satırı gösterilir.

kaynak_ paketlemek_
Müşteriler {"CityName":"Ballard","CompanyName":"NULL","ContinentName":"North America","CustomerKey":5023,"Education":"Partial High School","FirstName":"Devin","Gender":"M","LastName":"Hernandez","MaritalStatus":"S","Occupation":"Clerical","RegionCountryName":"United States","StateProvinceName":"Washington"}
Müşteriler {"CityName":"Ballard","CompanyName":"NULL","ContinentName":"North America","CustomerKey":7814,"Education":"Partial College","FirstName":"Kristy","Gender ":"F","LastName":"Hernandez","MaritalStatus":"S","Occupation":"Professional","RegionCountryName":"United States","StateProvinceName":"Washington"}
Müşteriler {"CityName":"Ballard","CompanyName":"NULL","ContinentName":"North America","CustomerKey":7888,"Education":"Partial High School","FirstName":"Kari","Gender":"F","LastName":"Hernandez","MaritalStatus":"S","Occupation":"Clerical","RegionCountryName":"United States","StateProvinceName":"Washington"}
... ...

Aşağıdaki örnek, geçerli veritabanında 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"

Çıktı

Bu tabloda çıkışın ilk üç satırı gösterilir.

kaynak_ paketlemek_
ConferenceSessions {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto sorgu dili konuları","session_type":"Roundtable","owner":"Avner Aharoni","participants":"Alexander Sloutsky, Tzvia Gitlin-Troyna","URL":"https://sessions.mybuild.microsoft.com/sessions/details/4d4887e9-f08d-4f88-99ac-41e5feb869e7","level":200,"session_location":"Online","starttime":"2021-05-26T08:30:00.0000000Z","duration":60,"time_and_duration":"Wednesday, 26 Mayıs\n08:30 - 09:30 GMT","kusto_affinity":"Focused"}
ConferenceSessions {"conference":"Ignite 2018","sessionid":"THR3115","session_title":"Azure Log Analytics: Azure Kusto sorgu dilini ayrıntılı olarak inceleme. ","session_type":"Theater","owner":"Jean Francois Berenguer","participants":"","URL":"https://myignite.techcommunity.microsoft.com/sessions/66329""level":300,"session_location":"","starttime":null,"duration":null,"time_and_duration":"","kusto_affinity":"Focused"}
ConferenceSessions {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto sorgu dili konuları","session_type":"Roundtable","owner":"Avner Aharoni","participants":"Alexander Sloutsky, Tzvia Gitlin-Troyna","URL":"https://sessions.mybuild.microsoft.com/sessions/details/4d4887e9-f08d-4f88-99ac-41e5feb869e7","level":200,"session_location":"Online","starttime":"2021-05-26T08:30:00.0000000Z","duration":60,"time_and_duration":"Wednesday, 26 Mayıs\n08:30 - 09:30 GMT","kusto_affinity":"Focused"}
... ...

Aşağıdaki örnek, herhangi bir sütunun sözcüğünü Kustoiçerdiği kümedeki 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"

Çıktı

Bu tabloda çıkışın ilk üç satırı gösterilir.

kaynak_ paketlemek_
database("Samples"). ConferenceSessions {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto sorgu dili konuları","session_type":"Roundtable","owner":"Avner Aharoni","participants":"Alexander Sloutsky, Tzvia Gitlin-Troyna","URL":"https://sessions.mybuild.microsoft.com/sessions/details/4d4887e9-f08d-4f88-99ac-41e5feb869e7","level":200,"session_location":"Online","starttime":"2021-05-26T08:30:00.0000000Z","duration":60,"time_and_duration":"Wednesday, 26 Mayıs\n08:30 - 09:30 GMT","kusto_affinity":"Focused"}
database("Samples"). ConferenceSessions {"conference":"Ignite 2018","sessionid":"THR3115","session_title":"Azure Log Analytics: Azure Kusto sorgu dilini ayrıntılı olarak inceleme. ","session_type":"Theater","owner":"Jean Francois Berenguer","participants":"","URL":"https://myignite.techcommunity.microsoft.com/sessions/66329""level":300,"session_location":"","starttime":null,"duration":null,"time_and_duration":"","kusto_affinity":"Focused"}
database("Samples"). ConferenceSessions {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto sorgu dili konuları","session_type":"Roundtable","owner":"Avner Aharoni","participants":"Alexander Sloutsky, Tzvia Gitlin-Troyna","URL":"https://sessions.mybuild.microsoft.com/sessions/details/4d4887e9-f08d-4f88-99ac-41e5feb869e7","level":200,"session_location":"Online","starttime":"2021-05-26T08:30:00.0000000Z","duration":60,"time_and_duration":"Wednesday, 26 Mayıs\n08:30 - 09:30 GMT","kusto_affinity":"Focused"}
... ...

Aşağıdaki örnek, adı ile başlayan ve herhangi bir sütunun sözcüğünü Kiçerdiği tüm veritabanlarında adı ile BKusto 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"

Çıktı

Bu tabloda çıkışın ilk üç satırı gösterilir.

kaynak_ paketlemek_
ConferenceSessions {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto sorgu dili konuları","session_type":"Roundtable","owner":"Avner Aharoni","participants":"Alexander Sloutsky, Tzvia Gitlin-Troyna","URL":"https://sessions.mybuild.microsoft.com/sessions/details/4d4887e9-f08d-4f88-99ac-41e5feb869e7","level":200,"session_location":"Online","starttime":"2021-05-26T08:30:00.0000000Z","duration":60,"time_and_duration":"Wednesday, 26 Mayıs\n08:30 - 09:30 GMT","kusto_affinity":"Focused"}
ConferenceSessions {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto sorgu dili konuları","session_type":"Roundtable","owner":"Avner Aharoni","participants":"Alexander Sloutsky, Tzvia Gitlin-Troyna","URL":"https://sessions.mybuild.microsoft.com/sessions/details/4d4887e9-f08d-4f88-99ac-41e5feb869e7","level":200,"session_location":"Online","starttime":"2021-05-26T08:30:00.0000000Z","duration":60,"time_and_duration":"Wednesday, 26 Mayıs\n08:30 - 09:30 GMT","kusto_affinity":"Focused"}
ConferenceSessions {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto sorgu dili konuları","session_type":"Roundtable","owner":"Avner Aharoni","participants":"Alexander Sloutsky, Tzvia Gitlin-Troyna","URL":"https://sessions.mybuild.microsoft.com/sessions/details/4d4887e9-f08d-4f88-99ac-41e5feb869e7","level":200,"session_location":"Online","starttime":"2021-05-26T08:30:00.0000000Z","duration":60,"time_and_duration":"Wednesday, 26 Mayıs\n08:30 - 09:30 GMT","kusto_affinity":"Focused"}
... ...

Aşağıdaki örnek, adı ile başlayan ve herhangi bir sütunun sözcüğünü Kiçerdiği tüm veritabanlarında adı ile BKusto 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"

Aşağıdaki örnek, 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

Bu iki tablonun sonraki içeriğine sahip olduğumuzu varsayalım:

EventsTable1

Session_Id Seviye Etkinlik Metni 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 Seviye Etkinlik Metni Etkinlik Adı
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

Aşağıdaki örnek, belirli bir Session_Id ve Hata Düzeyi temelinde EventsTable1 ve EventsTable2 içindeki belirli kayıtları arar. Ardından eventText, Version ve EventName olmak üzere üç belirli sütunu yansıtır ve kalan tüm sütunları dinamik bir nesnede paketler.

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

Çıktı

kaynak_ Etkinlik Metni Sürüm Etkinlik Adı 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"}

Aşağıdaki örnek, 'v1.0.0' sürümüne veya EventName'e 'Event1' olarak sahip olan kayıtları arar ve ardından filtrelenen sonuçlardan dört belirli sütunu (Session_Id, EventText, Version ve EventName ) oluşturur (seçer).

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

Çıktı

kaynak_ Session_Id Etkinlik Metni Sürüm Etkinlik Adı
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

Uygulamada , EventsTable1 satırları koşul ile Version == 'v1.0.0' filtrelenir ve EventsTable2 satırları koşulla EventName == 'Event1' filtrelenir.

Aşağıdaki örnek veritabanında 'acbd207d-51aa-4df7-bfa7-be70eb68f04e' ile eşleşen bir Session_Id olan kayıtları arar. Bu belirli Session_Id içeren tüm tablo ve sütunlardan kayıtları alır.

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

Çıktı

kaynak_ Session_Id Seviye Etkinlik Metni 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"}

Aşağıdaki örnek, veritabanında belirtilen Session_Id kayıtları arar ve bu kayıtların tüm sütunlarını tek bir dinamik nesne olarak döndürür.

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

Birleşim işlevi gördüğü find durum örnekleri

find Kusto'daki işleç bazen, çoğunlukla birden çok tabloda arama yapmak için kullanıldığında bir union işleç gibi davranabilir.

Aşağıdaki örnek önce EventsTable1'i yalnızca hata düzeyi kayıtları içerecek şekilde filtreleyen bir görünüm oluşturur. Ardından, bu filtrelenmiş görünümde ve EventsTable2 tablosunda belirli bir Session_Id olan kayıtları arar.

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

Aşağıdaki örneklerde, işlecin farklı türlerde find birden çok tabloda bir sütun göründüğünde nasıl davranabileceği union gösterilmektedir. Bu durumda, ProcessId sütun hem Tablo1 hem de Tablo2'de bulunur, ancak farklı türlerdedir. Bu örnekte, komutunu çalıştırarak iki tablo oluşturun:

.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) şeklindedir.

  • Aşağıdaki sorgu 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ıdır (Level:string, Timestamp, ProcessId_string)