猿问

bigquery TIMESTAMP 字段的 Protobuf 类型

我正在使用新的Storage API从 Golang 将数据流式传输到 bigquery 。我的 bigquery 表的架构包含一个 TIMESTAMP 字段,如下所示:


bq mk -t mydataset.mytable name:string,lastseen:timestamp

另外,我已经定义了一个这样的协议缓冲区:


message Row {

    string Name = 1;

    google.protobuf.Timestamp LastSeen = 3;

}

但是,当我将此数据提交到 BigQuery 时,我收到以下错误:


rpc error: code = InvalidArgument desc = The proto field mismatched with BigQuery field at tutorial_Row.LastSeen, the proto field type message, BigQuery field type TIMESTAMP

似乎google.protobuf.Timestampprotobuf 与 bigquery 中的 TIMESTAMP 类型不对应。这是有道理的,因为 bigquery 文档说 TIMESTAMP 包含时区,但google.protobuf.Timestamp不包含时区。但是我应该使用哪个协议缓冲区?


holdtom
浏览 79回答 1
1回答

陪伴而非守候

是的,后端没有正确解码原始时间戳消息。最快的分辨率答案:发送 int64 类型,填充为纪元微秒。https://cloud.google.com/bigquery/docs/write-api#data_type_conversions
随时随地看视频慕课网APP

相关分类

Go
我要回答