google-bigquery - Avro 纪元日期时间到 bq 时间戳

标签 google-bigquery avro

我想将GCS中存储的Avro文件中的数据加载到大查询表中。 avro 中的两个字段有 datetimec

我有包含几个字段的 Avro 文件,其中一个字段的 Epoch 时间值具有 Long 类型。 对于该字段,我想加载“时间戳”格式的值,同时使用命令行工具或控制台将 Avro 文件数据加载到 Bigquery 表。 例如 : 我有一个值为 1614004223589 的列,我希望使用命令行工具或控制台将该值加载为 2021-02-22 14:28:56 UTC。首先,我在 BQ 中创建了空表,并将字段的数据类型保留为 TIMESTAMP,然后使用 CLI 将数据加载到 BQ 表中。但我得到的是 1970-01-19 16:20:04.135924 UTC,而不是 2021-02-22 14:30:24

任何线索都将不胜感激。

最佳答案

这是因为 Unix 格式具有秒精度,但是 BQ 要求其精度为毫秒或微秒,将列乘以 1000,然后尝试使用函数 TIMESTAMP_SECONDS 进行协调,它将起作用.

您可以尝试以下解决方案来达到所需的要求。

第 1 步:以与源文件相同的格式将数据加载到 Bigquery。 第 2 步:在最近的表上创建一个 View ,并在该 View 中应用日期转换,更进一步,始终引用数据 View 。

替代解决方案:- 第 1 步:以与 GCS 上可用的格式相同的格式将数据加载到 Bigquery。 第 2 步:创建一个日期转换函数,并在调用数据之前将函数应用于 Unix 格式日期。

关于google-bigquery - Avro 纪元日期时间到 bq 时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66327210/

相关文章:

sql - 将点与 SQL/BigQuery 中的多边形匹配,以便该点位于多边形边界内至少 N 米(即不靠近边界)

java - 如何从 Java 消费者主题中的消息中的架构注册表中检索 AVRO 架构

java - 如何将我的 json 字符串进行 avro 二进制编码为字节数组?

java - 生成的 Avro Builder 设置 null 不会被默认覆盖

json - 如何从 Avro Schema 创建有效的 JSON 示例?

java - 如何更改 Aerospike 使用的序列化器/解串器?

python - 在 BigQuery 中运行 python 函数

google-drive-api - 使用带Google表格的BigQuery API时"Encountered an error while globbing file pattern"错误

go - 读取没有结构的BQ查询结果

google-bigquery - BigQuery : cost of querying tables partitioned by ingestion time vs date/timestamp partitioned