使用 Google BigQuery Python 库创建或替换表
Posted
技术标签:
【中文标题】使用 Google BigQuery Python 库创建或替换表【英文标题】:CREATE OR REPLACE TABLE using the Google BigQuery Python library 【发布时间】:2020-01-31 23:04:58 【问题描述】:我的 Python 代码是这样的:
from google.cloud import bigquery
client = bigquery.Client(
project='my-project',
credentials=credentials,
)
sql = '''
CREATE OR REPLACE TABLE `my-project.my_dataset.test` AS
WITH some_table AS (
SELECT * FROM `my-project.my_dataset.table_1`
),
some_other_table AS (
SELECT id, some_column FROM my-project.my_dataset.table_2
)
SELECT * FROM some_table
LEFT JOIN some_other_table ON some_table.unique_id=some_other_table.id
'''
query_job = client.query(sql)
query_job.result()
查询在 Google BigQuery 控制台 UI 中有效,但在从 Python 执行上述操作时无效。
我知道通过使用 CREATE OR REPLACE 这是一个“DDL”请求,我无法从 Python 库中弄清楚如何执行该请求。您可以在 job.config 中设置目标表,这使您可以创建表,但是您无法获得 CREATE OR REPLACE 功能。
感谢您的帮助。
【问题讨论】:
这在什么方面“不起作用”?您是否收到某种错误消息?你想如何或在哪里运行它? 你使用什么版本的 Python 库?旧版本默认使用 Legacy SQL 方言,因此您可能需要升级或在客户端属性中指定标准 SQL。 【参考方案1】:在仔细查看文档后,我可以说Python SDK
for BigQuery
没有指定将DDL
语句作为查询执行的方法。您可以找到您正在使用的query
函数here 的文档化代码。如您所见,query
参数需要 SQL
语句。
尽管如此,我试图重现您的问题,但它对我有用。我可以通过使用DDL
语句来完美地创建表格,就像您尝试做的那样。因此我们可以得出结论,API 将 DDL 视为 SQL 的子集。
我建议您评论您收到的错误,以便我可以为您提供更好的支持。
【讨论】:
以上是关于使用 Google BigQuery Python 库创建或替换表的主要内容,如果未能解决你的问题,请参考以下文章
如何使用 google-api-python-client 设置 BigQuery 配置属性?
在 google bigquery 中,如何使用 google python 客户端使用 javascript UDF
使用 Google BigQuery Python 库创建或替换表
BigQuery 使用 Python Google Cloud 库将日期插入“DATE”类型字段
Google BigQuery:通过 Python google-cloud-bigquery 版本 0.27.0 与 0.28.0 创建视图
使用 Python,将 google.cloud.bigquery.job.query.QueryJob 输出保存到本地 JSON 文件