![](/img/trans.png)
[英]CSV upload into BigQuery partitioned table using a string field as partition
[英]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.