Kusto 查询是否支持短路 (McCarthy) 评估
Do Kusto Queries Support Short-Circuit (McCarthy) Evaluation
我正在尝试使用以下查询片段来允许可变正则表达式过滤器输入。
| where isempty("[[HttpStatusCode]]") or tostring(httpStatus_d) matches regex "[[HttpStatusCode]]"
正在从 Grafana 中的 Azure Log Analytics 中执行查询。我在 Grafana 仪表板上有一些变量,允许用户输入一个正则表达式来输入查询。当过滤器为空时,我希望不会应用任何过滤。我在想 Kusto 查询可能支持短路,当 isempty(..)
评估为 true 时,表达式的其余部分将被忽略并且 matches regex
部分不会执行也不会引发错误。
当字符串为空时我收到的错误消息是“Relop 语义错误:'matches regex' 有以下语义错误:SEM0031:匹配正则表达式:参数 2 必须是常量非空字符串值。”。 =13=]
Kusto 没有短路功能。但您可以尝试以下解决方法。
首先,您需要检查[[HttpStatusCode]]
是否为空。如果为空,可以给它赋一个虚拟值(注意,请确保虚拟值不能被where子句中的matches regex
运算符匹配)。因此,当输入空值时,它不会抛出任何错误。
示例查询:
table_name
| extend tempvalue= iff(isempty("[[HttpStatusCode]]"),"a dummy value","[[HttpStatusCode]]")
| where isempty("[[HttpStatusCode]]") or tostring(httpStatus_d) matches regex tempvalue
我正在尝试使用以下查询片段来允许可变正则表达式过滤器输入。
| where isempty("[[HttpStatusCode]]") or tostring(httpStatus_d) matches regex "[[HttpStatusCode]]"
正在从 Grafana 中的 Azure Log Analytics 中执行查询。我在 Grafana 仪表板上有一些变量,允许用户输入一个正则表达式来输入查询。当过滤器为空时,我希望不会应用任何过滤。我在想 Kusto 查询可能支持短路,当 isempty(..)
评估为 true 时,表达式的其余部分将被忽略并且 matches regex
部分不会执行也不会引发错误。
当字符串为空时我收到的错误消息是“Relop 语义错误:'matches regex' 有以下语义错误:SEM0031:匹配正则表达式:参数 2 必须是常量非空字符串值。”。 =13=]
Kusto 没有短路功能。但您可以尝试以下解决方法。
首先,您需要检查[[HttpStatusCode]]
是否为空。如果为空,可以给它赋一个虚拟值(注意,请确保虚拟值不能被where子句中的matches regex
运算符匹配)。因此,当输入空值时,它不会抛出任何错误。
示例查询:
table_name
| extend tempvalue= iff(isempty("[[HttpStatusCode]]"),"a dummy value","[[HttpStatusCode]]")
| where isempty("[[HttpStatusCode]]") or tostring(httpStatus_d) matches regex tempvalue