Megosztás a következőn keresztül:


operátor keresése

A következőkre vonatkozik: ✅Microsoft FabricAzure Data ExplorerAzure MonitorMicrosoft Sentinel

Megkeresi azokat a sorokat, amelyek egy táblában egy predikátumnak felelnek meg.

A find operátor hatóköre lehet adatbázisközi vagy fürtök közötti is.

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"

Jegyzet

find operátor lényegesen kevésbé hatékony, mint az oszlopspecifikus szövegszűrés. Ha az oszlopok ismertek, azt javasoljuk, hogy használja a , ahol az operátor. find nem működik megfelelően, ha a munkaterület nagy számú táblát és oszlopot tartalmaz, és a beolvasott adatmennyiség magas, és a lekérdezés időtartománya magas.

Szintaxis

  • find [withsource= ColumnName] [in(Táblák)] wherePredikátum [project-smart | projectColumnName[:ColumnType, ... ] [,pack_all()]]

  • find Predikátum [project-smart | projectColumnName[:ColumnType, ... ] [,pack_all()]]

További információ szintaxiskonvenciákról.

Paraméterek

Név Típus Szükséges Leírás
ColumnName string Alapértelmezés szerint a kimenet tartalmaz egy source_ nevű oszlopot, amelynek értékei azt jelzik, hogy melyik forrástábla járult hozzá az egyes sorokhoz. Ha meg van adva, ColumnNamesource_helyett. A helyettesítő karakterek egyeztetése után, ha a lekérdezés több adatbázis tábláira hivatkozik, beleértve az alapértelmezett adatbázist is, ennek az oszlopnak az értéke az adatbázishoz tartozó táblanévvel rendelkezik. Hasonlóképpen fürt és adatbázis- minősítések is szerepelnek az értékben, ha egynél több fürtre hivatkoznak.
Predikátum bool ✔️ Ez a logikai kifejezés minden egyes bemeneti tábla minden sorára ki lesz értékelve. További információ: predikátum-szintaxis részletei.
táblák string Nulla vagy több vesszővel tagolt táblahivatkozás. Alapértelmezés szerint find az aktuális adatbázis összes táblájában megjelenik. A következőt használhatja:
1. Egy tábla neve, például Events
2. Lekérdezési kifejezés, például (Events | where id==42)
3. Helyettesítő karakterrel megadott táblák készlete. A E* például az adatbázis összes táblájának egyesítését képezné, amelynek a neve Ekezdődik.
project-smart vagy project string Ha nincs megadva, a project-smart alapértelmezés szerint a rendszer használja. További információ: kimeneti séma részletei.
  • withsource= ColumnName: Nem kötelező. Alapértelmezés szerint a kimenet tartalmaz egy source_ nevű oszlopot, amelynek értékei azt jelzik, hogy melyik forrástábla járult hozzá az egyes sorokhoz. Ha meg van adva, ColumnNamesource_helyett.

  • Predikátum: booleankifejezés a bemeneti táblák oszlopai felett Tábla [,Tábla, ...]. A rendszer minden egyes bemeneti tábla minden sorához kiértékeli. További információ: predikátum-szintaxis részletei.

  • táblák: Nem kötelező. Nulla vagy több vesszővel tagolt táblahivatkozás. Alapértelmezés szerint megkeresi az összes táblát:

    • Tábla neve, például Events
    • Lekérdezési kifejezés, például (Events | where id==42)
    • Helyettesítő karakterrel megadott táblák készlete. A E* például az összes olyan tábla egyesítését alkotná, amelynek a neve Ekezdődik.
  • project-smart | project: Ha nincs megadva, a rendszer alapértelmezés szerint project-smart használ. További információ: kimeneti séma részletei.

Visszatér

Tábla [,Tábla, ...] sorainak átalakítása, amelyek Predikátumtrue. A sorokat a rendszer a kimeneti sémaszerint alakítja át.

Kimeneti séma

source_ oszlop

Az find operátor kimenete mindig tartalmaz egy source_ oszlopot a forrástábla nevével. Az oszlop átnevezhető a withsource paraméterrel.

találatoszlopok

A forrástáblák, amelyek nem tartalmaznak a predikátum kiértékelése által használt oszlopot, szűrve lesznek.

A project-smarthasználatakor a kimenetben megjelenő oszlopok a következők:

  • A predikátumban explicit módon megjelenő oszlopok.
  • Az összes szűrt táblára jellemző oszlopok.

A többi oszlop egy tulajdonságzsákba van csomagolva, és egy további pack oszlopban jelenik meg. A predikátum által explicit módon hivatkozott és több, több típusú táblában megjelenő oszlop az eredménysémában minden ilyen típushoz eltérő oszlopot használ. Az egyes oszlopnevek az eredeti oszlopnévből és típusból épülnek fel, aláhúzásjelekkel elválasztva.

