Оператор has_any

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

Дополнительные сведения о других операторах и определении того, какой оператор лучше всего подходит для запроса, см. в разделе Строковые операторы типа данных.

Синтаксис

T|whereColhas_any(Выражение, ... )

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

Параметры

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

Примечание

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

Возвращаемое значение

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

Примеры

Список скалярных элементов

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

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

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

Состояние count_
НЬЮ-ЙОРК 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_
Техас 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_
Техас 4701
Иллинойс 2022
Миссури 2016
Грузия 1983
МИННЕСОТА 1881
... ...