问题描述
我试图定义一个数组并遍历整个数组,以查找消息中数组中包含元素的位置的跟踪。是否有可能做到这一点?例如:
let myIds = datatable (name: string)
[
"111","222","333",];
forach (id in myIds)
{
traces
| where message contains id
}
我知道这不是上面的正确语法,但希望它能解释我要实现的目标。简而言之,遍历数组并在我的日志(特别是跟踪)中执行查找。
解决方法
第一个选项是使用 has_any
。这是一个更简单的解决方案,可能适用于您的用例,但前提是您的 ID 在消息中显示为离散的 term。
因此,如果消息的格式为“blah blah ID: 111”,它将被接收,但如果它是另一个单词的一部分,则不会(因为 has
的工作方式与 {{ 略有不同) 1}}).
contains
如果您需要 let myIds = datatable (name: string) [ "111","222","333"];
let traces=datatable(message:string) ["aaaaaaaaaaaaaaaa","blah blah 111","blah111 blah","111blah"];
traces
| where message has_any (myIds)
的功能(如果您需要找到 111 的每个实例),那么您可以使用 contains
。这会循环遍历您的 mv-apply
子表,并分别与每个条目进行比较,然后合并所有结果。请注意,这意味着如果在同一条消息中匹配多个 ID,您可能会得到重复。
myIds
,
您可以使用mv-expand
或mv-apply