如果某些字段有禁用字符,如何在Google云存储中从JSON创建BigQuery表?

问题描述 投票:0回答:2

我正在尝试将一堆数据(换行符分隔的json文件)移动到BigQuery中。 BigQuery禁止在其字段名称中使用某些字符,例如破折号-slashes。不幸的是,我们的数据在许多字段名称中都有破灭,即

jsonPayload.request.x-search

我尝试将BigQuery架构中的字段重命名为jsonPayload.request.x_search,希望加载器可以做一些魔法,但不是。

除了运行一个作业来重命名存储中的字段(真的不合适,特别是因为每小时都有新文件),有没有办法将JSON文件中的字段映射到BQ模式中的字段?

我一直在使用控制台用户界面,但对我来说与BQ一起使用的界面没什么区别。

json google-cloud-platform google-bigquery google-cloud-storage google-cloud-console
2个回答
0
投票

我看到一些解决此问题的方法:

  1. 创建云功能以在新文件到达时触发。在该函数内部,读取文件的内容并进行转换。将结果写回新文件并将其加载到BigQuery中。我不确定在你的情况下这是多么可扩展。如果您的文件很大,那么这可能不起作用。
  2. 创建云函数以在新文件到达时触发,然后调用Dataflow模板化管道以将数据提取,转换和写入BigQuery。这是可扩展的,但需要额外的成本(数据流)。但是,将数据从GCS加载到BigQuery是一个很好的模式。

0
投票

懒惰,在BigQuery中:

  • 导入为CSV 每行一列,选择文件内不会出现的分隔符
  • 在BigQuery中解析 使用BQ JSON功能 或者使用javascript UDF以获得最大的灵活性

至少这是我通常做的。

© www.soinside.com 2019 - 2024. All rights reserved.