gpt4 book ai didi

python - BigQuery - 更新架构,从 Python 客户端在任意位置添加 NULL 列

转载 作者:太空宇宙 更新时间:2023-11-03 21:22:17 25 4
gpt4 key购买 nike

背景

我想更新 BigQuery 中一个表的架构,以匹配另一个包含原始列超集的表的架构。我想通过 BigQuery Python 客户端来完成此操作。

问题

实际上,我想将一些包含 NULL 的列添加到现有 BigQuery 表中的任意位置,该位置不一定是开头或结尾。

我知道如何按照此 snippet 在表格的末尾追加新列,但我想在任意位置添加列。此外,我想通过架构更新来完成此操作,而不必查询整个表。

由于架构实际上是 SchemaField 对象的列表,我认为用 insert 方法替换 append 方法就足够了。但这个片段并没有达到我想要的效果:

from google.cloud import bigquery
client = bigquery.Client()
dataset_id = 'my_dataset'
table_id = 'my_table'

table_ref = client.dataset(dataset_id).table(table_id)
table = client.get_table(table_ref) # API request

original_schema = table.schema

new_schema = original_schema[:] # creates a copy of the schema
# insert new_col at position 2, instead of appending
new_schema.insert(2, bigquery.SchemaField('new_col', 'STRING'))

table.schema = new_schema
table = client.update_table(table, ['schema']) # API request

此代码导致架构被更新,就像调用的方法是 append 一样,即 new_col 被放置在架构的末尾。

问题

您知道是否可以修改 BigQuery 表的架构,以便在任意位置插入新的 (NULL) 列> 位置?

最佳答案

根据答案in this question我建议复制半表,添加所需的列,然后添加旧表的联接将是一种可能性,确实比在末尾添加新列更昂贵,但仍然是一种可能性。

关于python - BigQuery - 更新架构,从 Python 客户端在任意位置添加 NULL 列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54149875/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com