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)
]where
Koşulu [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 | 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 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. çı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ı ileE
başlayan tüm tabloların birleşimini oluşturur.
- Tablonun adı, örneğin
project-smart
|project
: Belirtilmezseproject-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 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 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
find
ColumnType 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ü 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. Çı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 arama
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 tablolarda 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ö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:find
union
İş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
union
yü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
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)
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin