繁体   English   中英

无法将 map protobuf 字符串字段写入 BigQuery 表的订阅中的 BigQuery 地理字段

[英]Unable to map protobuf string field to BigQuery's geography field in a subscription writing to a bigquery table

问题描述我们在 Google Cloud Platform 中创建了一个发布/订阅主题,其中订阅应使用选项交付类型直接写入 BigQuery 表:“写入 BigQuery”。

该主题使用 proto3 架构如下

syntax = "proto3";

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

订阅应写入的 BigQuery 表包含类型为GEOGRAPHY的可为空的列location

现在,当尝试创建订阅时,会抛出以下错误: Incompatible schema type for field 'location': field is STRING in the topic schema, but GEOGRAPHY in the BigQuery table schema.

我们如何在不更改 BigQuery 中location列的GEOGRAPHY类型的情况下解决此问题? 理想情况下,您不想使用数据流,这是出于财务原因从订阅到 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被转换为 proto 的string 但是,我们毕竟得到了一个错误。

Cloud Pub/Sub BigQuery 订阅目前不支持 GEOGRAPHY 类型,这是错误所指示的。 不幸的是,目前除了使用 Dataflow 管道或更改 BigQuery 表中的类型之外没有其他解决方案。 您还可以在问题跟踪器中添加功能请求。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM