我正在将文件从本地计算机加载到BigQuery。每个文件的变量号为领域。所以,我正在运行加载作业时使用'autodetect=true'。在
问题是,当第一次运行加载作业时,如果目标表不存在,Bigquery会通过推断文件中存在的字段来创建表,而该表将成为新表的架构。在
现在,当我用另一个包含一些额外字段(例如:“Middile Name”:“xyz”)的文件运行load job时,bigQuery抛出错误说“字段不存在于表中”)
通过这篇文章:BigQuery : add new column to existing tables using python BQ API,我了解到可以添加列动态的。但是我不明白的是
查询
我的程序怎么知道上传的文件包含额外的字段和模式不匹配(如果表不存在bcoz,这不是问题。将创建新表)。
如果我的程序能够以某种方式推断出上传的文件中存在的额外字段,我可以将这些列添加到现有表中,然后运行加载作业。在
我使用的是pythonbqapi。在
任何关于如何使这一过程自动化的想法都会很有帮助。在
您应该检查架构更新选项。有一个名为“允许添加字段”的选项可以帮助您。在
一个天真的解决方案是:
1.使用
在服务表().get(projectId=projectId,datasetId=datasetId,tableId=tableId)
2.在文件中生成数据架构。在
3.比较模式(有点“diff”),然后将这些列添加到目标表中,这些列在数据模式中是额外的
任何更好的想法或方法将不胜感激!在
相关问题 更多 >
编程相关推荐