gpt4 book ai didi

python - BigQuery 是否应该使用 table.insert_data() 且skip_invalid_rows=True 抛出错误?

转载 作者:行者123 更新时间:2023-11-30 22:29:51 25 4
gpt4 key购买 nike

我使用 BigQuery API for Python 通过 table.insert_data()在表中插入数据

有时,一行将包含 None ,该字段设置为 REPEATED 模式表架构。发生这种情况时,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'}]}]

我希望忽略这些行。这是我正在使用的函数的原型(prototype),也可以找到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.insert_data([('1', ['1', None, '2']), ('2', ['1', '2'])])

在这种情况下,值('2', ['1', '2'])应该正常保存。

我同意这个方法的docstrings注释并没有那么有用。我本人正准备提出一个拉取请求,为 Table 资源添加一些新功能,但预计在不久的将来会对这个模块进行一些重大重构,所以现在您可能会在那里找到这些类型的东西(并且其他一些也可能令人困惑的事情,例如 table 中定义的 job 资源)。

关于python - BigQuery 是否应该使用 table.insert_data() 且skip_invalid_rows=True 抛出错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46222247/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com