【发布时间】:2017-05-24 18:10:01
【问题描述】:
我指的是一个类似的帖子,我发现它非常有用。它展示了我们如何将 avro 文件中的整数列加载到包含时间戳字段的 BigQuery 表中。 Compatibility of Avro dates and times with BigQuery?
我有一个类似的问题。有没有办法将 avro 文件中的整数值加载到 bigquery 中的日期列?
由于 avro 不支持日期数据类型,我尝试将日期作为字符串字段保留在 avro 中,并尝试将其加载到 BigQuery 中的日期字段中。但这不起作用。
如果我知道 BigQuery 如何在内部存储日期,也许我可以尝试将我的日期转换为该值,然后将其加载到 BQ。
有什么建议吗?
【问题讨论】:
-
如果您不介意尝试...如果您加载具有整数值的 Avro 文件,例如
1、2和17311,会发生什么?如果这不起作用,一种选择是让您的表将日期存储为自 Unix 纪元以来的天数中的 INT64 类型,然后使用DATE_FROM_UNIX_DATE函数作为逻辑视图的一部分。 -
您好,感谢您的回复。这是我创建的表。它有两列。一个日期和一个整数。我的输入文件是一个简单的 csv 文件,其中包含 2 列“17167,1”。当我尝试将此文件加载到表中时出现以下错误。 bq load --format=csv rohan.temp_date dt.txt - file-00000000:无法将“17167”解析为从位置 0 开始的字段 dt(位置 0)的日期
-
最后一个选项是我可以尝试将日期加载为字符串并将其转换为视图中的日期。
-
我的意思是加载包含这些整数值的 Avro 文件,而不是 CSV 文件。如果 Avro 选项不起作用,那么逻辑视图可能是您的最佳选择。
-
@ElliottBrossard 我尝试从 GCS 将类型为“int”的 Avro 文件加载到 BigQuery 中,但出现以下错误 - “无法读取平板电脑:不兼容的类型。'day': INT64'天':INT32"。在 Avro 中将架构定义为“int”还是“long”似乎并不重要,BigQuery 似乎将其解释为 int64。
标签: google-bigquery avro