正如谷歌所宣称的,不支持从Avro logicalType
转换到BigQuery特定类型(如描述的在底部)。
但是,我能够用以下模式加载Avro文件:
schema = {
'name': 'test',
'namespace': 'testing',
'type': 'record',
'fields': [
{'name': 'test_timestamp', 'type': 'long', 'logicalType': 'timestamp-millis'},
],
}
在BigQuery上使用类型为时间戳的列。
情况与以下模式不同:
schema = {
'name': 'test',
'namespace': 'testing',
'type': 'record',
'fields': [
{'name': 'testdate', 'type': 'int', 'logicalType': 'date'},
],
}
和BigQuery表,其列类型为DATE。我使用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
logicalTypes
是否有可能得到BigQuery的支持,或者是否有任何优雅的方法来解决这种情况?(我知道使用临时表的变通方法,还有将时间戳转换为日期的BQL select,但它并不是很漂亮:P)
发布于 2018-05-09 11:17:35
对于Avro逻辑类型的本地理解现在对所有BigQuery用户都是公开的。有关详细信息,请参阅此处的文档页:类型
https://stackoverflow.com/questions/50250141
复制相似问题