【问题标题】:How to create BigQuery Table from JSONs in Google Cloud Storage if some fields have forbidden characters?如果某些字段包含禁止字符,如何在 Google Cloud Storage 中从 JSON 创建 BigQuery 表?
【发布时间】:2019-02-19 20:09:21
【问题描述】:

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

jsonPayload.request.x-search

我尝试将 BigQuery 架构中的字段重命名为 jsonPayload.request.x_search 希望装载机能发挥作用,但不。

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

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

【问题讨论】:

    标签: json google-cloud-platform google-bigquery google-cloud-storage google-cloud-console


    【解决方案1】:

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

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

    【讨论】:

      【解决方案2】:

      在 BigQuery 中懒惰地:

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

      至少这是我通常做的。

      【讨论】:

        猜你喜欢
        • 2017-06-12
        • 2021-08-19
        • 2015-06-16
        • 2019-02-05
        • 2021-06-30
        • 2020-01-19
        • 1970-01-01
        • 1970-01-01
        • 2016-06-17
        相关资源
        最近更新 更多