0

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

jsonPayload.request.x-search

我尝试重命名 BigQuery 架构中的字段,以 jsonPayload.request.x_search希望加载器能够发挥作用,但不。

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

我一直在使用控制台 UI,但与 BQ 一起使用的界面对我没有任何影响。

4

2 回答 2

1

我看到了一些解决此问题的选项:

  1. 创建一个云函数以在您的新文件到达时触发。在该函数中,读取文件的内容并对其进行转换。将结果写回新文件并将其加载到 BigQuery。我不确定在您的情况下这具有多大的可扩展性。如果您的文件很大,那么这可能不起作用。
  2. 创建一个云函数以在新文件到达时触发,然后调用 Dataflow 模板化管道来提取、转换数据并将其写入 BigQuery。这是可扩展的,但会带来额外的成本(数据流)。但是,这是将数据从 GCS 加载到 BigQuery 的一个很好的模式。
于 2018-09-15T05:40:39.047 回答
1

懒惰地,在 BigQuery 中:

  • 导入为 CSV
    • 每行一列,选择文件中不存在的分隔符
  • 在 BigQuery 中解析
    • 使用 BQ JSON 函数
    • 或使用 javascript UDF 以获得最大的灵活性

至少这是我通常做的。

于 2018-09-15T18:01:40.683 回答