【发布时间】:2018-05-09 09:39:12
【问题描述】:
正如 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'},
],
}
以及包含 DATE 类型列的 BigQuery 表。我以下列方式使用 bq load(在这两种情况下):
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