Ошибка библиотеки Google Bigquery - PullRequest
0 голосов
/ 28 июня 2018

Я получаю эту ошибку Cannot set destination table in jobs with DDL statements

Когда я пытаюсь повторно отправить задание из функции job.build_resource() в библиотеке google.cloud.bigquery.

Похоже, что таблица назначения настроена на что-то вроде этого после вызова этой функции.

'destinationTable': {'projectId': 'xxx', 'datasetId': 'xxx', 'tableId': 'xxx'},

Я что-то здесь не так делаю? Спасибо всем, кто может дать мне любое руководство здесь.

EDIT:

Задание изначально запускается этим

query = bq.query(sql_rendered)

Мы храним идентификатор задания и используем его позже для проверки статуса.

Мы получаем работу вот так

job = bq.get_job(job_id=job_id)

Если он удовлетворяет условию, в этом случае он не выполнен из-за ограничения скорости. Мы повторяем работу.

Мы повторяем работу вот так

di = job._build_resource()
jo = bigquery.Client(project=self.project_client).job_from_resource(di)
jo._begin()

Я думаю, что это в значительной степени весь код, который вам нужен, но с удовольствием предоставлю больше, если это необходимо.

1 Ответ

0 голосов
/ 12 июля 2018

Вы видите эту ошибку, потому что в вашем запросе есть оператор DDL. Происходит следующее: job_config меняет некоторые значения после выполнения первого запроса, в частности job_config.destination. Чтобы попытаться преодолеть эту проблему, вы можете попытаться сбросить значение job_config.destination на Нет после каждой отправки задания или использовать разные job_config для каждого запроса.

...