首页 > 解决方案 > LogsRouter 导出到 BigQuery 会导致部分遍历 JSON RECORD

问题描述

BigQuery 或 GCP LogsRouter 最近是否发生了变化,在一定深度后停止了对 JSON 日志的解构?

大查询截图

具体来说,jsonPayload.metadata.event以上用于自动归类为记录(从先前设置的数据接收器已知)。为了修复错误,我们重建了表,现在旧接收器和我们的新接收器都有这个记录作为字符串进入。

有什么方法可以让我们再次将其解析为 RECORD 吗?或者,如果这是设计使然,那么现在推荐的解析方法是什么?

FWIW,看起来它jsonPayload.metadata正在被正确解构,这使得这更加令人困惑

JSON 有效负载数据类型

提前致谢,

标签: google-bigquerystackdrivergoogle-cloud-stackdriver

解决方案


如您所知,BigQuery 中的字段数据类型是在您创建 Logging Sink 时自动创建的。您可以按照本BigQuery Doc中的说明更改 BigQuery 中的数据类型

您提到在以前的模式中,您的 jsonPayload.metadata.event字段为 RECORD 类型,这意味着应该有一些其他注册表:

jsonPayload.metadata.event.type
jsonPayload.metadata.event.name
jsonPayload.metadata.event.api_version

但是,在这种情况下,如果您已经重新创建了架构,则意味着为该条目找到的数据类型被识别为String,因此在尝试对 BQ 架构进行任何更改之前,您可能需要检查正在创建架构的日志条目,以备不时之需自定义它们。有一些文档可以帮助您实现这一目标。


推荐阅读