【问题标题】:How do I compare a string field as a number in Google Stackdriver Logging advanced queries?如何在 Google Stackdriver Logging 高级查询中将字符串字段作为数字进行比较?
【发布时间】:2020-10-15 08:00:00
【问题描述】:

我试过了

jsonPayload.elapsed_ms > 5000

我清楚地得到了字符“5”的字典比较,因为我只看到“6”、“7”、“8”、“9”的结果(见每行的最终数字,在“ 200"):

我试过了

double(jsonPayload.elapsed_ms)>5000

也一样,但似乎不是正确的语法。

有一整节关于转化here,但没有示例。

【问题讨论】:

    标签: google-cloud-platform stackdriver google-cloud-stackdriver google-cloud-logging


    【解决方案1】:

    我来自 Cloud Logging 团队。

    由于jsonPayload.elapsed_ms 字段被记录为字符串,因此范围比较是按字典顺序计算的。您是否可以在 JSON 有效负载中将该字段记录为数字类型?

    https://cloud.google.com/logging/docs/view/advanced-queries#values_conversions 在评估过滤器表达式时记录自动转换。但是,目前不支持在查询时将记录的值转换为不同的类型。

    我们计划在查询语言中添加对此的支持。请关注并 +1 以下公共问题https://issuetracker.google.com/issues/140348005 以获取更新。

    【讨论】:

    • 感谢您的明确答复!已关注并 +1。
    【解决方案2】:

    在有人发布更好的答案之前,这是一个非常糟糕的解决方法。

    jsonPayload.elapsed_ms=~"[5-9][0-9][0-9][0-9]"
    

    【讨论】:

      猜你喜欢
      • 2011-06-13
      • 2016-04-17
      • 1970-01-01
      • 1970-01-01
      • 2011-10-16
      • 1970-01-01
      • 1970-01-01
      • 2013-04-22
      • 1970-01-01
      相关资源
      最近更新 更多