find operátor
Megkeresi azokat a sorokat, amelyek megfelelnek egy predikátumnak egy táblakészletben.
A hatóköre find
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"
Megjegyzés
find
operátor lényegesen kevésbé hatékony, mint az oszlopspecifikus szövegszűrés. Ha az oszlopok ismertek, javasoljuk, hogy használja a where operátort. find
nem fog megfelelően működni, 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.
Syntax
find
[withsource
= ColumnName] [in
(
Tables)
]where
Predikátum [project-smart
|project
ColumnName[:
ColumnType,
... ] [,
pack_all()
]]find
Predikátum [project-smart
|project
ColumnName[:
ColumnType,
... ] [,
pack_all()
]]
További információ a szintaxis konvenciókról.
Paraméterek
Név | Típus | Kötelező | Leírás |
---|---|---|---|
ColumnName | string |
Alapértelmezés szerint a kimenet egy source_ nevű oszlopot tartalmaz, amelynek értékei azt jelzik, hogy melyik forrástábla járult hozzá az egyes sorokhoz. Ha meg van adva, a columnName lesz használva a source_ helyett. A helyettesítő karakterek egyeztetése után, ha a lekérdezés egynél több adatbázis tábláira hivatkozik, beleértve az alapértelmezett adatbázist is, az oszlop értéke egy, az adatbázissal minősített táblanévvel fog rendelkezni. Hasonlóképpen a fürt - és adatbázis-minősítések is megjelennek az értékben, ha több fürtre hivatkoznak. | |
Predikátum | bool |
✔️ | Ezt a logikai kifejezést minden egyes bemeneti tábla minden sorára kiértékeli a rendszer. 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. Az alábbi eszközöket 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 halmaza. Például E* az adatbázis összes táblájának egyesítését képezné, amelynek neve a következővel E kezdődik: . |
|
project-smart vagy project |
string |
Ha nincs megadva, project-smart alapértelmezés szerint a rendszer használja. További információkért lásd a kimeneti séma részleteit. |
withsource=
ColumnName: Nem kötelező. Alapértelmezés szerint a kimenet egy source_ nevű oszlopot tartalmaz, amelynek értékei azt jelzik, hogy melyik forrástábla járult hozzá az egyes sorokhoz. Ha meg van adva, a columnName lesz használva a source_ helyett.Predikátum: Kifejezés
boolean
a [,
Table, ...] tábla bemeneti tábláinak oszlopai felett. 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 a find a következő összes táblában keres:
- Egy tábla neve, például:
Events
- Lekérdezési kifejezés, például
(Events | where id==42)
- Egy helyettesítő karakterrel megadott táblakészlet. Például az összes olyan tábla egyesítését alkotná,
E*
amelynek a neve a következővelE
kezdődik: .
- Egy tábla neve, például:
project-smart
|project
: Ha nincs megadvaproject-smart
, a rendszer alapértelmezés szerint ezt használja. További információkért lásd a kimeneti séma részleteit.
Válaszok
A(z) [,
Table, ...] tábla azon sorainak átalakítása, amelyek predikátumatrue
. A sorok a kimeneti séma szerint lesznek átalakítva.
Kimeneti séma
source_ oszlop
A find operátor kimenete mindig tartalmaz egy source_ oszlopot a forrástábla nevével. Az oszlop a paraméterrel withsource
nevezhető át.
eredmények oszlopai
A program kiszűri azokat a forrástáblákat, amelyek nem tartalmaznak a predikátumértékelés által használt oszlopokat.
A használatakor project-smart
a kimenetben megjelenő oszlopok a következőek lesznek:
- A predikátumban explicit módon megjelenő oszlopok.
- Az összes szűrt tábla közös oszlopai.
A többi oszlop egy tulajdonságzsákba lesz csomagolva, és egy további pack
oszlopban fog megjelenni.
A predikátum által explicit módon hivatkozott és több, több típusú táblában megjelenő oszlopok mindegyik típushoz eltérő oszlopot fognak tartalmazni az eredménysémában. Az egyes oszlopnevek az eredeti oszlop nevéből és típusából lesznek összeállítva, aláhúzásjelekkel elválasztva.
ColumnName[:
ColumnType,
... ] [,
pack_all()
]:project
- Az eredménytábla a listában megadott oszlopokat tartalmazza. Ha egy forrástábla nem tartalmaz egy bizonyos oszlopot, a megfelelő sorok értékei null értékűek lesznek.
- Oszlopnévvel rendelkező ColumnType megadásakor az "eredmény" oszlopban a megadott típus lesz, és az értékek szükség esetén erre a típusra lesznek adva. A predikátum kiértékelésekor az öntvény nem lesz hatással az oszloptípusra.
- A használat során
pack_all()
az összes oszlop , beleértve a tervezett oszlopokat is, egy tulajdonságcsomagba van csomagolva, és alapértelmezés szerint egy további oszlopban jelenik meg, alapértelmezés szerint "column1". A tulajdonságcsomagban a forrásoszlop neve a tulajdonság neve, az oszlop értéke pedig tulajdonságértékként szolgál.
Predikátumszintaxis
A find operátor támogatja a * has
kifejezés alternatív szintaxisát, és csak kifejezés használatával keres egy kifejezést az összes bemeneti oszlopban.
Néhány szűrőfüggvény összegzését a where operátor című témakörben tekinti meg.
Jegyzetek
- 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ípusa van, és
project-smart
használatban van, az egyes típusoknak megfelelő oszlop lesz azfind
eredményben, az egyesítő szakaszban leírtak szerint - Ha project-smartot használ, a predikátumban, a forrástáblák készletében vagy a táblák sémájában végzett módosítások a kimeneti sémát is megváltoztathatják. Ha állandó eredménysémára van szükség, használja inkább a projectet
find
A hatókör nem tartalmazhat függvényeket. Ha egy függvényt szeretne belefoglalni a keresési hatókörbe, definiáljon egy let utasításta view kulcsszóval.
Teljesítménnyel kapcsolatos tippek
- Táblázatos kifejezések helyett használjon táblázatoskifejezéseket.
Táblázatos kifejezés esetén a find operátor visszaesik egy
union
olyan lekérdezésre, amely teljesítménycsökkenést eredményezhet. - Ha egy oszlop, amely több táblában jelenik meg, és több típussal rendelkezik, a projekt záradékának része, inkább adjon hozzá egy ColumnType értéket a projekt záradékához, mint a tábla módosítása előtt
find
. - Adjon hozzá időalapú szűrőket a predikátumhoz. Használjon datetime oszlopértéket vagy ingestion_time().
- Teljes szöveges keresés helyett adott oszlopokban kereshet.
- Jobb, ha nem hivatkozunk olyan oszlopokra, amelyek több táblában jelennek meg, és több típussal rendelkeznek. Ha a predikátum egynél több típus esetében érvényes az ilyen oszloptípusok feloldásakor, a lekérdezés visszaáll az egyesítésre. Lásd például azokat az eseteket, amikor a keresés unióként fog működni.
Példák
Kifejezéskeresés az aktuális adatbázis összes táblájában
A lekérdezés megkeresi az aktuális adatbázis összes táblájának összes sorát, amelyben bármely oszlop tartalmazza a szót Hernandez
. Az eredményként kapott rekordok a kimeneti séma szerint lesznek átalakítva. A kimenet tartalmazza a Customers
tábla sorait és az SalesTable
adatbázis tábláját ContosoSales
.
find "Hernandez"
Kifejezéskeresés az aktuális adatbázis névmintájának megfelelő összes táblában
A lekérdezés az aktuális adatbázis összes táblájának összes sorát megkeresi, amelynek neve a következővel C
kezdődik: , és amelyben bármely oszlop tartalmazza a szót Hernandez
. Az eredményként kapott rekordok a kimeneti séma szerint lesznek átalakítva. A kimenet most már csak a Customers
táblából származó rekordokat tartalmazza.
find in (C*) where * has "Hernandez"
Kifejezéskeresés a fürt összes adatbázisának összes táblájában
A lekérdezés az összes olyan adatbázis összes táblájának összes sorát megkeresi, amelyben bármely oszlop tartalmazza a szót Kusto
.
Ez a lekérdezés adatbázisközi lekérdezés.
Az eredményként kapott rekordok a kimeneti séma szerint lesznek átalakítva.
find in (database('*').*) where * has "Kusto"
Kifejezéskeresés a fürt névmintájának megfelelő összes táblában és adatbázisban
A lekérdezés megkeresi az összes olyan tábla összes sorát, amelynek a neve az összes olyan adatbázisban kezdődik K
, amelynek a neve B
és amelyben bármely oszlop tartalmazza a szót Kusto
.
Az eredményként kapott rekordok a kimeneti séma szerint lesznek átalakítva.
find in (database("S*").C*) where * has "Kusto"
Kifejezéskeresés több fürtben
A lekérdezés megkeresi az összes olyan tábla összes sorát, amelynek a neve az összes olyan adatbázisban kezdődik K
, amelynek a neve B
és amelyben bármely oszlop tartalmazza a szót Kusto
.
Az eredményként kapott rekordok a kimeneti séma szerint 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 az összes olyan tábla összes sorát megkeresi, amelyben bármely oszlop tartalmazza a szót Kusto
.
Az eredményként kapott rekordok a kimeneti séma szerint lesznek átalakítva.
find "Kusto"
Példák a find
kimeneti eredményekre
Az alábbi példák bemutatják, hogyan find
használható két táblán keresztül: EventsTable1 és EventsTable2.
Tegyük fel, hogy a következő két táblázat tartalma van:
EventsTable1
Session_Id | Level | EventText | Verzió |
---|---|---|---|
acbd207d-51aa-4df7-bfa7-be70eb68f04e | Tájékoztatás | 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 | Tájékoztatás | Néhány szöveg4 | 1.1.0-s verzió |
EventsTable2
Session_Id | Level | EventText | EventName |
---|---|---|---|
f7d5f95f-f580-4ea6-830b-5776c8d64fdd | Tájékoztatás | Néhány egyéb szöveg1 | Esemény1 |
acbd207d-51aa-4df7-bfa7-be70eb68f04e | Tájékoztatás | Néhány egyéb szöveg2 | 2. esemény |
acbd207d-51aa-4df7-bfa7-be70eb68f04e | Hiba | Egyéb szöveg3 | Esemény3 |
15eaeab5-8576-4b58-8fc6-478f75d8fee4 | Hiba | Néhány egyéb szöveg4 | Esemény4 |
Gyakori oszlopok keresése, gyakori és ritka oszlopok kivetítése, és a többi becsomagolása
find in (EventsTable1, EventsTable2)
where Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e' and Level == 'Error'
project EventText, Version, EventName, pack_all()
Kimenet
Forrás_ | EventText | Verzió | EventName | Pack_ |
---|---|---|---|---|
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 ritka oszlopokban
find Version == 'v1.0.0' or EventName == 'Event1' project Session_Id, EventText, Version, EventName
Kimenet
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 | Néhány egyéb szöveg1 | Esemény1 |
Megjegyzés: a gyakorlatban az EventsTable1 sorokat predikátummal Version == 'v1.0.0'
szűrjük, az EventsTable2 sorokat pedig predikátummal EventName == 'Event1'
szűrjük.
Rövidített jelölés használata az aktuális adatbázis összes táblájában való kereséshez
find Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e'
Kimenet
Forrás_ | Session_Id | Level | EventText | Pack_ |
---|---|---|---|---|
EventsTable1 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | Tájékoztatás | 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 | Tájékoztatás | 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ágcsomagként
find Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e' project pack_all()
Kimenet
Forrás_ | Pack_ |
---|---|
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 find
a union
Nem táblázatos kifejezés használata operandus kereséseként
let PartialEventsTable1 = view() { EventsTable1 | where Level == 'Error' };
find in (PartialEventsTable1, EventsTable2)
where Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e'
Több táblában megjelenő és több típussal rendelkező oszlopra való hivatkozás
Tegyük fel, hogy két táblát hoztunk létre a következő futtatásával:
.create tables
Table1 (Level:string, Timestamp:datetime, ProcessId:string),
Table2 (Level:string, Timestamp:datetime, ProcessId:int64)
- A következő lekérdezés a következőként lesz végrehajtva:
union
.
find in (Table1, Table2) where ProcessId == 1001
A kimeneti eredményséma (Level:string, Timestamp, ProcessId_string, ProcessId_int) lesz.
- A következő lekérdezés is a következőként lesz végrehajtva,
union
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)
Visszajelzés
https://aka.ms/ContentUserFeedback.
Hamarosan elérhető: 2024-ben fokozatosan kivezetjük a GitHub-problémákat a tartalom visszajelzési mechanizmusaként, és lecseréljük egy új visszajelzési rendszerre. További információ:Visszajelzés küldése és megtekintése a következőhöz: