Невозможно установить таблицу назначения с API BigQuery Python - PullRequest
1 голос
/ 31 октября 2019

Недавно я получаю следующую ошибку BigQuery при использовании Python API:

google.api_core.exceptions.BadRequest: 400 configuration.query.destinationTable нельзя установить для сценариев

Я использую эту функцию:

def execute_bigquery_sql(query, dataset_id, table_id, use_legacy_sql=True, write_disposition='WRITE_TRUNCATE'):
    client = bigquery.Client()
    job_config = bigquery.QueryJobConfig()
    job_config.use_legacy_sql = use_legacy_sql

    print("table_id: {table_id}".format(table_id=table_id))
    print("dataset_id: {dataset_id}".format(dataset_id=dataset_id))

    if table_id:
        table_ref = client.dataset(dataset_id).table(table_id)
        print("table_ref: {table_ref}".format(table_ref=table_ref))
        job_config.destination = table_ref
        job_config.write_disposition = write_disposition
        job_config.allow_large_results = True
        job_config.createDisposition = "CREATE_IF_NEEDED"

    query_job = client.query(query,job_config=job_config)
    results = query_job.result()  # Waits for job to complete.

Кто-нибудь знает, что может произойти, и как обойти это?

Ответы [ 2 ]

1 голос
/ 31 октября 2019

ошибка является самоописательной. Сценарии не позволяют устанавливать таблицу назначения - вместо этого вы должны использовать DML / DDL

Обходной путь - сбросить job_config без таблицы назначения в ней

0 голосов
/ 31 октября 2019

Спасибо за ответы, комментарии действительно были в правильном направлении. В BigQuery сценарии означают https://cloud.google.com/bigquery/docs/reference/standard-sql/scripting.

И это то, что не разрешено, и мой запрос имел:

DECLARE capital int64 default 10000000;

Таким образом, удаление строки выше было исправлением в моем случае.

Интересно то, что даже в веб-интерфейсе

  • Если вы используете скрипты, интерфейс не позволит сохранить в таблицу:

When using scripts such as DECLARE

  • Напротив, если вы не используете операторы сценария, вы должны увидеть: Not using scripts
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...