Google BigQuery 对 AvrologicalTypes 的支持
Posted
技术标签:
【中文标题】Google BigQuery 对 AvrologicalTypes 的支持【英文标题】:Google BigQuery support for Avro logicalTypes 【发布时间】: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)
【问题讨论】:
【参考方案1】:现在所有 BigQuery 用户都可以公开了解 Avro 逻辑类型。请参阅此处的文档页面以获取更多详细信息:https://cloud.google.com/bigquery/docs/loading-data-cloud-storage-avro#logical_types
【讨论】:
只想更新 API 更改已推出,并且客户现在可以使用 useAvroLogicalTypes 加载作业配置标志来选择性地为每个加载作业启用它,而无需列入白名单。我正在更新文档,但您可以在 API 发现页面 (googleapis.com/discovery/v1/apis/bigquery/v2/rest) 中找到它。如果客户认为在默认情况下启用此功能后会受到负面影响,客户还可以将其所有 Avro 加载作业设置为 false。以上是关于Google BigQuery 对 AvrologicalTypes 的支持的主要内容,如果未能解决你的问题,请参考以下文章
google bigquery 对 firebase 函数的查询
对 Google Bigquery 中的嵌套字段使用 OFFSET 而不是 UNNEST
通过 R Studio Server 使用 BigQuery 在 Google Compute Engine 上对服务帐户进行身份验证