Поделиться через


Оператор search

Выполняет поиск текстового шаблона в нескольких таблицах и столбцах.

Примечание.

Если вы знаете определенные таблицы и столбцы, которые вы хотите искать, это более производительно, чтобы использовать объединение и где операторы. Оператор search может быть медленным при поиске по большому количеству таблиц и столбцов.

Синтаксис

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

Дополнительные сведения о соглашениях синтаксиса.

Параметры

Имя (название) Type Обязательно Описание
T string Источник табличных данных для поиска, например имя таблицы, оператор объединения или результаты табличного запроса. Не удается появиться вместе с TableSources.
CaseSensitivity string Флаг, который управляет поведением всех string скалярных операторов, например hasс учетом конфиденциальности регистра. Допустимые значения: default, case_sensitivecase_insensitive. Параметры default и case_insensitive синонимы, так как поведение по умолчанию не учитывает регистр.
TableSources string Разделенный запятыми список имен таблиц с подстановочными знаками для участия в поиске. Список имеет тот же синтаксис, что и список оператора объединения. Не удается появиться вместе с 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 в любых столбцах и значении 123 в столбце x .

Примечание.

Если опущены табулярные и tableSources, поиск выполняется по всем неограниченным таблицам и представлениям базы данных в области.

Примеры синтаксиса предиката поиска

# Синтаксис Значение (эквивалент where) Комментарии
1 search "err" where * has "err"
2 search in (T1,T2,A*) "err" union T1,T2,A* | where * имеет "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=: выходные данные всегда будут содержать столбец $table типа string , значение которого — имя таблицы, из которого извлекалась каждая запись (или имя, созданное системой, если источник не является таблицей, а составным выражением).
  2. project=: project-smartвыходная схема эквивалентна выходной схеме project-smart .

Примеры

Найдите термин для всех неограниченных таблиц и представлений базы данных в области.

search "Green"

Выходные данные содержат записи из CustomersProductsтаблиц, а также SalesTable таблицы. В Customers записях отображаются все клиенты с фамилией "Зеленый", и Products SalesTable записи отображают продукты с некоторыми упоминаниями "Зеленый".

Выполните поиск записей, которые соответствуют обеим условиям во всех неограниченных таблицах и представлениях базы данных в области.

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") поиск "billg" | поиск "стивб" или "сатян"
2 Предпочитать фильтровать внутри search оператора search "billg" and "steveb" search * | where * имеет "billg" и * имеет "стив"