【问题标题】:How to prepare schema for csv files with varying schema in cloud functions如何为云函数中具有不同架构的 csv 文件准备架构
【发布时间】:2018-12-19 21:12:09
【问题描述】:

我有一个云函数,它读取输入的 csv 文件并将其加载到大查询中。现在的挑战是我可以获得具有不同架构的 csv 文件(不是在最后,顺序可以在任何地方更改),如何通过读取标题记录来处理文件并准备架构并为非列插入 null/默认值出现在输入中。

【问题讨论】:

  • 您遇到了什么错误?我不确定您所说的不同架构是什么意思。列类型是否按行更改?如果是这样,Bigquery 不支持。如果你的意思是应该有空值,默认情况下,如果一个值不存在于 csv 文件的列中,它应该将其包含为 NULL。
  • 我所说的改变模式的意思是我可以在一个文件中获得 30 列,在下一个文件中获得 50 列。该程序应该能够根据列名而不是分隔符加载数据。应该创建第二个文件中缺少的 20 列并使用空值加载。

标签: google-cloud-platform google-bigquery google-cloud-functions


【解决方案1】:

确保 --schema_update_option 设置为 ALLOW_FIELD_ADDITION 并指定新表的架构,例如

bq --project_id <project_id> load --source_format=CSV --schema_update_option ALLOW_FIELD_ADDITION <dataset_id>.<table_id> <data> new_col:STRING,new_col2:STRING

根据原始表架构,您可能需要使用 --schema_update_option ALLOW_FIELD_RELAXATION 将必填字段放宽为可为空。

https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-csv#appending_to_or_overwriting_a_table_with_csv_data

【讨论】:

  • 此选项是否也适用于云功能?我尝试在我的云函数中添加此参数,但效果很好。如果有,请提供一些代码示例。谢谢!
  • 你能举个例子说明你想运行什么吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-08-16
  • 2021-03-09
  • 2015-02-20
  • 2022-10-23
  • 2012-07-17
相关资源
最近更新 更多