我正在使用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自动删除不符合模式的行?
发布于 2016-02-18 08:24:39
如果您使用的是bq
命令行客户端,则选项是--max-bad-records
。这说明了在加载任务失败之前要忽略多少坏记录。缺省值为零。我不记得设置这个正数是让坏行进入数据,还是只忽略和抑制错误。您可能需要手动测试它。
来自:https://cloud.google.com/bigquery/bq-command-line-tool
-max_ bad _records类型:整数描述:在load作业中止之前跳过的坏行的最大数目,并且不执行任何更新。如果此值大于0,则只要错误记录的数量不超过此值,作业就会成功。如果您希望加载可能有不良记录的文件,这将非常有用。此参数的默认值为0(所有行都必须有效)。 有效值:任意整数
Usage: bq load --max_bad_records=3 <destination_table> <data_source_uri> [<table_schema>]
在python中,这个字段称为maxBadRecords
。您可以在maxBadRecords
中搜索Github上的python BigQuery API回购,您将看到它在负载作业的作业API配置中。
发布于 2016-02-19 21:49:52
对不起,我不能对保罗的回答发表评论,因为我的名声还不到50。
Re:是否设置这个正数会让坏行进入数据,还是只忽略和消除错误。
坏行将被忽略,并且不会进入加载的数据。
https://stackoverflow.com/questions/35476072
复制相似问题