swe*_*eet 2 python google-bigquery
我正在使用 google.bigquery.python api,以便每天自动将数据集从 GCS 存储桶加载到 Bigquery。我为这个数据集指定了一个模式,它一直有效,直到有一天我遇到了这个错误:
ERROR - {u'state': u'DONE', u'errors': [{u'reason': u'invalid', u'message': u'Invalid argument: xxxxxxxxxxx@gmail.com', u'location': u'File: 0 / Line:1283011 / Field:44'},
{u'reason': u'invalid', u'message': u'Invalid argument: xxxxxxxxxxx@gmail.com', u'location': u'File: 0 / Line:1338016 / Field:44'}, {u'reason': u'invalid', u'message': u'Too many errors encountered. Limit is: 0.'}], u'errorResult': {u'reason': u'invalid', u'message': u'Too many errors encountered. Limit is: 0.'}}
Run Code Online (Sandbox Code Playgroud)
我的问题是:如何告诉 bigquery 自动删除不符合架构的行?
如果您使用bq命令行客户端,则选项为--max-bad-records. 这告诉 BQ 在加载作业失败之前要忽略多少坏记录。默认值为零。我不记得设置这个正数是让坏行进入数据还是只忽略和抑制错误。您可能想要手动测试它。
来自:https : //cloud.google.com/bigquery/bq-command-line-tool
--max_bad_records 类型:整数 描述:在中止加载作业且不执行更新之前要跳过的最大坏行数。如果此值大于 0,只要坏记录数不超过此值,作业就会成功。如果您想加载可能有错误记录的文件,这很有用。此参数的默认值为 0(要求所有行都有效)。
有效值:任何整数
Usage: bq load --max_bad_records=3 <destination_table> <data_source_uri> [<table_schema>]
在 Python API 中,此字段称为maxBadRecords. 您可以搜索maxBadRecords在Github上蟒BigQuery API进行回购,你会看到它是在对负载作业的作业API配置。
| 归档时间: |
|
| 查看次数: |
4362 次 |
| 最近记录: |