将 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时间戳[重复]

将长的 Unix 纪元时间戳转换为实际日期/时间

Unix 纪元时间戳在 Python 中转换为 UTC 时区

转换unix时间戳php

BigQuery:加载具有日期列数据类型的 avro 文件,只要转换为时间戳