Невозможно установить таблицу назначения в заданиях с операторами DML в BigQuery - PullRequest
0 голосов
/ 04 апреля 2019

Я работаю над кодом Python для выполнения команды BigQuery sql с помощью bigquery.Client.query. Я получаю Невозможно установить таблицу назначения в заданиях с операторами DML исключение.

Ниже приведен код Python, который я использую

if query_file_name:
    with open(query_file_name, mode="r") as query_file:
        query = query_file.read()

job_config = bigquery.QueryJobConfig()
job_config.use_legacy_sql = use_legacy_sql

if destination:
    if destination.partitioned_field:
        job_config.time_partitioning = TimePartitioning(type_=TimePartitioningType.DAY, 
                                         field=destination.partitioned_field)
google_bq_table = self.fetch_table_reference(destination)
job_config.destination = google_bq_table

job_config.write_disposition = WriteDisposition.WRITE_APPEND

query_job = self.google_client.query(query, job_config=job_config)  # API request - starts the query asynchronously

У меня есть query_file, как показано ниже BigQuery sql

INSERT mydataset.target_table
        (col1, col2, col3, created_date)
WITH T AS (SELECT col1, col2, col3, CURRENT_DATE() as created_date
            from mydataset.temp_table
           )
SELECT col1, col2, col3, created_date FROM T

Заранее признателен за помощь

Спасибо

Рагхунат.

Ответы [ 2 ]

1 голос
/ 04 апреля 2019

Невозможно установить таблицу назначения в заданиях с инструкциями DML

Как стат в сообщении об ошибке BigQuery, вы не можете установить объект назначения кода Python при выполнении команды вставки.

Удаление этой строки

if destination:
    if destination.partitioned_field:
        job_config.time_partitioning = TimePartitioning(type_=TimePartitioningType.DAY, 
                                         field=destination.partitioned_field)
google_bq_table = self.fetch_table_reference(destination)
job_config.destination = google_bq_table

из вашего кода решит вашу проблему

1 голос
/ 04 апреля 2019

BigQuery должен быть ниже единицы, а не той, о которой идет речь.С помощью запроса ниже я могу успешно загрузить данные в целевую таблицу.

WITH T AS (SELECT col1, col2, col3, CURRENT_DATE() as created_date
            from mydataset.temp_table
           )
SELECT col1, col2, col3, created_date FROM T
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...