google-bigquery - LogsRouter 导出到 BigQuery 会导致部分遍历 JSON RECORD
问题描述
BigQuery 或 GCP LogsRouter 最近是否发生了变化,在一定深度后停止了对 JSON 日志的解构?
具体来说,jsonPayload.metadata.event
以上用于自动归类为记录(从先前设置的数据接收器已知)。为了修复错误,我们重建了表,现在旧接收器和我们的新接收器都有这个记录作为字符串进入。
有什么方法可以让我们再次将其解析为 RECORD 吗?或者,如果这是设计使然,那么现在推荐的解析方法是什么?
FWIW,看起来它jsonPayload.metadata
正在被正确解构,这使得这更加令人困惑
提前致谢,
解决方案
如您所知,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 架构进行任何更改之前,您可能需要检查正在创建架构的日志条目,以备不时之需自定义它们。有一些文档可以帮助您实现这一目标。
推荐阅读
- c# - 如何等待对象结束旋转然后播放动画?
- java - 可运行的 JAR 工作但没有完成它的工作
- java - 转义特殊字符,如 Java 中的 +
- compression - Kakadu 和 JPEG-2000 标准 (JP3D) 的第 10 部分
- reactjs - reactjs/react-router-dom: Browserrouter 路由问题
- reactjs - 界面不能同时扩展类型锚和按钮
- flutter - 将 AdmobBanner 放在 Flutter 中 Column 的底部
- google-chrome - 如果我有 cookie 会话 ID,我可以直接通过浏览器登录网站吗?
- javascript - 构建时动态加载 JSON 文件
- ios - 为什么从 Nib 加载的 UITextField 的默认字体太小?