Как указать местоположение набора данных с помощью BigQuery API v0.27?

# #google-cloud-platform #google-bigquery

Вопрос:

Я пытаюсь выяснить, как указать местоположение набора данных в запросе API BigQuery, используя версию 0.27 API BigQuery.

У меня есть набор данных, расположенный в northamerica-northeast1 , и API BigQuery возвращает 404 ошибки, так как это не мультирегиональное местоположение по умолчанию «США».

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

Я также пытался ранее обновить экземпляр моего клиента следующим образом:

 def _get_client(self):
  bigquery.Client.SCOPE = (
      'https://www.googleapis.com/auth/bigquery',
      'https://www.googleapis.com/auth/cloud-platform',
      'https://www.googleapis.com/auth/drive')
  client = bigquery.Client.from_service_account_json(_KEY_FILE)
  if self._params['bq_data_location'].strip():
    client.location = self._params['bq_data_location']
  return client
 

Однако не похоже, что это правильный способ сообщить API BigQuery о местоположении набора данных.

Для дополнительного контекста в моем SQL, который я передаю API BigQuery, я уже указываю PROJECT_ID.DATASET_ID.TABLE_ID , однако этого, по-видимому, недостаточно для поиска региональных данных.

Кроме того, я делаю этот запрос из Google App Engine, используя платформу потока данных с открытым исходным кодом CRMint.

Не могли бы вы помочь мне с примером того, как можно добавить местоположение в API BigQuery для версии 0.27, чтобы API не возвращал 404?

Спасибо!

Ответ №1:

Из примера кода видно, что вы, скорее всего, говорите о google-cloud-bigquery 0.27, который был выпущен в августе 2017 года и предшествовал поддержке определения местоположения (а также многим другим функциям).

Лучше всего обновить эту зависимость до чего-то более нового.

Комментарии:

1. Да, расположение набора данных, по-видимому, было введено самое раннее в 0.32. Обновление-это единственное решение здесь.