正如 Google 声称不支持从 Avro 转换logicalType为 BigQuery 特定类型(如底部所述)。
但是,我可以使用以下架构加载 Avro 文件:
schema = {
'name': 'test',
'namespace': 'testing',
'type': 'record',
'fields': [
{'name': 'test_timestamp', 'type': 'long', 'logicalType': 'timestamp-millis'},
],
}
Run Code Online (Sandbox Code Playgroud)
到 BigQuery 类型为TIMESTAMP 的列。
以下模式的情况有所不同:
schema = {
'name': 'test',
'namespace': 'testing',
'type': 'record',
'fields': [
{'name': 'testdate', 'type': 'int', 'logicalType': 'date'},
],
}
Run Code Online (Sandbox Code Playgroud)
和具有DATE类型列的 BigQuery 表。我以下列方式使用 bq load(在两种情况下):
bq --location=EU load --source_format=AVRO --project_id=test-project dataset.table "gs://bucket/test_file.avro"
Run Code Online (Sandbox Code Playgroud)
它失败了,但有异常:
Field testdate has changed type from …Run Code Online (Sandbox Code Playgroud) avro google-cloud-storage google-bigquery google-cloud-platform