是否可以使用架构自动检测加载 BigQuery 但修改自动检测的架构?
Posted
技术标签:
【中文标题】是否可以使用架构自动检测加载 BigQuery 但修改自动检测的架构?【英文标题】:Is it possible to load BigQuery with schema autodetect but modify the auto-detected schema? 【发布时间】:2021-12-17 02:57:08 【问题描述】:bq load --autodetect
很好,但有时根据后面的数据行推断会失败。我相信根据文档 autodetect 使用前 50 行。 https://cloud.google.com/bigquery/docs/schema-detect
有没有办法用特定类型覆盖一个或多个列,但对剩余的行使用自动检测?
例如我想跑步:
bq load --source_format=NEWLINE_DELIMITED_JSON --autodetect --schema SomeField:SomeOtherType <target table> <input ndjson>
并且只会自动检测输入源中未指定的字段。
或者,是否有 bq
显示自动检测到的架构而不尝试加载?
我的解决方法有点乏味
将不良记录--max_bad_records
加载并允许到临时表中。
获取架构。
根据需要手动修改。
加载到真正的目标表中。
【问题讨论】:
目前,bq 中没有满足您要求的功能。您可以使用此 BigQuery issue tracker template 提交功能请求。请注意,feature requests 没有 ETA 或实施保证,但您可以在您创建的问题跟踪器中看到所有更新。 【参考方案1】:实际上我刚刚找到了一个很好的工具:
https://github.com/bxparks/bigquery-schema-generator
假设您使用的是虚拟环境:
pip3 install bigquery_schema_generator
cat input-data.ndjson | ./env/bin/generate-schema --keep_nulls > ./output-schema
bq load --source_format=NEWLINE_DELIMITED_JSON <target table> ./input-data.ndjson ./output-schema
【讨论】:
以上是关于是否可以使用架构自动检测加载 BigQuery 但修改自动检测的架构?的主要内容,如果未能解决你的问题,请参考以下文章