处理BigQuery中的错误行

4

我正在使用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.'}}

我的问题是:我该如何告诉BigQuery自动删除不符合模式的行?
2个回答

6
如果你使用bq命令行客户端,选项是--max-bad-records。这告诉BQ在失败加载作业之前要忽略多少个错误记录。默认值为零。我不记得将其设置为正数是否会将错误行放入数据中或仅忽略和抑制该错误。您可能需要手动测试一下。
来自:https://cloud.google.com/bigquery/bq-command-line-tool

--max_bad_records 类型:整数 描述:在装入作业中中止并且不执行任何更新之前要跳过的最大错误行数。如果此值大于0,则只要坏记录数量不超过此值,作业就会成功。如果您想要加载可能存在错误记录的文件,则此选项很有用。此参数的默认值为0(所有行都必须有效)。

有效值:任何整数

用法:bqload --max_bad_records=3 <destination_table> <data_source_uri> [<table_schema>]

在Python API中,此字段称为maxBadRecords。您可以在Github上的Python BigQuery API repo中搜索maxBadRecords,您将看到它在加载作业的作业API配置中。

6

抱歉,由于我的声望不到50,无法对Paul的回答做出评论。

关于“将此设置为正数是否会使错误行进入数据,还是只会忽略和抑制错误”的问题:

错误行将被忽略,并且不会进入已加载的数据中。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接