使用 Google BigQuery Python 库创建或替换表

tw0*_*000 11 python google-bigquery

我的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()
Run Code Online (Sandbox Code Playgroud)

该查询在 Google BigQuery 控制台 UI 中有效,但在按上述方式从 Python 执行时无效。

我知道通过使用 CREATE OR REPLACE 这是一个“DDL”请求,我无法弄清楚如何从 Python 库执行该请求。您可以在 job.config 中设置目标表,这使您可以创建表,但随后您将无法获得 CREATE 或 REPLACE 功能。

感谢您的任何帮助。

rme*_*ves 6

仔细查看文档后,我可以说 forPython SDK没有BigQuery指定将DDL语句作为查询执行的方法。您可以在此处query找到您正在使用的函数的记录代码。正如您所看到的,该参数需要一个语句。querySQL

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