search 演算子
複数のテーブルと列のテキスト パターンを検索します。
Note
検索する特定のテーブルと列がわかっている場合は、 共用体 と where 演算子を使用する方がパフォーマンスが高くなります。 多数のテーブルと列を検索する場合、演算子の search
速度が低下する可能性があります。
構文
[T|
] search
[kind=
CaseSensitivity ] [in
(
TableSources)
] SearchPredicate
構文規則について詳しく知る。
パラメーター
名前 | 型 | 必須 | 説明 |
---|---|---|---|
T | string |
テーブル名、 共用体演算子、表形式クエリの結果など、検索対象の表形式データ ソース。 TableSources と一緒に表示することはできません。 | |
CaseSensitivity | string |
大文字と小文字の区別に関して、 などのhas すべてのstring スカラー演算子の動作を制御するフラグ。 有効な値は、 default 、 case_insensitive 、 case_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 |
この構文を使用して、文字列値に対する列の完全一致を検索できます。 既定の動作では、用語一致を検索します。 |
列matches regex StringLiteral |
この構文は正規表現の一致を示します。 StringLiteral は正規表現パターンです。 |
ブール式を使用して条件を結合し、より複雑な検索を作成します。 たとえば、 は、 "error" and x==123
任意の列の用語 error
と列の値 123
を持つレコードを x
検索します。
Note
TabularSource と TableSource の両方を省略すると、スコープ内のデータベースのすべての無制限のテーブルとビューに対して検索が実行されます。
検索述語の構文の例
# | 構文 | 意味 (同等の 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
演算子は以下をサポートしていません。
withsource=
: 出力には常に 型と呼ばれる$table
string
列が含まれ、その値は各レコードの取得元のテーブル名 (またはソースがテーブルではなく複合式の場合はシステムによって生成される名前) です。project=
、project-smart
: 出力スキーマはproject-smart
出力スキーマと同じです。
例
グローバル用語検索
スコープ内のデータベースのすべての無制限のテーブルとビューで用語を検索します。
search "Green"
出力には、および SalesTable
テーブルのレコードがProducts
Customers
含まれています。 レコードには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')
パフォーマンスに関するヒント
# | ヒント | Prefer | Over |
---|---|---|---|
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" |
フィードバック
https://aka.ms/ContentUserFeedback」を参照してください。
以下は間もなく提供いたします。2024 年を通じて、コンテンツのフィードバック メカニズムとして GitHub の issue を段階的に廃止し、新しいフィードバック システムに置き換えます。 詳細については、「フィードバックの送信と表示