使用kusto查询语言查找列等于字符串A或字符串B的所有记录

时间:2019-10-28 06:56:24

标签: azure azure-log-analytics kusto kusto-query-language kql

我需要在表中查找所有记录,其中列CounterName之一包含某种字符串,而另一列InstanceName的值等于字符串C:或字符串D:

以下查询正常工作,并返回所需的记录/结果:

Perf
| search CounterName:"Free*bytes" and (InstanceName=="C:" or InstanceName=="D:")

但是,在上面的查询中,我们需要重复InstanceName两次。因此,我尝试了另一个查询(在下面共享的),该查询尝试执行相同的操作,但是它不返回任何记录(未找到结果):

Perf
| search CounterName:"Free*bytes" and InstanceName==("C:" or "D:")

第二个查询为什么不返回任何结果?是因为表达式("C:" or "D:")的计算结果是布尔值?

有没有一种方法可以搜索列中的多个字符串(,如果有任何字符串,则选择该记录),而不必重复列名称(,就像我们不得不在其中重复一样)第一个查询)?

如果需要,我们可以在演示部分的Log Analytics上在线运行以上查询(,但可能需要登录)。

1 个答案:

答案 0 :(得分:2)

or运算符旨在与布尔表达式一起使用。将它与字符串一起使用不会评估一个结果或另一个结果。

要满足您的要求,请尝试使用in运算符。

Perf
| search CounterName:"Free*bytes" and InstanceName in ("C:","D:")