首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何将BigQuery中的列添加到没有模式的表中,而不删除它在SQL中的当前标签?

如何将BigQuery中的列添加到没有模式的表中,而不删除它在SQL中的当前标签?
EN

Stack Overflow用户
提问于 2022-03-24 16:04:32
回答 1查看 989关注 0票数 1

我从python代码中运行BQ作业,该代码首先为带有特定标签和描述的结果在BQ中创建一个空表。稍后在BQ中,我将结果插入到那个空表中。唯一的问题是,我不能使用ALTER将列添加到没有模式的表中。之前我不能添加模式,因为SQL查询是由Python代码动态创建的。解决这个问题的唯一方法是使用一个名为'x‘的列创建表,然后在SQL查询结束时删除它。

下面是代码外观的一个概念:

代码语言:javascript
运行
复制
CREATE TEMP FUNCTION 
    ... very_complicated_function ...;

CREATE TEMP TABLE features AS    
    ... very_clever_code ...;


ALTER TABLE `table.created.by_python`
ADD COLUMN IF NOT EXISTS key INT64,
ADD COLUMN IF NOT EXISTS feature1 INT64;

ALTER TABLE `table.created.by_python` DROP COLUMN x;



INSERT INTO `table.created.by_python`
SELECT * except(nearest_centroids_distance)
  from 
    ML.PREDICT(MODEL `brilliant.genius.amazing`, 
                  (SELECT * FROM features)) M

最好的方法是将数据插入空表,如果不存在,让它自己创建模式。

EN

回答 1

Stack Overflow用户

发布于 2022-03-24 20:41:42

可以通过以下方式将空列添加到现有表中:

  • 使用云控制台
  • 使用bq命令行工具的bq更新命令
  • 调用tables.patch API方法
  • 使用ALTER添加列数据定义语言(DDL)语句。
  • 使用客户端库。

下面是一些您可以尝试使用的python代码,看看它对您的情况是否有帮助。

代码语言:javascript
运行
复制
from google.cloud import bigquery
 
# Construct a BigQuery client object.
client = bigquery.Client()
 
# TODO(developer): Set table_id to the ID of the table
#                  to add an empty column.
# table_id = "your-project.your_dataset.your_table_name"
 
table = client.get_table(table_id)  # Make an API request.
 
original_schema = table.schema
new_schema = original_schema[:]  # Creates a copy of the schema.
new_schema.append(bigquery.SchemaField("phone", "STRING"))
 
table.schema = new_schema
table = client.update_table(table, ["schema"])  # Make an API request.
 
if len(table.schema) == len(original_schema) + 1 == len(new_schema):
    print("A new column has been added.")
else:
    print("The column has not been added.")

另外,这里有一些文档可以帮助您将新列实现到表中。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/71605728

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档