find 演算子
適用対象: ✅Microsoft Fabric✅Azure データ エクスプローラー✅Azure Monitor✅Microsoft Sentinel
テーブルのセットで述語が一致する行を見つけます。
find
演算子のスコープは、データベース間またはクラスター間でもかまいません。
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"
Note
find
演算子は、列固有のテキスト フィルター処理よりも実質的に効率が低くなります。 列がわかっている場合は常に、 where 演算子を使用することをお勧めします。 ワークスペースに多数のテーブルと列が含まれており、スキャン対象のデータ 量が多く、クエリの時間範囲が長い場合、find
はうまく機能しません。
構文
find
[withsource
= ColumnName] [in
(
Tables)
]where
Predicate [project-smart
|project
ColumnName[:
ColumnType,
... ][,
pack_all()
]]find
Predicate [project-smart
|project
ColumnName[:
ColumnType,
... ] [,
pack_all()
]]
構文規則について詳しく知る。
パラメーター
件名 | タイプ | Required | 説明 |
---|---|---|---|
[ColumnName] | string |
既定では、出力には source_ という名前の列が含まれ、その値は各行に関係するソース テーブルを示します。 指定した場合、source_の代わりに columnName 使用されます。 ワイルドカード照合の後、クエリが既定のデータベースを含む複数のデータベースのテーブルを参照する場合、この列の値にはデータベースで修飾されたテーブル名が含まれます。 同様に クラスター と データベース 修飾は、複数のクラスターが参照されている場合に値に存在します。 | |
Predicate | bool |
✔️ | このブール式は、各入力テーブルの各行に対して評価されます。 詳細については、述語構文の詳細を参照してください。 |
テーブル | string |
0 個以上のコンマ区切りテーブル参照。 既定では、find は現在のデータベース内のすべてのテーブルを検索します。 使用できるもの:1. テーブルの名前 (例: Events 2. クエリ式 (例: (Events | where id==42) 3. ワイルドカードで指定された一連のテーブル。 たとえば、 E* を使用すると、名前が E で始まるデータベース内のすべてのテーブルのユニオンが形成されます。 |
|
project-smart または project |
string |
指定しない場合、project-smart は既定で使用されます。 詳細については、出力スキーマの詳細を参照してください。 |
withsource=
ColumnName: 省略可能。 既定では、出力には source_ という名前の列が含まれ、その値は各行に関係するソース テーブルを示します。 指定した場合、source_の代わりに columnName 使用されます。述語: 入力テーブル
boolean
[Table, ...] の列に対する,
式。これは、各入力テーブルの各行に対して評価されます。 詳細については、述語構文の詳細を参照してください。テーブル: 省略可能。 0 個以上のコンマ区切りテーブル参照。 既定では、すべてのテーブル 検索 検索します。
-
Events
などのテーブルの名前 - クエリ式 (
(Events | where id==42)
- ワイルドカードで指定されたテーブルのセット。 たとえば、
E*
を使用すると、名前がE
で始まるすべてのテーブルのユニオンが形成されます。
-
project-smart
|project
: 指定されていない場合は、project-smart
が既定で使用されます。 詳細については、出力スキーマの詳細を参照してください。
返品
Table,
がされている [true
, ...] 内の行の変換。 行は、出力スキーマに従って変換されます。
出力スキーマ
source_ 列
find
演算子の出力には、常にソース テーブル名を持つ source_ 列が含まれます。 列の名前は、withsource
パラメーターを使用して変更できます。
結果列
述語の評価で使用される列が含まれていないソース テーブルは、フィルターで除外されます。
project-smart
を使用すると、出力に表示される列は次のようになります。
- 述語で明示的に示されている列。
- すべてのフィルター処理されたテーブルに共通の列。
残りの列はプロパティ バッグにパックされ、追加の pack
列に表示されます。
述語によって明示的に参照され、複数の型を持つ複数のテーブルに表示される列には、このような型ごとに結果スキーマに異なる列があります。 各列名は、元の列名と型から作成され、アンダースコアで区切ります。
project
ColumnName[:
ColumnType,
... ] [,
pack_all()
]:
- 結果テーブルには、リストで指定された列が含まれます。 ソース テーブルに特定の列が含まれていない場合、対応する行の値は null になります。
- ColumnNameで ColumnType を指定すると、"result" 内のこの列には指定された型があり、必要に応じて値はその型にキャストされます。 キャストは、述語を評価するときに列の型に影響しません。
-
pack_all()
を使用すると、投影列を含むすべての列がプロパティ バッグにパックされ、既定で追加の列 'column1' に表示されます。 プロパティ バッグでは、ソース列名がプロパティ名として機能し、列の値がプロパティ値として機能します。
述語の構文
find
演算子は、* has
用語の代替構文をサポートし、用語のみを使用して、すべての入力列で用語を検索します。
いくつかのフィルター処理関数の概要については、「where 演算子」を参照してください。
考慮 事項
- 複数のテーブルにあり、複数の型を持つ列が
project
句で参照されている場合、型は project 句のこの列参照に従う必要があります - 1 つの列が複数のテーブルに表示され、複数の型を持ち、
project-smart
が使用されている場合は、find
の結果の各型に対応する列 、共用体 - プロジェクト スマート 使用すると、述語、ソース テーブル セット、またはテーブル スキーマが変更され、出力スキーマが変更される可能性があります。 定数の結果スキーマが必要な場合は、代わりに project を使用してください
-
find
スコープに関数を含めることはできません。find
スコープに関数を含めるには、view キーワード を使用して let ステートメント定義します。
パフォーマンスに関するヒント
-
表形式の式ではなく、テーブルを使用します。
表形式の式の場合、find 演算子は、パフォーマンスが低下する可能性がある
union
クエリに戻されます。 - 複数のテーブルにあり、複数の型を持つ列が project 句の一部である場合は、 に渡す前に、テーブルを変更するよりも project 句に
find
を追加することを優先してください。 - 時間ベースのフィルターを述語に追加します。 datetime 列の値または ingestion_time() を使用します。
- フル テキスト検索ではなく、特定の列を検索します。
- 複数のテーブルにあり、複数の型を持つ列を参照しないことをお勧めします。 複数の型に対してこのような列の型を解決するときに述語が有効な場合、クエリは共用体にフォールバックします。
たとえば、
find
が共用体 として機能するケースの例参照してください。
例
この記事の例では、Samples データベースの
StormEvents
テーブルなど、ヘルプ クラスターので一般公開されているテーブルを使用します。
この記事の例では、Weather Analytics サンプル データの
StormEvents
テーブルなど、一般公開されているテーブルを使用します。
すべてのテーブルに対する用語検索
クエリでは、いずれかの列に Hernandez
という単語が含まれている、現在のデータベース内のすべてのテーブルからすべての行を検索します。 結果のレコードは、出力スキーマに従って変換されます。 出力には、Customers
テーブルの行と、SalesTable
データベースのContosoSales
テーブルが含まれます。
find "Hernandez"
出力
次の表は、出力の最初の 3 行を示しています。
source_ | pack_ |
---|---|
顧客 | {"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"} |
顧客 | {"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"} |
顧客 | {"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"} |
... | ... |
名前パターンに一致するすべてのテーブルの用語参照
クエリでは、名前が C
で始まり、いずれかの列に Hernandez
という単語が含まれている、現在のデータベース内のすべてのテーブルからすべての行を検索します。 結果のレコードは、出力スキーマに従って変換されます。 出力には、 Customers
テーブルのレコードのみが含まれるようになりました。
find in (C*) where * has "Hernandez"
出力
次の表は、出力の最初の 3 行を示しています。
source_ | pack_ |
---|---|
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.000000Z","duration":60,"time_and_duration":Wednesday, 5 月 26 日\n午前 8 時 30 分から午前 9 時 30 分 GMT"、"kusto_affinity":"Focused"} |
ConferenceSessions | {"conference":"Ignite 2018","sessionid":"THR3115","session_title":"Azure Log Analytics: Azure Kusto クエリ言語の詳細。 ","session_type":"Theater","owner":"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.000000Z","duration":60,"time_and_duration":Wednesday, 5 月 26 日\n午前 8 時 30 分から午前 9 時 30 分 GMT"、"kusto_affinity":"Focused"} |
... | ... |
クラスター全体の用語参照
このクエリでは、クラスター内のすべてのデータベース内のすべてのテーブルからすべての行が検索され、すべての列に Kusto
という単語が含まれます。
このクエリは、データベース間クエリです。
結果のレコードは、出力スキーマに従って変換されます。
find in (database('*').*) where * has "Kusto"
出力
次の表は、出力の最初の 3 行を示しています。
source_ | pack_ |
---|---|
database("Samples")。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.000000Z","duration":60,"time_and_duration":Wednesday, 5 月 26 日\n午前 8 時 30 分から午前 9 時 30 分 GMT"、"kusto_affinity":"Focused"} |
database("Samples")。ConferenceSessions | {"conference":"Ignite 2018","sessionid":"THR3115","session_title":"Azure Log Analytics: Azure Kusto クエリ言語の詳細。 ","session_type":"Theater","owner":"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"} |
database("Samples")。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.000000Z","duration":60,"time_and_duration":Wednesday, 5 月 26 日\n午前 8 時 30 分から午前 9 時 30 分 GMT"、"kusto_affinity":"Focused"} |
... | ... |
クラスター内の名前パターンに一致する用語参照
クエリでは、名前が K
で始まり、いずれかの列に B
という単語が含まれる、すべてのデータベース内の名前が Kusto
で始まるすべてのテーブルからすべての行を検索します。
結果のレコードは、出力スキーマに従って変換されます。
find in (database("S*").C*) where * has "Kusto"
出力
次の表は、出力の最初の 3 行を示しています。
source_ | pack_ |
---|---|
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.000000Z","duration":60,"time_and_duration":Wednesday, 5 月 26 日\n午前 8 時 30 分から午前 9 時 30 分 GMT"、"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.000000Z","duration":60,"time_and_duration":Wednesday, 5 月 26 日\n午前 8 時 30 分から午前 9 時 30 分 GMT"、"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.000000Z","duration":60,"time_and_duration":Wednesday, 5 月 26 日\n午前 8 時 30 分から午前 9 時 30 分 GMT"、"kusto_affinity":"Focused"} |
... | ... |
複数のクラスターでの用語検索
クエリでは、名前が K
で始まり、いずれかの列に B
という単語が含まれる、すべてのデータベース内の名前が Kusto
で始まるすべてのテーブルからすべての行を検索します。
結果のレコードは、出力スキーマに従って変換されます。
find in (cluster("cluster1").database("B*").K*, cluster("cluster2").database("C*".*))
where * has "Kusto"
すべてのテーブルに対する用語検索
クエリでは、いずれかの列に Kusto
という単語が含まれている、すべてのテーブルからすべての行を検索します。
結果のレコードは、出力スキーマに従って変換されます。
find "Kusto"
find
出力結果の例
次の例は、find
と EventsTable2 の 2 つのテーブルで を使用する方法を示しています。
これら 2 つのテーブルの内容が以下であると想定します。
EventsTable1
Session_Id | Level | EventText | バージョン |
---|---|---|---|
acbd207d-51aa-4df7-bfa7-be70eb68f04e | 情報 | 何らかの Text1 | v1.0.0 |
acbd207d-51aa-4df7-bfa7-be70eb68f04e | エラー | 何らかの Text2 | v1.0.0 |
28b8e46e-3c31-43cf-83cb-48921c3986fc | エラー | 何らかの Text3 | v1.0.1 |
8f057b11-3281-45c3-a856-05ebb18a3c59 | 情報 | 何らかの Text4 | v1.1.0 |
EventsTable2
Session_Id | Level | EventText | EventName |
---|---|---|---|
f7d5f95f-f580-4ea6-830b-5776c8d64fdd | 情報 | その他の何らかの Text1 | Event1 |
acbd207d-51aa-4df7-bfa7-be70eb68f04e | 情報 | その他の何らかの Text2 | Event2 |
acbd207d-51aa-4df7-bfa7-be70eb68f04e | エラー | その他の何らかの Text3 | Event3 |
15eaeab5-8576-4b58-8fc6-478f75d8fee4 | エラー | その他の何らかの Text4 | Event4 |
共通列、プロジェクト共通列、および一般的でない列を検索し、残りの列をパックする
このクエリでは、特定の Session_Id と エラー レベルに基づいて、EventsTable1 および EventsTable2 内の特定のレコードが検索されます。 次に、EventText、Version、EventNameの 3 つの特定の列を射影し、残りの列をすべて動的オブジェクトにパックします。
find in (EventsTable1, EventsTable2)
where Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e' and Level == 'Error'
project EventText, Version, EventName, pack_all()
出力
source_ | EventText | バージョン | EventName | pack_ |
---|---|---|---|---|
EventsTable1 | 何らかの Text2 | v1.0.0 | {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Error"} | |
EventsTable2 | その他の何らかの Text3 | Event3 | {"Session_Id":"acbd207d-51aa-4df7-bfa7-be70eb68f04e", "Level":"Error"} |
一般的および一般的でない列で検索する
このクエリでは、バージョン 'v1.0.0' または EventName を 'Event1' として レコードを検索し、フィルター処理された結果から Session_Id、EventText、バージョン、EventName の 4 つの特定の列を投影 (選択) します。
find Version == 'v1.0.0' or EventName == 'Event1' project Session_Id, EventText, Version, EventName
出力
source_ | Session_Id | EventText | バージョン | EventName |
---|---|---|---|---|
EventsTable1 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | 何らかの Text1 | v1.0.0 | |
EventsTable1 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | 何らかの Text2 | v1.0.0 | |
EventsTable2 | f7d5f95f-f580-4ea6-830b-5776c8d64fdd | その他の何らかの Text1 | Event1 |
Note
実際には、EventsTable1 行は Version == 'v1.0.0'
述語でフィルター処理され、EventsTable2 行は EventName == 'Event1'
述語でフィルター処理されます。
省略表記を使用して、現在のデータベース内のすべてのテーブルを検索する
このクエリは、"acbd207d-51aa-4df7-bfa7-be70eb68f04e" と一致する Session_Id を持つレコードをデータベースで検索します。 この特定の Session_Idを含むすべてのテーブルと列からレコードを取得します。
find Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e'
出力
source_ | Session_Id | Level | EventText | pack_ |
---|---|---|---|---|
EventsTable1 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | 情報 | 何らかの Text1 | {"Version":"v1.0.0"} |
EventsTable1 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | エラー | 何らかの Text2 | {"Version":"v1.0.0"} |
EventsTable2 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | 情報 | その他の何らかの Text2 | {"EventName":"Event2"} |
EventsTable2 | acbd207d-51aa-4df7-bfa7-be70eb68f04e | エラー | その他の何らかの Text3 | {"EventName":"Event3"} |
各行の結果をプロパティ バッグとして返す
このクエリは、指定した Session_Id を持つレコードをデータベースで検索し、それらのレコードのすべての列を 1 つの動的オブジェクトとして返します。
find Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e' project pack_all()
出力
source_ | 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"} |
find
が union
として機能する場合の例
Kusto の find
演算子は、主に複数のテーブルを検索するために使用される場合に、union
演算子のように動作する場合があります。
検索オペランドとして表形式以外の式を使用する
最初に、エラー レベルのレコードのみを含むように EventsTable1 フィルター処理するビューが作成されます。 次に、このフィルター処理されたビューと EventsTable2 テーブル内で、特定の Session_Idを持つレコードを検索します。
let PartialEventsTable1 = view() { EventsTable1 | where Level == 'Error' };
find in (PartialEventsTable1, EventsTable2)
where Session_Id == 'acbd207d-51aa-4df7-bfa7-be70eb68f04e'
複数のテーブルにあり、複数の型を持つ列の参照
この例では、次を実行して 2 つのテーブルを作成します。
.create tables
Table1 (Level:string, Timestamp:datetime, ProcessId:string),
Table2 (Level:string, Timestamp:datetime, ProcessId:int64)
- 次のクエリは、
union
として実行されます。
find in (Table1, Table2) where ProcessId == 1001
出力結果スキーマは、(Level:string、Timestamp、ProcessId_string、ProcessId_int) です。
- 次のクエリは
union
として実行されますが、別の結果スキーマが生成されます。
find in (Table1, Table2) where ProcessId == 1001 project Level, Timestamp, ProcessId:string
出力結果スキーマが (Level:string、Timestamp、ProcessId_string)