BigQuery:-[no] use_avro_logical_types标志无效

时间:2018-11-19 11:31:15

标签: google-bigquery

我尝试使用带有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>

2 个答案:

答案 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