Google BigQuery支持Avro logicalTypes

问题描述 投票:1回答:1

正如Google声称的那样,不支持从Avro logicalType转换为BigQuery特定类型(如here on the bottom所述)。

但是,我可以使用以下架构加载Avro文件:

schema = {
    'name': 'test',
    'namespace': 'testing',
    'type': 'record',
    'fields': [
        {'name': 'test_timestamp', 'type': 'long', 'logicalType': 'timestamp-millis'},
    ],
}

使用TIMESTAMP类型的列到BigQuery上。

以下架构的情况有所不同:

schema = {
    'name': 'test',
    'namespace': 'testing',
    'type': 'record',
    'fields': [
        {'name': 'testdate', 'type': 'int', 'logicalType': 'date'},
    ],
} 

和DQuery类型的列的BigQuery表。我以下列方式使用bq加载(在两种情况下):

bq --location=EU load --source_format=AVRO --project_id=test-project dataset.table "gs://bucket/test_file.avro"

它失败了例外:

Field testdate has changed type from DATE to INTEGER

有没有机会让bigQuery支持logicalTypes,还是有任何优雅的方法来解决这种情况? (我知道使用临时表的解决方法,然后有BQL选择将TIMESTAMPS强制转换为DATES,但它不是很漂亮:P)

google-cloud-platform google-bigquery google-cloud-storage avro
1个回答
4
投票

现在可以为所有BigQuery用户公开了解Avro Logical Types的本地理解。有关更多详细信息,请参阅此处的文档页面:https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#logical_types

© www.soinside.com 2019 - 2024. All rights reserved.