如何设置BigQuery AutoSchema扫描超过100行避免导入失败?
解决BigQuery AutoSchema扫描行数限制的问题
嘿,刚好碰到过类似的坑!别担心,BigQuery确实支持调整AutoSchema的扫描行数,而且你用REST API提交请求的时候直接配置就行。
具体怎么配置?
当你通过REST API调用jobs.insert创建加载作业时,只要在load配置里加上schemaDetectionOptions字段,其中的sampleSize参数就能指定要扫描的行数(最多能设到10000行)。
给你举个实际的JSON配置例子,把这个参数加进去就搞定了:
{ "configuration": { "load": { "sourceUris": ["gs://your-bucket/your-data-file.csv"], "destinationTable": { "projectId": "你的项目ID", "datasetId": "你的数据集ID", "tableId": "要创建的表ID" }, "autodetect": true, "schemaDetectionOptions": { "sampleSize": 600 // 这里设成比501大的数就行,比如600或者1000 } } } }
几个要注意的点
sampleSize的取值范围是1到10000,你可以根据自己的数据情况选,要是不知道设多少,直接拉满10000也没问题,反正如果文件总行数没这么多,BigQuery会自动扫描全部内容。- 这个参数只有在开启
autodetect: true的时候才会生效,所以别忘了保持这个配置是true哦。
额外的小技巧
要是你只有少数几个字段有这种“前几行类型不对”的问题,其实不用全手动定义所有列——可以只给有问题的字段指定类型,剩下的还是让AutoSchema自动检测。比如:
{ "configuration": { "load": { // ...其他配置不变... "autodetect": true, "schema": { "fields": [ { "name": "那个出问题的字段名", "type": "STRING" } ] } } } }
这样BigQuery会自动处理其他字段,同时强制把你指定的字段设成STRING类型,完美解决导入失败的问题,还省了大量手动定义列的时间。
内容的提问来源于stack exchange,提问作者N Voss
相关产品推荐
相关产品推荐

