我尝试使用带有bq
标志的--[no]use_avro_logical_types
命令将avro文件加载到BigQuery表中,该文件在执行该命令之前不存在。平均方案包含timestamp-millis
逻辑类型值。执行命令后,将创建一个新表,但其列的架构变为INTEGER
。
这是最近发布的功能,因此我找不到示例,也不知道自己缺少什么。谁能给我一个好榜样?
我的avro模式如下所示,
...
}, {
"name" : "timestamp",
"type" : [ "null", "long" ],
"default" : null,
"logicalType" : [ "null", "timestamp-millis" ]
}, {
...
执行命令是这样的:
bq load --source_format=AVRO --use_avro_logical_types <table> <path/to/file>
答案 0 :(得分:1)
要使用timestamp-millis逻辑类型,可以通过以下方式指定字段:
{
"name" : "timestamp",
"type" : {"type": "long", "logicalType" : "timestamp-millis"}
}
为了提供可选的“ null”值,您可以尝试以下规范:
{
"name" : "timestamp",
"type" : {"type": [null, "long"], "logicalType" : "timestamp-millis"}
}
有关受支持的Avro逻辑类型的完整列表,请参阅Avro规范:https://avro.apache.org/docs/1.8.0/spec.html#Logical+Types。
答案 1 :(得分:0)
根据https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro,平均类型timestamp-millis
一旦加载到BigQuery中就会转换为INTEGER
。