Ha projectColumnName[:ColumnType, ... ] [,pack_all()]:

  • Az eredménytábla tartalmazza a listában megadott oszlopokat. Ha egy forrástábla nem tartalmaz egy adott oszlopot, a megfelelő sorok értékei null értékűek.
  • Ha egy ColumnType ad meg egy ColumnName, az "eredmény" oszlopa az adott típussal rendelkezik, és szükség esetén az értékek erre a típusra lesznek vetve. Az öntésnek nincs hatása az oszloptípusra a Predikátumkiértékelésekor.
  • Ha pack_all() használ, az összes oszlop, beleértve a tervezett oszlopokat is, egy tulajdonságcsomagba van csomagolva, és alapértelmezés szerint egy extra oszlopban jelenik meg, alapértelmezés szerint "oszlop1". A tulajdonságcsomagban a forrásoszlop neve lesz a tulajdonság neve, az oszlop értéke pedig a tulajdonság értéke.

Predikátum szintaxisa

A find operátor támogatja a * has kifejezés alternatív szintaxisát, és csak kifejezéshasználatával keres egy kifejezést az összes bemeneti oszlopban.

Néhány szűrőfüggvény összegzése: , ahol az operátor.

Megfontolások

  • Ha a project záradék olyan oszlopra hivatkozik, amely több táblában jelenik meg, és több típussal rendelkezik, a típusnak ezt az oszlophivatkozást kell követnie a projekt záradékában
  • Ha egy oszlop több táblában jelenik meg, és több típussal rendelkezik, és project-smart van használatban, a finderedményében minden típushoz tartozik egy megfelelő oszlop, az egyesítő
  • Ha projektalapúhasznál, a predikátumban, a forrástáblákban vagy a táblák sémájában végzett módosítások a kimeneti sémát is módosíthatják. Ha állandó eredménysémára van szükség, használja inkább projekt
  • find hatókör nem tartalmazhat függvényeket. Ha egy függvényt szeretne belefoglalni a find hatókörébe, definiáljon egy let utasítástkulcsszómegtekintésével.

Teljesítménytippek

  • Használjon táblázatokattáblázatos kifejezések helyett. Táblázatos kifejezés esetén a keresési operátor visszaesik egy union lekérdezésre, amely teljesítménycsökkenést eredményezhet.
  • Ha egy több táblában megjelenő és több típusokból álló oszlop a projekt záradék része, inkább adjon hozzá egy ColumnType a projekt záradékhoz, hogy módosítsa a táblát, mielőtt átadaná azt find.
  • Adjon hozzá időalapú szűrőket a predikátumhoz. Használjon datetime oszlopértéket vagy ingestion_time().
  • Keresés adott oszlopokban a teljes szöveges keresés helyett.
  • Jobb, ha nem hivatkozik több táblában megjelenő és több típussal rendelkező oszlopokra. Ha a predikátum érvényes az ilyen típusú oszlopok több típusra történő feloldásakor, a lekérdezés visszaesik az egyesítésre. Lásd például példákat azokra az esetekre, amikor find unióként.

Példák

A cikkben szereplő példák a nyilvánosan elérhető tábláit használják a fürt, például a Minták adatbázis StormEvents tábláját.

A cikkben szereplő példák nyilvánosan elérhető táblákat használnak, például a Weather Analytics StormEvents táblát, mintaadatokat.

Kifejezéskeresés az összes táblában

A lekérdezés megkeresi az aktuális adatbázis összes táblájának összes sorát, amelyben bármelyik oszlop tartalmazza a Hernandezszót. Az eredményként kapott rekordok a kimeneti sémaszerint lesznek átalakítva. A kimenet a Customers táblából és a ContosoSales adatbázis SalesTable táblájából származó sorokat tartalmazza.

find "Hernandez"

kimeneti

Ez a táblázat a kimenet első három sorát jeleníti meg.

forrás_ csomagol_
Ügyfelek {"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"}
Ügyfelek {"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"}
Ügyfelek {"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"}
... ...

Kifejezéskeresés a névmintának megfelelő összes táblában

A lekérdezés megkeresi az aktuális adatbázis összes táblájának összes sorát, amelynek a neve Ckezdődik, és amelyben bármely oszlop tartalmazza a Hernandezszót. Az eredményként kapott rekordok a kimeneti sémaszerint lesznek átalakítva. A kimenet most csak a Customers táblából származó rekordokat tartalmazza.

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

kimeneti

Ez a táblázat a kimenet első három sorát jeleníti meg.

