在 BigQuery 中存储 JSON

Dav*_*542 7 json struct google-bigquery

我有各种高度嵌套的 json 对象。我想知道是将这些作为STRUCTs存储在 BigQuery 中还是作为STRING. 如果将其存储为字符串,那么我可以JSON_EXTRACT在必要的地方使用它来获得我需要的东西。我对使用以下方法有几个问题:

  • 将 json 数据存储为字符串而不是记录是一个坏主意吗?
  • 如果将 json 字段存储为字符串,那么在使用该 json 字段时会不会有很大的性能损失?
  • 将 json 存储为STRUCT字符串而不是字符串会带来什么额外的好处?

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

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

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

Fel*_*ffa 15

我通常两者都做:

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

我的3个步骤:

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

然后,在架构更改的情况下:

  1. 您存储的所有内容都保持不变。
  2. 您可以修改视图以适应新模式。
  3. 您可以将表重新具体化为新模式。