googleapis / python-bigquery:BadRequest:无法解析为带有消息“无法解析”的日期

Posted

技术标签:

【中文标题】googleapis / python-bigquery:BadRequest:无法解析为带有消息“无法解析”的日期【英文标题】:googleapis / python-bigquery: BadRequest: Could not parse as DATE with message 'Unable to parse' 【发布时间】:2021-10-04 01:44:20 【问题描述】:

给定以下代码:

with io.StringIO() as buf:
    buf.write(df_data.to_csv(header=True, index=False, quoting=csv.QUOTE_NONNUMERIC))
    buf.seek(0)
    try:
        job = self.client.load_table_from_file(buf, dest_table)
        job.result()
    except:
        buf.seek(0)
        LOG.error("Failed to upload dataframe as csv: \n\n%s\n", buf.read())
        raise

我正在尝试通过首先转换为 CSV 将 pandas DataFrame 加载到 bigquery 表中。我面临的问题是 BigQuery API 失败了

google.api_core.exceptions.BadRequest: 400 Error while reading data, error message: could not parse 'date_key' as DATE for field date_key(位置 3)从位置 0 开始并显示消息“无法解析”

我查看了this other issue,在加载 CSV 文件时似乎对 DATE 接受的格式有限制。

话虽如此,上述除块之外的打印结果如下:

ERROR    utils.database._bigquery:_bigquery.py:255 Failed to upload dataframe as csv:

"clinic_key","schedule_template_time_interval_key","schedule_template_key","date_key","schedule_owner_key","schedule_template_schedule_track_key","schedule_content_label_key","start_time_key","end_time_key","priority"
"clitest11111111111111111111111","1","1","2021-01-01","1","1","1","19:00:00","21:00:00",1
"clitest11111111111111111111111","1","1","2021-01-01","1","1","2","20:00:00","20:30:00",2
"clitest11111111111111111111111","1","1","2021-01-01","1","1","3","20:20:00","20:30:00",3

在我看来,这似乎是一个格式清晰的 CSV 文件。

所以我的问题是:如何让 BigQuery 接受我的 CSV?我需要改变什么?

注意:我知道 bigquery.client.Client 对象上有一个 load_dataframe_to_table 方法,但我遇到了另一个问题,迫使我尝试使用 CSV 方法。见link to other issue here。

【问题讨论】:

是否需要删除标题行? location 0 表明它不喜欢第一行。您的其他日期值看起来正确(YYYY-MM-DD)。由于 CSV 的列顺序很重要,BigQuery 可以假定映射到其表。 哇!!!非常感谢@DazWilkin!这确实解决了我的问题:D 随时发布完整的答案,我会支持/接受它! 【参考方案1】:

您需要删除标题行。

位置 0 表明它不喜欢第一行。

您的其他日期值看起来正确 (YYYY-MM-DD)。

由于 CSV 的列顺序很重要,BigQuery 可以假定映射到其表。

【讨论】:

以上是关于googleapis / python-bigquery:BadRequest:无法解析为带有消息“无法解析”的日期的主要内容,如果未能解决你的问题,请参考以下文章

在 ios 应用中使用 googleapis

Webpack 和 GoogleApis 端点路径问题

jquery googleapis

Terraform 错误创建主题:googleapi:错误 403:用户无权执行此操作

从googleapi加载jQuery

使用Redirector插件解决googleapis公共库加载的问题