BigQuery Python 409 уже существует: таблица - PullRequest
1 голос
/ 24 марта 2020

Я кодирую скрипт python, который записывает результаты запроса в таблицу BQ. После первого запуска скрипта он всегда выдает ошибку со следующей ошибкой: google.api_core.exceptions.Conflict: 409 Already Exists: Table project-id.dataset-id. Я не понимаю, почему он пытается создать таблицу каждый раз, когда я запускаю скрипт. Нужно ли указывать какие-либо конкретные c параметры?

Это из документации от Google. Я использую это как пример и под идеей, что текущая таблица уже была создана. Где я могу остановить API для создания той же таблицы?

from google.cloud import bigquery

# TODO(developer): Construct a BigQuery client object.
client = bigquery.Client()

# TODO(developer): Set table_id to the ID of the destination table.
 table_id = "your-project.your_dataset.your_table_name"

job_config = bigquery.QueryJobConfig(destination=table_id)

sql = """
    SELECT corpus
    FROM `bigquery-public-data.samples.shakespeare`
    GROUP BY corpus;
"""

# Start the query, passing in the extra configuration.
query_job = client.query(sql, job_config=job_config)  # Make an API request.
query_job.result()  # Wait for the job to complete.

print("Query results loaded to the table {}".format(table_id))

Ответы [ 2 ]

1 голос
/ 25 марта 2020

Если вы проверите класс QueryJobConfig , вы увидите, что есть параметр с именем write_dispotition. Как вы можете видеть в справочнике REST API здесь , этот параметр может быть настроен на 3 различные опции:

  • WRITE_TRUNCATE: если таблица уже существует, BigQuery перезаписывает таблицу данные и использует схему из результата запроса.
  • WRITE_APPEND: если таблица уже существует, BigQuery добавляет данные в таблицу.
  • WRITE_EMPTY: если таблица уже существует и содержит данные, в результате задания возвращается «повторяющаяся» ошибка.

Итак, добавление этой строки после определения job_config поможет:

job_config.write_disposition = bigquery.WriteDisposition.WRITE_TRUNCATE
0 голосов
/ 25 марта 2020

просмотреть эту документацию по клиенту BigQuery здесь просмотреть параметр существующие_ok

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