我有JSON格式的电商产品数据。该数据经常更新。我计划将这些数据加载到 BigQuery 中。鉴于JSON文件很大(几百个属性)并且有很多更新,我发现将整个数据存储在BigQuery中并使用合并查询频繁更新它并不是很划算。
我现在计划将常用属性存储在 BigQuery 表的各个列中。但是,当有人想要访问 JSON 的任何其他属性以进行某些临时分析时,我还需要支持用例。为了解决这个问题,我可以使用以下策略:
将产品的 JSON 存储在 GCP 中特定目录的自己的文件中。 使用该目录中的所有文件创建外部表。每个文件的内容成为外部表中描述单个产品的一行。 当产品发生更新时,我会更新 BigQuery 表,并用新文件替换该产品的现有文件。
这是一个合理的做法吗?如果是,如何从目录创建外部表?
有多种方法可以将
JSON
数据加载到 BigQuery。每种方法都可能在成本、复杂性、运营方面有设计考虑。
为您提供Yes/No
答案实际上取决于这三个因素。
话虽如此,您创建
external
表的方法也将起作用。
解决方案:所有类似SQL的解决方案
这是一个
external
表查询,它将在单列中创建加载数据 - 请参阅 文档
CREATE OR REPLACE EXTERNAL TABLE YOUR_PROJECT.YOUR_DATASET.my_newline_json_arrays ( col1 STRING ) OPTIONS ( format = 'CSV', field_delimiter = '\x10', quote = '', uris = ['gs://YOUR_BUCKET/my_newline_json_arrays.json'] );
创建外部表后,您可以使用
BigQuery json functions
选择所需的属性并运行 BigQuery 计划查询将数据加载到 BigQuery 中。要识别属性的更改,您可以考虑使用 table valued function
(TVF),如文档中所述