СОЗДАТЬ ИЛИ ЗАМЕНИТЬ СТОЛ с помощью библиотеки Google BigQuery Python - PullRequest
1 голос
/ 01 февраля 2020

Мой 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 Console, но не при выполнении, как описано выше, из Python.

Я понимаю что с помощью CREATE OR REPLACE это запрос "DDL", который я не могу понять, как выполнить из библиотеки Python. Вы можете установить таблицу назначения в файле job.config, который позволяет вам СОЗДАТЬ таблицу, но тогда вы не получите функциональность CREATE OR REPLACE.

Спасибо за любую помощь.

1 Ответ

0 голосов
/ 03 февраля 2020

После тщательного изучения документации я могу сказать, что Python SDK для BigQuery не указывает способ выполнения DDL операторов в качестве запроса. Документированный код для query функции, которую вы используете , вы можете найти здесь . Как видите, параметр query ожидает оператора SQL.

Несмотря на это, я пытался воспроизвести вашу проблему, и она сработала для меня. Я мог бы идеально создать таблицу, используя оператор DDL, как вы пытаетесь это сделать. Отсюда можно сделать вывод, что API рассматривает DDL как подмножество SQL. Я предлагаю вам прокомментировать полученную вами ошибку, чтобы я мог оказать вам лучшую поддержку.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...