我尝试使用以下查询片段来允许变量正则表达式过滤器输入。
| where isempty("[[HttpStatusCode]]") or tostring(httpStatus_d) matches regex "[[HttpStatusCode]]"该查询正在Grafana内的Azure日志分析中执行。Grafana仪表板上有一些变量,允许用户输入提供给查询的正则表达式。当过滤器为空时,我希望不会应用任何过滤器。我认为Kusto查询可能支持短路,当isempty(..)计算为true时,表达式的其余部分将被忽略,matches regex部分既不会执行也不会抛出错误。
当字符串为空时,我得到的错误消息是"Relop semantic error:'matches regex‘具有以下语义错误: SEM0031: matches regex: argument 2必须是一个常量非空字符串值。“
发布于 2020-06-26 17:42:34
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 tempvaluehttps://stackoverflow.com/questions/62581712
复制相似问题