首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >BigQuery:加载日期列数据类型为长时间转换为时间戳的avro文件

BigQuery:加载日期列数据类型为长时间转换为时间戳的avro文件
EN

Stack Overflow用户
提问于 2020-08-10 12:50:34
回答 1查看 809关注 0票数 1

我很难让BigQuery正确地从avro文件中加载时间戳。

avro-文件的日期列存储的长度相同,具有逻辑类型的时间戳-micros。根据文档,BigQuery应该将其存储为时间戳数据类型。我也尝试了时间戳-millis的逻辑类型。

数据存储在avro中,如下所示:

代码语言:javascript
复制
{'id': '<masked>', '<masked>': '<masked>', 'tm': 1553990400000, '<masked>': <masked>, '<masked>': <masked>, 'created': 1597056958864}

字段tm和已创建的字段分别为长、2019-03-31T00:00:00Z和2020-08-10T11:50:58.986816592Z。

avro的架构是

代码语言:javascript
复制
{"type":"record","name":"SomeMessage","namespace":"com.df",
"fields":
[{"name":"id","type":"string"},
{"name":"<masked>","type":"string"},
{"name":"tm","type":"long","logicalType":"timestamp-micros"},
{"name":"<masked>","type":"int"},
{"name":"<masked>","type":"float"},
{"name":"created","type":"long","logicalType":"timestamp-micros"}]}";

当通过bq加载导入到BigQuery时,记录结果如下:

代码语言:javascript
复制
<masked>   <masked>   tm                            <masked>   <masked>  created
________________________________________________________________________________________________________
<masked> | <masked> | 1970-01-18 23:39:50.400 UTC | <masked> | <masked> | 1970-01-19 11:37:36.958864 UTC
________________________________________________________________________________________________________

使用的import命令是:

代码语言:javascript
复制
bq load --source_format=AVRO --use_avro_logical_types some_dataset.some_table "gs://some-bucket/some.avro"

BigQuery中的时间戳与avro中提供的实际值相差甚远。

有谁对如何做好这件事有什么想法吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-08-11 09:01:06

我发现avro模式实际上是错误的。时间戳字段应该如下所示:

代码语言:javascript
复制
{"name":"created","type":{"type":"long", "logicalType":"timestamp-millis"}}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/63340562

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档