【问题标题】:Kusto Query Contains Operator Does Not Work With Escape CharactersKusto 查询包含运算符不适用于转义字符
【发布时间】:2020-07-13 03:11:48
【问题描述】:

我正在使用 Azure Monitor 日志从应用洞察中查询页面视图。对 customDimensions 字段执行 Kusto 查询时,以下内容不会返回任何结果:

pageViews
| where customDimensions contains "\"qa\""

自定义维度的值包含类似 {"Environemnt": "qa"} 的内容。我错过了什么吗?我试过不使用转义字符,只使用“qa”,但它仍然不起作用。如果我只尝试 'qa' 它会返回结果。

【问题讨论】:

    标签: azure kql


    【解决方案1】:

    任何有兴趣的人都可以使用 Regex 代替:

    customDimensions matches regex '"qa"'
    

    【讨论】:

      【解决方案2】:

      我通过两次转义解决了这个问题。

      我在尝试查询名称为“total”或名称不包含反斜杠的所有行时遇到了问题。

      首先我通过 Azure Data Explorer Web UI 编写查询,发现以下返回了我想要的结果: CodeCoverage | where name == "total" or name !contains "\\" 当我在 Chrome 的网络日志中检查网络请求时,我看到请求的正文包含完全相同的字符串:CodeCoverage | where name == "total" or name !contains "\\"

      当我将它复制到我的 JavaScript 并通过 REST API 运行查询时,请求返回了 400 状态代码(错误请求),并带有一条错误消息,告诉我存在语法错误。发生这种情况是因为查询缺少反斜杠:MyTable | where name == "total" or name !contains "\"。逃逸逃脱了第二个 " 和第一个 " 没有匹配。语法无效。因此是 400 状态码。

      两次转义反斜杠,查询成功,请求返回200:

      MyTable | where name == "total" or name !contains "\\\\".

      【讨论】:

        【解决方案3】:

        您可以尝试逐字字符串文字

        喜欢这个

        • 用双引号 (") 括起来:@"这是一个逐字字符串文字 以反斜杠结尾”

        • 用单引号 (') 括起来:@'这是一个逐字字符串文字
          以反斜杠结尾'

        这里是post

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2021-04-23
          • 2020-08-31
          • 2017-10-25
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-03
          相关资源
          最近更新 更多