次の方法で共有


search 演算子

適用対象: ✅Microsoft FabricAzure データ エクスプローラーAzure MonitorMicrosoft Sentinel

複数のテーブルと列でテキスト パターンを検索します。

Note

検索する特定のテーブルと列がわかっている場合は、 union および where 演算子を使用する方がパフォーマンスが高くなります。 search演算子は、多数のテーブルと列を検索するときに低速になる可能性があります。

構文

[T |] search [kind= CaseSensitivity ] [in (TableSources)] SearchPredicate

構文規則について詳しく知る。

パラメーター

件名 タイプ Required 説明
T string テーブル名、 union 演算子、表形式クエリの結果など、検索対象の表形式データ ソース。 TableSourcesと一緒に表示することはできません。
CaseSensitivity string 大文字と小文字の区別に関して、hasなど、すべてのstringスカラー演算子の動作を制御するフラグ。 有効な値は、 defaultcase_insensitivecase_sensitiveです。 既定の動作では大文字と小文字が区別されないので、 default オプションと case_insensitive オプションは同義です。
TableSources string 検索に参加する "ワイルドカード" テーブル名のコンマ区切りの一覧。 リストの構文は、union 演算子のリストと同じです。 TabularSource と一緒に表示することはできません。
SearchPredicate string ✔️ 入力内のすべてのレコードに対して評価されるブール式。 trueを返すと、レコードが出力されます。 述語構文の検索を参照してください。

検索述語の構文

SearchPredicateを使用すると、テーブルのすべての列で特定の用語を検索できます。 検索語句に適用される演算子は、次の表に示すように、用語内のワイルドカード アスタリスク (*) の存在と配置によって異なります。

リテラル 演算子
billg has
*billg hassuffix
billg* hasprefix
*billg* contains
bi*lg matches regex

また、検索を特定の列に制限したり、用語の一致ではなく完全一致を検索したり、正規表現で検索したりすることもできます。 これらの各ケースの構文を次の表に示します。

構文 説明
ColumnName:StringLiteral この構文を使用して、検索を特定の列に制限できます。 既定の動作では、すべての列を検索します。
ColumnName==StringLiteral この構文を使用すると、文字列値に対する列の完全一致を検索できます。 既定の動作では、用語の一致を検索します。
Column matches regex StringLiteral この構文は正規表現の一致を示します。 StringLiteral は正規表現パターンです。

ブール式を使用して条件を結合し、より複雑な検索を作成します。 たとえば、"error" and x==123は、任意の列に用語errorを持つレコードと、x列に123値を検索します。

Note

TabularSourceTableSources の両方を省略すると、検索はスコープ内のデータベースのすべての無制限のテーブルとビューに引き継がされます。

検索述語構文の例

# 構文 意味 (同等の where) コメント
1 search "err" where * has "err"
2 search in (T1,T2,A*) "err" union T1,T2,A* | where * has "err"
3 search col:"err" where col has "err"
4 search col=="err" where col=="err"
5 search "err*" where * hasprefix "err"
6 search "*err" where * hassuffix "err"
7 search "*err*" where * contains "err"
8 search "Lab*PC" where * matches regex @"\bLab.*PC\b"
9 search * where 0==0
10 search col matches regex "..." where col matches regex "..."
11 search kind=case_sensitive すべての文字列比較で大文字と小文字が区別されます
12 search "abc" and ("def" or "hij") where * has "abc" and (* has "def" or * has hij")
13 search "err" or (A>a and A<b) where * has "err" or (A>a and A<b)

解説

find 演算子とは異なり、search演算子は以下をサポートしていません。

  1. withsource=: 出力には常に、各レコードの取得元のテーブル名 (またはソースがテーブルではなく複合式の場合はシステムによって生成された名前) を持つstring型の$tableという列が含まれます。
  2. project=project-smart: 出力スキーマは project-smart 出力スキーマと同じです。

スコープ内のデータベースのすべての無制限のテーブルとビューで用語を検索します。

search "Green"

出力には、 CustomersProducts、および SalesTable テーブルのレコードが含まれます。 Customersレコードには姓が "Green" のすべての顧客が表示され、Productsレコードと SalesTable レコードには "Green" という名前の製品が表示されます。

スコープ内のすべての無制限のテーブルとデータベースのビューの両方の用語に一致するレコードを検索します。

search "Green" and ("Deluxe" or "Proseware")

特定のテーブルを検索する

Customersテーブル内でのみ検索します。

search in (Products) "Green"

スコープ内のすべての無制限のテーブルとデータベースのビューで、大文字と小文字が区別される用語の両方に一致するレコードを検索します。

search kind=case_sensitive "blue"

特定の列を検索する

スコープ内のデータベースのすべての無制限のテーブルとビューで、"FirstName" 列と "LastName" 列で用語を検索します。

search FirstName:"Aaron" or LastName:"Hughes"

タイムスタンプによる検索を制限する

指定した日付より大きい日付のレコードに用語が含まれる場合は、スコープ内のデータベースのすべての無制限のテーブルとビューで用語を検索します。

search "Hughes" and DateKey > datetime('2009-01-01')

パフォーマンスに関するヒント

# ヒント 優先 以上
1 複数の連続する search 演算子よりも単一の search 演算子の使用を優先します search "billg" and ("steveb" or "satyan") search "billg" | search "steveb" or "satyan"
2 search 演算子内のフィルター処理を優先します search "billg" and "steveb" search * | where * has "billg" and * has "steveb"