Невозможно сопоставить строковое поле protobuf с полем географии BigQuery в записи подписки в таблицу bigquery

Описание проблемы Мы создали тему публикации/подписки в Google Cloud Platform, где подписка должна писать напрямую в таблицу BigQuery, используя параметр Тип доставки: «Запись в BigQuery».

В теме используется схема proto3 следующим образом

syntax = "proto3";

message ProtocolBuffer {
  ...
  optional string location = 3;
  ...
}

а таблица BigQuery, в которую подписка должна писать, содержит столбец с нулевым значением location и типом GEOGRAPHY.

Теперь при попытке создать подписку выдает следующую ошибку: Incompatible schema type for field 'location': field is STRING in the topic schema, but GEOGRAPHY in the BigQuery table schema.

Как мы могли бы решить эту проблему, не меняя тип GEOGRAPHY столбца location в BigQuery? В идеале вы не хотите использовать Dataflow, старый способ записи с подписки на BigQuery по финансовым причинам.

Мы можем найти два источника Google Cloud Platform, чтобы попытаться решить эту проблему.

Отображение схемы
https://cloud.google.com/pubsub/docs/bigquery#schema_compatibility

Эта документация говорит нам, что нет существующего сопоставления между proto3 string и ZetaSQL GEOGRAPHY.

Преобразование типа данных
https://cloud.google.com/bigquery/docs/write-api#data_type_conversions

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

Создание приборной панели для анализа данных на GCP - часть I
Создание приборной панели для анализа данных на GCP - часть I
Недавно я столкнулся с интересной бизнес-задачей - визуализацией сбоев в цепочке поставок лекарств, которую могут просматривать врачи и...
0
0
65
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Подписка Cloud Pub/Sub BigQuery в настоящее время не поддерживает тип GEOGRAPHY, на что указывает ошибка. К сожалению, в настоящее время нет другого решения, кроме использования конвейера потока данных или изменения типа в таблице BigQuery. Вы также можете добавить запрос функции в трекере.

Проблема была создана в трекере Google здесь: https://issuetracker.google.com/issues/261481063

FIXIT 06.12.2022 15:31

Другие вопросы по теме