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:无法解析为带有消息“无法解析”的日期的主要内容,如果未能解决你的问题,请参考以下文章