DateTime在BigQuery中被强制为UnixtTime
我在上传到BQ时遇到了一些问题,所以我想在这里发帖征求意见是个好主意。我有一个医疗信息的数据集(是的,我已经批准把它放在BQ上)。数据集包含测试的总体结果和其他字符串类型信息,BQ接受这些信息没有问题。这是我们目前在BQ中所期望的模式DateTime在BigQuery中被强制为UnixtTime,datetime,google-cloud-platform,google-bigquery,Datetime,Google Cloud Platform,Google Bigquery,我在上传到BQ时遇到了一些问题,所以我想在这里发帖征求意见是个好主意。我有一个医疗信息的数据集(是的,我已经批准把它放在BQ上)。数据集包含测试的总体结果和其他字符串类型信息,BQ接受这些信息没有问题。这是我们目前在BQ中所期望的模式 a STRING NULLABLE b STRING NULLABLE c STRING
a STRING NULLABLE
b STRING NULLABLE
c STRING NULLABLE
d STRING NULLABLE
reportDate DATETIME NULLABLE
f STRING NULLABLE
这里是我导出的Pandas数据帧中每列的DYPE,其中对象
只是字符串
a object
b object
c object
d object
reportDate datetime64[ns]
f object
然而,它真的不喜欢我的数据时间。它将只接受它,我将模式中的类型设置为“整数”,或者如果它让BQ推断类型,在这种情况下,它会将其自身转换为整数。否则,它将失败。下面是我告诉它接受datetime作为字段类型时遇到的3个错误
Error while reading data, error message: JSON table encountered too many errors, giving up. Rows: 1; errors: 1. Please look into the errors[] collection for more details.
Error while reading data, error message: JSON processing encountered too many errors, giving up. Rows: 1; errors: 1; max bad: 0; error percent: 0
Error while reading data, error message: JSON parsing error in row starting at position 0: Could not convert non-string JSON value to DATETIME type. Field: reportDate; Value: 1501874143000
我的团队希望它成为一个日期时间,因为他们更容易使用这种格式。有人对该怎么做有什么建议吗
我已经包括了我使用的Pandas系列的前5个元素,我们可以看到数据类型是datetime64。我甚至只筛选了这5个要上传到BQ的例子,但这个问题仍然存在
0 2017-08-04 19:15:43
1 2017-08-04 16:36:46
2 2017-08-04 19:15:47
3 2017-08-04 16:36:51
4 2017-08-04 17:42:21
Name: reportDate, dtype: datetime64[ns]
感谢所有能提供帮助的人 您的代码似乎正在将此字段保存为纪元日期(unix时间)。 由于在
BigQuery
中无法将整数
字段作为时间戳
加载,因此我可以建议您两件可能的事情:
整数
,并使用BigQuery的USEC_TO_TIMESTAMP
函数将历元日期转换为时间戳。你可以找到其他一些时间函数Pandas
希望它能帮助你你如何上传到BQ?哪种格式?我使用的是用户界面,文件格式是换行删除JSOND加载文件时是否使用特定的模式?如果你使用,你能提供它吗?试着把DATETIME改成Timestamp我刚刚编辑了这篇文章,以指示我的数据的模式和动态。我还尝试了TIMESTAMP并得到了错误:相对于Unix历元,无法返回1501874143000000000微秒的无效时间戳值。有效时间戳值的范围为[0001-01-1 00:00:00,9999-12-31 23:59:59.99999];写入字段ReportDate时出错感谢您的输入。实际上我现在可以上传了。我从你的帖子中得到了一些建议:“似乎你的代码正在将这个字段保存为一个划时代的日期”。我不确定python/BQ到底是如何解释datetime保存在其中的datetime64[ns]的,所以我在python中将datetime64[ns]转换为date,然后转换为string,然后创建了预期日期的模式。这使我能够按照团队的期望创建场地。谢谢你让我在这里跳板!