has_any 运算符

适用于:✅Azure 数据资源管理器Azure MonitorMicrosoft Sentinel

筛选记录集中包含任意一组不区分大小写的字符串的数据。 has_any 搜索关键词,一个索引包含三个或三个以上字符。 如果字少于三个字符,则查询会扫描列中的值,这比在字索引中查找字要慢。

有关其他运算符的详细信息以及确定哪个运算符最适合你的查询,请参阅数据类型字符串运算符

语法

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

详细了解语法约定

参数

客户 类型​​ 必需 说明
T string ✔️ 要筛选的表格输入。
col string ✔️ 进行筛选所依据的列。
expression 标量或表格 ✔️ 一个表达式,用于指定要搜索的值。 每个表达式都可以是一个标量值或一个生成一组值的表格表达式。 如果表格表达式包含多个列,则会使用第一个列。 搜索将考虑最多 10,000 个非重复值。

注意

内联表格表达式必须用双括号括起来。 请查看示例

返回

其谓词为 true 的 T 中的行。

示例

标量列表

以下查询演示如何将 has_any 与逗号分隔的标量值列表一起使用。

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

输出

状态 count_
NEW YORK 1750
NORTH CAROLINA 1721
SOUTH DAKOTA 1567
NEW JERSEY 1044
SOUTH CAROLINA 915
NORTH DAKOTA 905
NEW MEXICO 527
NEW HAMPSHIRE 394

动态数组

以下查询演示如何将 has_any 与动态数组一起使用。

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

输出

状态 count_
NORTH CAROLINA 1721
SOUTH DAKOTA 1567
SOUTH CAROLINA 915
NORTH DAKOTA 905
大西洋南部 193
ATLANTIC NORTH 188

也可以使用 let 语句编写相同的查询。

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

输出

状态 count_
NORTH CAROLINA 1721
SOUTH DAKOTA 1567
SOUTH CAROLINA 915
NORTH DAKOTA 905
大西洋南部 193
ATLANTIC NORTH 188

表格表达式

以下查询演示如何将 has_any 与内联表格表达式一起使用。 请注意,内联表格表达式必须用双括号括起来。

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

输出

状态 count_
德克萨斯 4701
ILLINOIS 2022
MISSOURI 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
ILLINOIS 2022
MISSOURI 2016
佐治亚州 1983
明尼苏达州 1881
... ...