find işleci
Ş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.
'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"
Sözdizimi
find
[withsource
= ColumnName] [in
(
Tablolar)
]where
Koşul [ |project-smart
project
ColumnName[:
ColumnType,
... ] [,
pack_all()
]]find
Koşul [ |project-smart
project
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 E baş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ı ileE
başlayan tüm tabloların birleşimini oluşturur.
- Bir tablonun adı, örneğin
project-smart
|project
: Belirtilmezseproject-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 true
dö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 ' sonucundakifind
her 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
find
kapsam 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
find
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ü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ü Hernandez
iç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 C
başlayan ve herhangi bir sütunun sözcüğünü Hernandez
iç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ü Kusto
iç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ü Kusto
iç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ü Kusto
iç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ü Kusto
iç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 find
union
İş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
union
yü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
union
yü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)