【问题标题】:BigQuery - Flexible Schema in Record FieldBigQuery - 记录字段中的灵活架构
【发布时间】:2015-09-09 13:44:59
【问题描述】:
我有一个 BigQuery 架构,其中 Record 字段类似于 JSON,但是 JSON 中的键是动态的,即新键可能会随着新数据出现,并且很难知道总共有多少键。根据我的理解,这样的表不可能使用 BigQuery,因为需要明确定义记录字段类型的架构,否则会引发错误。
唯一的其他选择是在查询将通过 JSON(文本)字段解析的数据时使用 JSON_EXTRACT 函数。有没有其他方法可以在 BigQuery 的表中拥有动态嵌套架构?
【问题讨论】:
标签:
json
google-bigquery
record
【解决方案1】:
可以为常用字段创建固定架构,您可以将它们设置为可为空。而作为字符串类型的列可用于存储 JSON 的其余部分,并使用 JSON 函数查询数据。
我们的表中一直有一个 meta 列,它以 JSON 对象的形式保存额外的原始非结构化数据。
请注意,目前您最多可以在字符串列中存储 2 兆字节,这对于 JSON 文档来说是不错的。
为了更轻松地处理数据,您可以从使用 JSON_EXTRACT 的查询创建视图,并在其他更简单的查询中引用视图表。
同样在流式插入阶段,您的应用可以将 JSON 非规范化为适当的表。