首页 > 解决方案 > 使用 Google BigQuery Python 库创建或替换表

问题描述

我的 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 功能。

感谢您的任何帮助。

标签: pythongoogle-bigquery

解决方案


在仔细查看文档之后,我可以说Python SDKforBigQuery没有指定将DDL语句作为查询执行的方式。您可以在此处query找到您正在使用的函数的文档化代码。如您所见,参数需要一个语句。querySQL

尽管如此,我试图重现你的问题,它对我有用。DDL我可以通过使用您尝试做的语句来完美地创建表格。因此我们可以得出结论,API 将 DDL 视为 SQL 的子集。我建议您评论您收到的错误,以便我可以为您提供更好的支持。


推荐阅读