将列动态添加到现有的BigQuery选项卡

2024-06-29 01:08:07 发布

您现在位置:Python中文网/ 问答频道 /正文

我正在将文件从本地计算机加载到BigQuery。每个文件的变量号为领域。所以,我正在运行加载作业时使用'autodetect=true'。在

问题是,当第一次运行加载作业时,如果目标表不存在,Bigquery会通过推断文件中存在的字段来创建表,而该表将成为新表的架构。在

现在,当我用另一个包含一些额外字段(例如:“Middile Name”:“xyz”)的文件运行load job时,bigQuery抛出错误说“字段不存在于表中”)

通过这篇文章:BigQuery : add new column to existing tables using python BQ API,我了解到可以添加列动态的。但是我不明白的是

查询

我的程序怎么知道上传的文件包含额外的字段和模式不匹配(如果表不存在bcoz,这不是问题。将创建新表)。

如果我的程序能够以某种方式推断出上传的文件中存在的额外字段,我可以将这些列添加到现有表中,然后运行加载作业。在

我使用的是pythonbqapi。在

任何关于如何使这一过程自动化的想法都会很有帮助。在


Tags: 文件name程序true目标架构计算机作业
2条回答

您应该检查架构更新选项。有一个名为“允许添加字段”的选项可以帮助您。在

一个天真的解决方案是:

1.使用

在服务表().get(projectId=projectId,datasetId=datasetId,tableId=tableId)

2.在文件中生成数据架构。在

3.比较模式(有点“diff”),然后将这些列添加到目标表中,这些列在数据模式中是额外的

任何更好的想法或方法将不胜感激!在

相关问题 更多 >