json - 如果某些字段包含禁止字符,如何从 Google Cloud Storage 中的 JSON 创建 BigQuery 表?
问题描述
我正在尝试将存储桶中的一堆数据(换行符分隔的 json 文件)移动到 BigQuery 中。BigQuery 禁止在其字段名称中使用某些字符,例如破折号-
或slashes
. 不幸的是,我们的数据在许多字段名称中都有破折号,即
jsonPayload.request.x-search
我尝试重命名 BigQuery 架构中的字段,以
jsonPayload.request.x_search
希望加载器能够发挥作用,但不。
除了运行一个作业来重命名存储中的字段(真的不受欢迎,特别是因为新文件每小时进来),有没有办法将 JSON 文件中的字段映射到 BQ 模式中的字段?
我一直在使用控制台 UI,但与 BQ 一起使用的界面对我没有任何影响。
解决方案
我看到了一些解决此问题的选项:
- 创建一个云函数以在您的新文件到达时触发。在该函数中,读取文件的内容并对其进行转换。将结果写回新文件并将其加载到 BigQuery。我不确定在您的情况下这具有多大的可扩展性。如果您的文件很大,那么这可能不起作用。
- 创建一个云函数以在新文件到达时触发,然后调用 Dataflow 模板化管道来提取、转换数据并将其写入 BigQuery。这是可扩展的,但会带来额外的成本(数据流)。但是,这是将数据从 GCS 加载到 BigQuery 的一个很好的模式。
推荐阅读
- python - 如何提取嵌套的 json 名称并在 python 中转换为点符号字符串列表?
- django - 无法登录,因为 Django 以纯文本格式保存密码,但是
- iis - 在 IIS 8.5 中有没有办法在 web.config 中设置 ConnectionTimeout 限制?
- css - 设计师是如何应用这个 CSS 类的?
- python - 如何在pygame中将数组输出到显示器中?
- python - macOS Big Sur 更新后 Jupyter 笔记本错误“未加载 dyld 库:CoreFoundation”
- java - 休眠错误非空属性引用瞬态值 - 瞬态实例必须在当前操作之前保存
- reactjs - “商店和网络”与“仅限网络”有什么区别?
- wso2 - wso2 中的数据映射器配置为空
- sql-server - Sql Server - 仅为活动用户获取值的 SUM()