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


Оператор has_any

Фильтрует набор записей для данных с любым набором нечувствительных строк регистра. has_any ищет индексированные термины, где индексированные термины — три или более символов. Если ваш термин меньше трех символов, запрос сканирует значения в столбце, что медленнее, чем поиск термина в индексе термина.

Дополнительные сведения о других операторах и определении наиболее подходящих операторов для запроса см. в разделе строковых операторов типа данных.

Синтаксис

T | where col (has_any expression ...,)

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

Параметры

Имя (название) Type Обязательно Описание
T string ✔️ Табличные входные данные для фильтрации.
col string ✔️ Столбец, по которому необходимо отфильтровать.
выражение скалярный или табличный ✔️ Выражение, указывающее значения, для которых выполняется поиск. Каждое выражение может быть скалярным значением или табличным выражением, которое создает набор значений. Если табличное выражение содержит несколько столбцов, используется первый столбец. Поиск рассмотрит до 10 000 различных значений.

Примечание.

Встроенное табличное выражение должно быть заключено в двойные скобки. См. пример.

Возвраты

Строки в T, для которых предикат имеет значение true.

Примеры

Список скалярных

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

StormEvents 
| where State has_any ("CAROLINA", "DAKOTA", "NEW") 
| summarize count() by State

Выходные данные

Штат count_
NEW YORK 1750
СЕВЕРНАЯ КАРОЛИНА 1721
ЮЖНАЯ ДАКОТА 1567
НЬЮ-ДЖЕРСИ 1044
ЮЖНАЯ КАРОЛИНА 915
СЕВЕРНАЯ ДАКОТА 905
НЬЮ-МЕКСИКО 527
НЬЮ-ХЭМПШИР 394

Динамический массив

В следующем запросе показано, как использовать has_any динамический массив.

StormEvents 
| where State has_any (dynamic(['south', 'north']))
| summarize count() by State

Выходные данные

Штат count_
СЕВЕРНАЯ КАРОЛИНА 1721
ЮЖНАЯ ДАКОТА 1567
ЮЖНАЯ КАРОЛИНА 915
СЕВЕРНАЯ ДАКОТА 905
ЮЖНАЯ АТЛАНТИКА 193
АТЛАНТИЧЕСКИЙ СЕВЕР 188

Тот же запрос также можно записать с помощью инструкции let.

let areas = dynamic(['south', 'north']);
StormEvents 
| where State has_any (areas)
| summarize count() by State

Выходные данные

Штат count_
СЕВЕРНАЯ КАРОЛИНА 1721
ЮЖНАЯ ДАКОТА 1567
ЮЖНАЯ КАРОЛИНА 915
СЕВЕРНАЯ ДАКОТА 905
ЮЖНАЯ АТЛАНТИКА 193
АТЛАНТИЧЕСКИЙ СЕВЕР 188

Табличное выражение

В следующем запросе показано, как использовать has_any встроенное табличное выражение. Обратите внимание, что встроенное табличное выражение должно быть заключено в двойные скобки.

StormEvents 
| where State has_any ((PopulationData | where Population > 5000000 | project State))
| summarize count() by State

Выходные данные

Штат count_
TEXAS 4701
ИЛЛИНОЙС 2022
МИССУРИ 2016
ДЖОРДЖИЯ 1983
МИННЕСОТА 1881
... ...

Тот же запрос также можно записать с помощью инструкции let. Обратите внимание, что двойные скобки, как указано в последнем примере, не нужны в этом случае.

let large_states = PopulationData | where Population > 5000000 | project State;
StormEvents 
| where State has_any (large_states)
| summarize count() by State

Выходные данные

Штат count_
TEXAS 4701
ИЛЛИНОЙС 2022
МИССУРИ 2016
ДЖОРДЖИЯ 1983
МИННЕСОТА 1881
... ...