json - 在 BigQuery 中存储 JSON

标签 json struct google-bigquery

我有各种高度嵌套的 json 对象。我想知道是否将它们存储为 BigQuery 中的 STRUCTSTRING。如果将其存储为字符串,那么我可以在必要时使用 JSON_EXTRACT 来获取我需要的内容。我对使用以下方法有一些疑问:

  • 将 json 数据存储为字符串而不是记录是一个坏主意吗?
  • 如果将 json 字段存储为字符串,那么每当使用该字段时,性能是否会受到很大影响?
  • 将 json 存储为 STRUCT 而不是字符串会带来哪些额外优势?

最后,我在文档中找不到任何地方提供如何查询 STRUCT 的示例。我唯一能找到的地方是https://cloud.google.com/bigquery/docs/nested-repeated 。文档(或其他地方)是否有关于查询嵌套字段的示例?此外,为什么术语 RECORDSTRUCT 在此页面上可以互换使用?

请注意,json 不会在根级别重复,即,它将看起来像 {...} 而不是 [{...},{... }]

作为引用,在 Redshift 中,您将(从这个问题开始)将 json 存储为字符串并使用 json 函数来操作它:https://stackoverflow.com/a/32731374/651174 .

最佳答案

我通常两者都会做:

  • 将 JSON 对象存储为 STRING,以便后代和重构。
  • 通过 JSON 对象具体化易于查询的表格 - 让您和您的团队在查询时获得更好的体验。

我的 3 个步骤:

  1. 将所有内容存储为 JSON 字符串。例如,当架构发生更改时,您就不会丢失数据。
  2. 创建一个 View ,将 JSON_EXTRACT 数据转换为易于查询的列。
  3. 将这些 View 具体化为表格,以获得最佳性能和简便性。

然后,如果架构发生更改:

  1. 您存储的所有内容都保持不变。
  2. 您可以修改 View 以适应新架构。
  3. 您可以将表重新具体化到新架构中。

关于json - 在 BigQuery 中存储 JSON,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56449445/

相关文章:

ios - 动态 View 渲染,SwiftUI

google-bigquery - 无法执行查询

python - Google Cloud Composer BigQuery Operator - 获取作业 API HTTPError 404

java - @JsonIgnore 和@Getter 注解

php - 使用 PHP 将数据附加到 JSON 数组

javascript - 如何在 Kendo UI Scheduler 上显示自定义事件?

c# - 如何确保 T 在固定字节数内是可序列化的?

JavaScript 在 json 数组中查找匹配键

c++ - struct function greater 在这段代码中是如何工作的?

google-analytics - 谷歌分析模式