将 unix 时间戳转换为 avro 并将其存储在 BigQuery 中
Posted
技术标签:
【中文标题】将 unix 时间戳转换为 avro 并将其存储在 BigQuery 中【英文标题】:Convert unix timestamp to avro and store it in BigQuery 【发布时间】:2019-06-07 10:05:38 【问题描述】:Avro 架构:
"name": "Entity",
"type": "record",
"namespace": "com.foobar.entity",
"fields": [
"name": "attribute",
"type": "string"
,
"name": "value",
"type": "int"
,
"name": "timestamp",
"type": "type": "long", "logicalType": "timestamp-micros"
]
源时间戳为 Unix 格式,精度为毫秒。
当我将此类记录放入 BigQuery 时,我会在 BigQuery 数据预览中获得类似 1970-01-19 01:18:19.415 UTC
的值。但是我存储的值是1559899418
,即Friday, 7. June 2019 09:23:38
。任何想法为什么?
参考:https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#logical_types
【问题讨论】:
【参考方案1】:您的时间戳相差 1000 倍。确实,1559899418
对应于 Friday, 7. June 2019 09:23:38
,但这是秒精度 (Unix timestamp),而不是毫秒。
而1559899
(1559899418 的千分之一)确实对应于1970-01-19 01:18:19
【讨论】:
? 感谢您指出这一点。所以最后我做了 timestamp*1000*1000 现在 BigQuery 显示正确的日期。以上是关于将 unix 时间戳转换为 avro 并将其存储在 BigQuery 中的主要内容,如果未能解决你的问题,请参考以下文章
将 datetime 转换为 Unix 时间戳并将其转换回 python
在python中将UNIX时间戳转换为str并将str转换为UNIX时间戳[重复]