sökoperator
Gäller för: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Hittar rader som matchar ett predikat i en uppsättning tabeller.
Omfånget för find
-operatorn kan också vara korsdatabas eller korskluster.
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
operatorn är betydligt mindre effektiv än kolumnspecifik textfiltrering. När kolumnerna är kända rekommenderar vi att du använder där operatorn.
find
fungerar inte bra när arbetsytan innehåller ett stort antal tabeller och kolumner och datavolymen som genomsöks är hög och tidsintervallet för frågan är högt.
Syntax
find
[withsource
= ColumnName] [in
(
Tables)
]where
Predicate [project-smart
|project
ColumnName[:
ColumnType,
... ] [,
pack_all()
]]find
Predikat [project-smart
|project
ColumnName[:
ColumnType,
... ] [,
pack_all()
]]
Läs mer om syntaxkonventioner.
Parametrar
Namn | Typ | Krävs | Beskrivning |
---|---|---|---|
ColumnName | string |
Som standard innehåller utdata en kolumn med namnet source_ vars värden anger vilken källtabell som bidrog till varje rad. Om det anges används ColumnName i stället för source_. Om frågan refererar till tabeller från fler än en databas, inklusive standarddatabasen, har värdet för den här kolumnen ett tabellnamn som är kvalificerat för databasen efter jokerteckenmatchning. På samma sätt finns kluster och databas kvalifikationer i värdet om fler än ett kluster refereras till. | |
Predikat | bool |
✔️ | Det här booleska uttrycket utvärderas för varje rad i varje indatatabell. Mer information finns i information om predikatsyntax. |
tabeller | string |
Noll eller fler kommaavgränsade tabellreferenser. Som standard letar find i alla tabeller i den aktuella databasen. Du kan använda:1. Namnet på en tabell, till exempel Events 2. Ett frågeuttryck, till exempel (Events | where id==42) 3. En uppsättning tabeller som anges med jokertecken. Till exempel skulle E* bilda en union av alla tabeller i databasen vars namn börjar med E . |
|
project-smart eller project |
string |
Om det inte anges används project-smart som standard. Mer information finns i information om utdataschemat. |
withsource=
ColumnName: Valfritt. Som standard innehåller utdata en kolumn med namnet source_ vars värden anger vilken källtabell som bidrog med varje rad. Om det anges används ColumnName i stället för source_.Predikat: Ett
boolean
uttryck över kolumnerna i indatatabellerna Tabell [,
Table, ...]. Den utvärderas för varje rad i varje indatatabell. Mer information finns i information om predikatsyntax.Tabeller: Valfritt. Noll eller fler kommaavgränsade tabellreferenser. Som standard hitta söker i alla tabeller efter:
- Namnet på en tabell, till exempel
Events
- Ett frågeuttryck, till exempel
(Events | where id==42)
- En uppsättning tabeller som har angetts med jokertecken. Till exempel skulle
E*
bilda en union av alla tabeller vars namn börjar medE
.
- Namnet på en tabell, till exempel
project-smart
|project
: Om det inte anges användsproject-smart
som standard. Mer information finns i information om utdataschemat.
Returnerar
Transformering av rader i Table [,
Table, ...] för vilka Predikat är true
. Raderna transformeras enligt utdataschema.
Utdataschema
source_ kolumn
find
-operatorns utdata innehåller alltid en source_ kolumn med källtabellens namn. Kolumnen kan byta namn med parametern withsource
.
resultatkolumner
Källtabeller som inte innehåller någon kolumn som används av predikatutvärderingen filtreras bort.
När du använder project-smart
är kolumnerna som visas i utdata:
- Kolumner som visas explicit i predikatet.
- Kolumner som är gemensamma för alla filtrerade tabeller.
Resten av kolumnerna packas i en egenskapspåse och visas i en extra pack
kolumn.
En kolumn som uttryckligen refereras till av predikatet och som visas i flera tabeller med flera typer, har en annan kolumn i resultatschemat för varje sådan typ. Vart och ett av kolumnnamnen konstrueras från det ursprungliga kolumnnamnet och typen, avgränsat med ett understreck.
När du använder project
ColumnName[:
ColumnType,
... ] [,
pack_all()
]:
- Resultattabellen innehåller de kolumner som anges i listan. Om en källtabell inte innehåller en viss kolumn är värdena i motsvarande rader null.
- När du anger en ColumnType- med en ColumnName-har den här kolumnen i "resultatet" den angivna typen och värdena omvandlas till den typen om det behövs. Gjutningen påverkar inte kolumntypen vid utvärdering av Predikat.
- När
pack_all()
används packas alla kolumner, inklusive de projicerade kolumnerna, i en egenskapspåse och visas i en extra kolumn, som standard kolumn1. I egenskapsuppsättningen fungerar källkolumnnamnet som egenskapsnamn och kolumnens värde fungerar som egenskapsvärde.
Predikatsyntax
Operatorn find
stöder en alternativ syntax för * has
-termen och använder bara term, genomsöker en term i alla indatakolumner.
En sammanfattning av vissa filtreringsfunktioner finns i där operatorn.
Överväganden
- Om
project
-satsen refererar till en kolumn som visas i flera tabeller och har flera typer, måste en typ följa den här kolumnreferensen i projektsatsen - Om en kolumn visas i flera tabeller och har flera typer och
project-smart
används, finns det en motsvarande kolumn för varje typ ifind
resultat, enligt beskrivningen i union - När du använder projektsmartkan ändringar i predikatet, i källtabelluppsättningen eller i tabellschemat resultera i en ändring av utdataschemat. Om ett konstant resultatschema behövs använder du projekt i stället
-
find
omfång kan inte innehålla funktioner. Om du vill inkludera en funktion ifind
-omfånget definierar du en låt -instruktionen med visa nyckelordet.
Prestandatips
- Använd tabeller i stället för tabelluttryck.
Om tabelluttryck faller sökoperatorn tillbaka till en
union
fråga som kan resultera i försämrad prestanda. - Om en kolumn som visas i flera tabeller och har flera typer, är en del av projektsatsen, föredrar du att lägga till en ColumnType- till projektsatsen framför att ändra tabellen innan den skickas till
find
. - Lägg till tidsbaserade filter i predikatet. Använd ett datetime-kolumnvärde eller ingestion_time().
- Sök i specifika kolumner i stället för en fulltextsökning.
- Det är bättre att inte referera till kolumner som visas i flera tabeller och har flera typer. Om predikatet är giltigt när du löser typen av sådana kolumner för mer än en typ återgår frågan till union.
Se till exempel exempel på fall där
find
fungerar som en union.
Exempel
Exemplen i den här artikeln använder offentligt tillgängliga tabeller i hjälpkluster, till exempel tabellen
StormEvents
i databasen Samples.
Exemplen i den här artikeln använder offentligt tillgängliga tabeller, till exempel tabellen
StormEvents
i Väderanalys exempeldata.
Termsökning i alla tabeller
Frågan hittar alla rader från alla tabeller i den aktuella databasen där en kolumn innehåller ordet Hernandez
. De resulterande posterna transformeras enligt utdataschema. Utdata innehåller rader från tabellen Customers
och tabellen SalesTable
i ContosoSales
-databasen.
find "Hernandez"
utdata
Den här tabellen visar de tre första raderna i utdata.
källa_ | packa_ |
---|---|
Kunder | {"CityName":"Ballard","CompanyName":"NULL","ContinentName":"Nordamerika","CustomerKey":5023,"Utbildning":"Partiell gymnasieskola","Förnamn":"Devin","Kön":"M","Efternamn":"Hernandez","MaritalStatus":"S","Ockupation":"Prästerlig","RegionCountryName":"Usa","StateProvinceName":"Washington"} |
Kunder | {"CityName":"Ballard","CompanyName":"NULL","ContinentName":"Nordamerika","CustomerKey":7814,"Utbildning":"Partiell högskola","Förnamn":"Kristy","Kön":"F","Efternamn":"Hernandez","MaritalStatus":"S","Ockupation":"Professional","RegionCountryName":"Usa","StateProvinceName":"Washington"} |
Kunder | {"CityName":"Ballard","CompanyName":"NULL","ContinentName":"Nordamerika","CustomerKey":7888,"Utbildning":"Partiell gymnasieskola","Förnamn":"Kari","Kön":"F","Efternamn":"Hernandez","MaritalStatus":"S","Ockupation":"Prästerlig","RegionCountryName":"Usa","StateProvinceName":"Washington"} |
... | ... |
Termsökning i alla tabeller som matchar ett namnmönster
Frågan hittar alla rader från alla tabeller i den aktuella databasen vars namn börjar med C
och i vilken kolumn som helst innehåller ordet Hernandez
. De resulterande posterna transformeras enligt utdataschema. Nu innehåller utdata endast poster från tabellen Customers
.
find in (C*) where * has "Hernandez"
utdata
Den här tabellen visar de tre första raderna i utdata.
källa_ | packa_ |
---|---|
ConferenceSessions | {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","session_type":"Roundtable","owner":"Avner Aharoni","deltagare":"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":"Onsdag, 26 maj\n08:30-09:30 GMT","kusto_affinity":"Fokuserad"} |
ConferenceSessions | {"conference":"Ignite 2018","sessionid":"THR3115","session_title":"Azure Log Analytics: Djupdykning i Azure Kusto-frågespråket. ","session_type":"Teater","ägare":"Jean Francois Berenguer","deltagare":"","URL":"https://myignite.techcommunity.microsoft.com/sessions/66329","nivå":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","deltagare":"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":"Onsdag, 26 maj\n08:30-09:30 GMT","kusto_affinity":"Fokuserad"} |
... | ... |
Termsökning i klustret
Frågan hittar alla rader från alla tabeller i alla databaser i klustret där valfri kolumn innehåller ordet Kusto
.
Den här frågan är en fråga mellan databaser.
De resulterande posterna transformeras enligt utdataschema.
find in (database('*').*) where * has "Kusto"
utdata
Den här tabellen visar de tre första raderna i utdata.
källa_ | packa_ |
---|---|
database("Samples"). ConferenceSessions | {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","session_type":"Roundtable","owner":"Avner Aharoni","deltagare":"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":"Onsdag, 26 maj\n08:30-09:30 GMT","kusto_affinity":"Fokuserad"} |
database("Samples"). ConferenceSessions | {"conference":"Ignite 2018","sessionid":"THR3115","session_title":"Azure Log Analytics: Djupdykning i Azure Kusto-frågespråket. ","session_type":"Teater","ägare":"Jean Francois Berenguer","deltagare":"","URL":"https://myignite.techcommunity.microsoft.com/sessions/66329","nivå":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 query language topics","session_type":"Roundtable","owner":"Avner Aharoni","deltagare":"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":"Onsdag, 26 maj\n08:30-09:30 GMT","kusto_affinity":"Fokuserad"} |
... | ... |
Termsökning som matchar ett namnmönster i klustret
Frågan hittar alla rader från alla tabeller vars namn börjar med K
i alla databaser vars namn börjar med B
och där alla kolumner innehåller ordet Kusto
.
De resulterande posterna transformeras enligt utdataschema.
find in (database("S*").C*) where * has "Kusto"
utdata
Den här tabellen visar de tre första raderna i utdata.
källa_ | packa_ |
---|---|
ConferenceSessions | {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","session_type":"Roundtable","owner":"Avner Aharoni","deltagare":"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":"Onsdag, 26 maj\n08:30-09:30 GMT","kusto_affinity":"Fokuserad"} |
ConferenceSessions | {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","session_type":"Roundtable","owner":"Avner Aharoni","deltagare":"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":"Onsdag, 26 maj\n08:30-09:30 GMT","kusto_affinity":"Fokuserad"} |
ConferenceSessions | {"conference":"Build 2021","sessionid":"CON-PRT103","session_title":"Roundtable: Advanced Kusto query language topics","session_type":"Roundtable","owner":"Avner Aharoni","deltagare":"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":"Onsdag, 26 maj\n08:30-09:30 GMT","kusto_affinity":"Fokuserad"} |
... | ... |
Termsökning i flera kluster
Frågan hittar alla rader från alla tabeller vars namn börjar med K
i alla databaser vars namn börjar med B
och där alla kolumner innehåller ordet Kusto
.
De resulterande posterna transformeras enligt utdataschema.
find in (cluster("cluster1").database("B*").K*, cluster("cluster2").database("C*".*))
where * has "Kusto"
Termsökning i alla tabeller
Frågan hittar alla rader från alla tabeller där en kolumn innehåller ordet Kusto
.
De resulterande posterna transformeras enligt utdataschema.
find "Kusto"
Exempel på find
utdataresultat
Följande exempel visar hur find
kan användas i två tabeller: EventsTable1 och EventsTable2.
Anta att vi har nästa innehåll i dessa två tabeller:
EventsTable1
Session_Id | Nivå | EventText | Version |
---|---|---|---|
acbd207d-51aa-4df7-bfa7-be70eb68f04e | Information | Viss text1 | v1.0.0 |
acbd207d-51aa-4df7-bfa7-be70eb68f04e | Fel | Viss text 2 | v1.0.0 |
28b8e46e-3c31-43cf-83cb-48921c3986fc | Fel | Viss text 3 | v1.0.1 |
8f057b11-3281-45c3-a856-05ebb18a3c59 | Information | Viss text 4 | v1.1.0 |
EventsTable2
Session_Id | Nivå | EventText | EventName |
---|---|---|---|
f7d5f95f-f580-4ea6-830b-5776c8d64fdd | Information | Viss annan text1 | Händelse 1 |
acbd207d-51aa-4df7-bfa7-be70eb68f04e | Information | Annan text 2 | Händelse 2 |
acbd207d-51aa-4df7-bfa7-be70eb68f04e | Fel | Annan text 3 | Händelse 3 |
15eaeab5-8576-4b58-8fc6-478f75d8fee4 | Fel | Annan text 4 | Händelse 4 |
Sök i vanliga kolumner, projekt gemensamma och ovanliga kolumner och packa resten
Frågan söker efter specifika poster i EventsTable1 och EventsTable2 baserat på en viss Session_Id och en Fel nivå. Sedan projiceras tre specifika kolumner: EventText, Versionoch EventNameoch packar alla andra återstående kolumner i ett dynamiskt objekt.
find in (EventsTable1, EventsTable2)
where Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e' and Level == 'Error'
project EventText, Version, EventName, pack_all()
utdata
källa_ | EventText | Version | EventName | packa_ |
---|---|---|---|---|
EventsTable1 | Viss text 2 | v1.0.0 | {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Error"} | |
EventsTable2 | Annan text 3 | Händelse 3 | {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Error"} |
Sök i vanliga och ovanliga kolumner
Frågan söker efter poster som antingen har Version som "v1.0.0" eller EventName som "Event1", och sedan projiceras (väljer) fyra specifika kolumner: Session_Id, EventText, Versionoch EventName från dessa filtrerade resultat.
find Version == 'v1.0.0' or EventName == 'Event1' project Session_Id, EventText, Version, EventName
utdata
källa_ | Session_Id | EventText | Version | EventName |
---|---|---|---|---|
EventsTable1 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | Viss text1 | v1.0.0 | |
EventsTable1 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | Viss text 2 | v1.0.0 | |
EventsTable2 | f7d5f95f-f580-4ea6-830b-5776c8d64fdd | Viss annan text1 | Händelse 1 |
Not
I praktiken filtreras EventsTable1 rader med Version == 'v1.0.0'
predikat och EventsTable2 rader filtreras med EventName == 'Event1'
predikat.
Använd förkortad notation för att söka i alla tabeller i den aktuella databasen
Den här frågan söker i databasen efter poster med en Session_Id som matchar "acbd207d-51aa-4df7-bfa7-be70eb68f04e". Den hämtar poster från alla tabeller och kolumner som innehåller den här specifika Session_Id.
find Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e'
utdata
källa_ | Session_Id | Nivå | EventText | packa_ |
---|---|---|---|---|
EventsTable1 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | Information | Viss text1 | {"Version":"v1.0.0"} |
EventsTable1 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | Fel | Viss text 2 | {"Version":"v1.0.0"} |
EventsTable2 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | Information | Annan text 2 | {"EventName":"Event2"} |
EventsTable2 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | Fel | Annan text 3 | {"EventName":"Event3"} |
Returnera resultatet från varje rad som en egenskapsuppsättning
Den här frågan söker i databasen efter poster med angiven Session_Id och returnerar alla kolumner i dessa poster som ett enda dynamiskt objekt.
find Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e' project pack_all()
utdata
källa_ | packa_ |
---|---|
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"} |
Exempel på fall där find
fungerar som union
Operatorn find
i Kusto kan ibland fungera som en union
-operator, främst när den används för att söka i flera tabeller.
Använda ett icke-tabelluttryck som hitta operand
Frågan skapar först en vy som filtrerar EventsTable1 för att endast inkludera poster på felnivå. Sedan söker den i den här filtrerade vyn och tabellen EventsTable2 efter poster med en specifik Session_Id.
let PartialEventsTable1 = view() { EventsTable1 | where Level == 'Error' };
find in (PartialEventsTable1, EventsTable2)
where Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e'
Referera till en kolumn som visas i flera tabeller och har flera typer
I det här exemplet skapar du två tabeller genom att köra:
.create tables
Table1 (Level:string, Timestamp:datetime, ProcessId:string),
Table2 (Level:string, Timestamp:datetime, ProcessId:int64)
- Följande fråga körs som
union
.
find in (Table1, Table2) where ProcessId == 1001
Utdataresultatschemat är (Level:string, Timestamp, ProcessId_string, ProcessId_int).
- Följande fråga körs som
union
, men skapar ett annat resultatschema.
find in (Table1, Table2) where ProcessId == 1001 project Level, Timestamp, ProcessId:string
Utdataresultatschemat är (Level:string, Timestamp, ProcessId_string)