首页 > 解决方案 > 如果某些字段包含禁止字符,如何从 Google Cloud Storage 中的 JSON 创建 BigQuery 表?

问题描述

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

jsonPayload.request.x-search

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

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

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

标签: jsongoogle-cloud-platformgoogle-bigquerygoogle-cloud-storagegoogle-cloud-console

解决方案


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

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

推荐阅读