BigQuery 是否应该使用 table.insert_data() 和 skip_invalid_rows=True 抛出错误?
Should BigQuery throw an error using table.insert_data() with skip_invalid_rows=True?
我正在使用 BigQuery API for Python insert data in a table 与 table.insert_data()
.
有时,对于设置为 REPEATED
模式的字段,行将包含 None
value在 table 架构中。发生这种情况时,API 将返回以下错误:
[{'index': 48,
'errors': [
{u'debugInfo': u'generic::invalid_argument: Field value cannot be empty.',
u'reason': u'invalid',
u'message': u'Field value cannot be empty.',
u'location': u'name_of_my_field'}]}]
我希望忽略这些行。这是我正在使用的函数的原型,也可以找到 here:
insert_data(rows, row_ids=None, skip_invalid_rows=None, ignore_unknown_values=None, template_suffix=None, client=None)
而这是我感兴趣的参数因为它似乎完全符合我的需求:
skip_invalid_rows (bool) – (Optional) skip rows w/ invalid data?
在the main API中反映了这个参数:
skipInvalidRows boolean [Optional] Insert all valid rows of a request, even if invalid rows exist. The default value is false, which causes the entire request to fail if any invalid rows exist.
但是通过使用skip_invalid_rows=True
的函数,会抛出相同的错误。
这个参数是不是我想的意思?
值得一提的是:
- 为什么文档中对
skip_invalid_rows
的描述末尾有个问号?
ignore_unknown_values=True
可以正常工作。
非常感谢任何帮助。 :)
这可能令人困惑,但仍应抛出该错误,以告知最终用户某些内容未按预期处理。
这并不意味着没有保存正确的行,而是应该保存正确的行!如果您检查 table,您应该会看到这些行在那里正常写入。
您可以 运行 一个简单的测试,例如:
table.insert_data([('1', ['1', None, '2']), ('2', ['1', '2'])])
这种情况下,值('2', ['1', '2'])
应该可以正常保存。
我同意 docstrings
对这种方法没有帮助的评论。我本人正要提出拉取请求,为 Table
资源添加一些新功能,但预计在不久的将来会对这个模块进行一些重大重构,所以现在你可能会在那里找到这些类型的东西(以及其他一些东西这也可能令人困惑,例如 table
中定义的 job
资源)。
我正在使用 BigQuery API for Python insert data in a table 与 table.insert_data()
.
有时,对于设置为 REPEATED
模式的字段,行将包含 None
value在 table 架构中。发生这种情况时,API 将返回以下错误:
[{'index': 48,
'errors': [
{u'debugInfo': u'generic::invalid_argument: Field value cannot be empty.',
u'reason': u'invalid',
u'message': u'Field value cannot be empty.',
u'location': u'name_of_my_field'}]}]
我希望忽略这些行。这是我正在使用的函数的原型,也可以找到 here:
insert_data(rows, row_ids=None, skip_invalid_rows=None, ignore_unknown_values=None, template_suffix=None, client=None)
而这是我感兴趣的参数因为它似乎完全符合我的需求:
skip_invalid_rows (bool) – (Optional) skip rows w/ invalid data?
在the main API中反映了这个参数:
skipInvalidRows boolean [Optional] Insert all valid rows of a request, even if invalid rows exist. The default value is false, which causes the entire request to fail if any invalid rows exist.
但是通过使用skip_invalid_rows=True
的函数,会抛出相同的错误。
这个参数是不是我想的意思?
值得一提的是:
- 为什么文档中对
skip_invalid_rows
的描述末尾有个问号? ignore_unknown_values=True
可以正常工作。
非常感谢任何帮助。 :)
这可能令人困惑,但仍应抛出该错误,以告知最终用户某些内容未按预期处理。
这并不意味着没有保存正确的行,而是应该保存正确的行!如果您检查 table,您应该会看到这些行在那里正常写入。
您可以 运行 一个简单的测试,例如:
table.insert_data([('1', ['1', None, '2']), ('2', ['1', '2'])])
这种情况下,值('2', ['1', '2'])
应该可以正常保存。
我同意 docstrings
对这种方法没有帮助的评论。我本人正要提出拉取请求,为 Table
资源添加一些新功能,但预计在不久的将来会对这个模块进行一些重大重构,所以现在你可能会在那里找到这些类型的东西(以及其他一些东西这也可能令人困惑,例如 table
中定义的 job
资源)。