Оператор has_any
Область применения: ✅Microsoft Fabric✅Azure Data Explorer✅Azure Monitor✅Microsoft Sentinel
Фильтрует набор записей для данных с любым набором нечувствительных строк регистра. has_any
ищет индексированные термины, где индексированные термины — три или более символов. Если ваш термин меньше трех символов, запрос сканирует значения в столбце, что медленнее, чем поиск термина в индексе термина.
Дополнительные сведения о других операторах и определении наиболее подходящих операторов для запроса см. в разделе строковых операторов типа данных.
Советы по производительности
Примечание.
Если используются более 128 терминов поиска, оптимизация поиска текстовых индексов отключена, что может привести к снижению производительности запросов.
Синтаксис
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 |
... | ... |