forrás_ csomagol_
ConferenceSessions {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","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.00000000Z","duration":60,"time_and_duration":"Wednesday, Május 26\n8:30 – 9:30 (GMT) ","kusto_affinity":"Szűrt"}
ConferenceSessions {"conference":"Ignite 2018","sessionid":"THR3115","session_title":"Azure Log Analytics: Részletes betekintés az Azure Kusto lekérdezési nyelvébe. ","session_type":"Színház","tulajdonos":"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 query language topics","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.00000000Z","duration":60,"time_and_duration":"Wednesday, Május 26\n8:30 – 9:30 (GMT) ","kusto_affinity":"Szűrt"}
... ...

Kifejezéskeresés a fürtben

A lekérdezés megkeresi a fürt összes adatbázisának összes táblájának összes sorát, amelyben bármelyik oszlop tartalmazza a Kustoszót. Ez a lekérdezés egy adatbázisközi lekérdezés. Az eredményként kapott rekordok a kimeneti sémaszerint lesznek átalakítva.

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

kimeneti

Ez a táblázat a kimenet első három sorát jeleníti meg.

forrás_ csomagol_
adatbázis("Minták"). ConferenceSessions {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","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.00000000Z","duration":60,"time_and_duration":"Wednesday, Május 26\n8:30 – 9:30 (GMT) ","kusto_affinity":"Szűrt"}
adatbázis("Minták"). ConferenceSessions {"conference":"Ignite 2018","sessionid":"THR3115","session_title":"Azure Log Analytics: Részletes betekintés az Azure Kusto lekérdezési nyelvébe. ","session_type":"Színház","tulajdonos":"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"}
adatbázis("Minták"). ConferenceSessions {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","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.00000000Z","duration":60,"time_and_duration":"Wednesday, Május 26\n8:30 – 9:30 (GMT) ","kusto_affinity":"Szűrt"}
... ...

A fürt névmintájának megfelelő kifejezéskeresés

A lekérdezés megkeresi az összes olyan tábla összes sorát, amelynek a neve K kezdődik az összes olyan adatbázisban, amelynek a neve B kezdődik, és amelyben az oszlopok tartalmazzák a Kustoszót. Az eredményként kapott rekordok a kimeneti sémaszerint lesznek átalakítva.

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

kimeneti

Ez a táblázat a kimenet első három sorát jeleníti meg.

forrás_ csomagol_
ConferenceSessions {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","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.00000000Z","duration":60,"time_and_duration":"Wednesday, Május 26\n8:30 – 9:30 (GMT) ","kusto_affinity":"Szűrt"}
ConferenceSessions {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","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.00000000Z","duration":60,"time_and_duration":"Wednesday, Május 26\n8:30 – 9:30 (GMT) ","kusto_affinity":"Szűrt"}
ConferenceSessions {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","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.00000000Z","duration":60,"time_and_duration":"Wednesday, Május 26\n8:30 – 9:30 (GMT) ","kusto_affinity":"Szűrt"}
... ...

Kifejezéskeresés több fürtben

A lekérdezés megkeresi az összes olyan tábla összes sorát, amelynek a neve K kezdődik az összes olyan adatbázisban, amelynek a neve B kezdődik, és amelyben az oszlopok tartalmazzák a Kustoszót. Az eredményként kapott rekordok a kimeneti sémaszerint lesznek átalakítva.

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

Kifejezéskeresés az összes táblában

A lekérdezés megkeresi az összes olyan tábla összes sorát, amelyben bármelyik oszlop tartalmazza a Kustoszót. Az eredményként kapott rekordok a kimeneti sémaszerint lesznek átalakítva.

find "Kusto"

Példák find kimeneti eredményekre

Az alábbi példák bemutatják, hogyan használható find két táblán: EventTable1 és EventTable2. Tegyük fel, hogy a következő tartalom a következő két táblázatból áll:

EventsTable1

Session_Id Szint EventText Verzió
acbd207d-51aa-4df7-bfa7-be70eb68f04e Információ Néhány szöveg1 1.0.0-s verzió
acbd207d-51aa-4df7-bfa7-be70eb68f04e Hiba Néhány szöveg2 1.0.0-s verzió
28b8e46e-3c31-43cf-83cb-48921c3986fc Hiba Néhány szöveg3 1.0.1-s verzió
8f057b11-3281-45c3-a856-05ebb18a3c59 Információ Néhány szöveg4 1.1.0-s verzió

EventsTable2

Session_Id Szint EventText EventName
f7d5f95f-f580-4ea6-830b-5776c8d64fdd Információ Egyéb szöveg1 Esemény1
acbd207d-51aa-4df7-bfa7-be70eb68f04e Információ Egyéb szöveg2 Esemény2
acbd207d-51aa-4df7-bfa7-be70eb68f04e Hiba Egyéb szöveg3 Esemény3
15eaeab5-8576-4b58-8fc6-478f75d8fee4 Hiba Egyéb szöveg4 Esemény4

Keresés közös oszlopokban, közös és nem gyakori oszlopokban, és csomagolja be a többit

A lekérdezés meghatározott rekordokat keres EventTable1 és EventTable2 egy adott Session_Id és egy hiba szint alapján. Ezután három konkrét oszlopot ad ki: EventText, Verzióés EventName, és az összes többi oszlopot egy dinamikus objektumba csomagolja.

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

kimeneti

forrás_ EventText Verzió EventName csomagol_
EventsTable1 Néhány szöveg2 1.0.0-s verzió {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Error"}
EventsTable2 Egyéb szöveg3 Esemény3 {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Error"}

Keresés gyakori és nem gyakori oszlopokban

A lekérdezés olyan rekordokat keres, amelyek verziójú "v1.0.0" vagy EventName "Event1" néven, majd négy konkrét oszlopot jelöl ki (kiválaszt) : Session_Id, EventText, Verzió, és EventName ezekből a szűrt eredményekből.

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

kimeneti

forrás_ Session_Id EventText Verzió EventName
EventsTable1 acbd207d-51aa-4df7-bfa7-be70eb68f04e Néhány szöveg1 1.0.0-s verzió
EventsTable1 acbd207d-51aa-4df7-bfa7-be70eb68f04e Néhány szöveg2 1.0.0-s verzió
EventsTable2 f7d5f95f-f580-4ea6-830b-5776c8d64fdd Egyéb szöveg1 Esemény1

Jegyzet

A gyakorlatban EventsTable1 sorokat Version == 'v1.0.0' predikátummal szűrjük, EventTable2 sorokat pedig EventName == 'Event1' predikátummal szűrjük.

Rövidített jelölés használata az aktuális adatbázis összes táblájában való kereséshez

Ez a lekérdezés olyan rekordokat keres az adatbázisban, amelyek Session_Id egyeznek az "acbd207d-51aa-4df7-bfa7-be70eb68f04e" kifejezéssel. Az adott Session_Idtartalmazó összes táblából és oszlopból lekéri a rekordokat.

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

kimeneti

forrás_ Session_Id Szint EventText csomagol_
EventsTable1 acbd207d-51aa-4df7-bfa7-be70eb68f04e Információ Néhány szöveg1 {"Version":"v1.0.0"}
EventsTable1 acbd207d-51aa-4df7-bfa7-be70eb68f04e Hiba Néhány szöveg2 {"Version":"v1.0.0"}
EventsTable2 acbd207d-51aa-4df7-bfa7-be70eb68f04e Információ Egyéb szöveg2 {"EventName":"Event2"}
EventsTable2 acbd207d-51aa-4df7-bfa7-be70eb68f04e Hiba Egyéb szöveg3 {"EventName":"Event3"}

Az egyes sorok eredményeinek visszaadása tulajdonságtáskaként

Ez a lekérdezés megkeresi az adatbázisban a megadott Session_Id rendelkező rekordokat, és a rekordok összes oszlopát egyetlen dinamikus objektumként adja vissza.

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

kimeneti

forrás_ csomagol_
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"}

Példák olyan esetekre, amikor findunion

A Kusto find operátora néha union operátorként is működhet, főleg akkor, ha több táblában való keresésre használják.

Nem egybeeső kifejezés használata operandus kereséseként

A lekérdezés először létrehoz egy nézetet, amely szűri EventsTable1, hogy csak hibaszintű rekordokat tartalmazzon. Ezután ebben a szűrt nézetben, az EventTable2 táblában pedig egy adott Session_Idrendelkező rekordokat keres.

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

Hivatkozás több táblában megjelenő és több típussal rendelkező oszlopra

Ebben a példában hozzon létre két táblát a következő futtatásával:

.create tables 
  Table1 (Level:string, Timestamp:datetime, ProcessId:string),
  Table2 (Level:string, Timestamp:datetime, ProcessId:int64)
  • A rendszer a következő lekérdezést unionként hajtja végre.
find in (Table1, Table2) where ProcessId == 1001

A kimeneti eredményséma (Level:string, Timestamp, ProcessId_string, ProcessId_int).

  • A következő lekérdezés unionként lesz végrehajtva, de egy másik eredménysémát hoz létre.
find in (Table1, Table2) where ProcessId == 1001 project Level, Timestamp, ProcessId:string 

A kimeneti eredményséma (Level:string, Timestamp, ProcessId_string)