如何在 Google Stackdriver Logging 高级查询中将字符串字段与数字进行比较?

How do I compare a string field as a number in Google Stackdriver Logging advanced queries?

我试过了

jsonPayload.elapsed_ms > 5000

而且我清楚地得到了字符“5”的字典顺序比较,因为我只看到结果是“6”、“7”、“8”、“9”(查看每行的最终数字,之后"200"):

我试过了

double(jsonPayload.elapsed_ms)>5000

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

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

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

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

我来自 Cloud Logging 团队。

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

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

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