我正在使用Pyarrow、Pyarrow.Parquet以及Pandas。当我将 Pandasdatetime64[ns]系列发送到 Parquet 文件并通过钻取查询再次加载时,查询显示一个整数,例如:1467331200000000,这似乎不是 UNIX 时间戳。查询如下所示:SELECT workspace.id-column AS id-column, workspace.date-column AS date-column当我再次在 Python 中打开该文件时,它会正确加载并且仍然具有它的datetime64[ns]类型。知道出了什么问题以及如何解决这个问题吗?我希望这个值显示为常规日期。
2 回答
哈士奇WWW
TA贡献1799条经验 获得超6个赞
好的,我几天前找到了一个解决方案,我想分享一下。我想我最初错过了一些东西。在将数据帧发送到 Parquet 之前,向下转换到 [ms] 以及允许截断时间戳非常重要,以便能够在 Drill 中免费打开它:
pq.write_table(table, rf'{name}.parquet', coerce_timestamps='ms', allow_truncated_timestamps=True)
当我在 Drill 中定义一个视图时,我可以根据需要将该列转换为日期或时间戳。
30秒到达战场
TA贡献1828条经验 获得超6个赞
你能分享一下镶木地板模式吗?它是否包含此列的 TIMESTAMP 逻辑类型?
现在,您可以编写自定义 UDF,将 BigInt 纳秒值转换为时间戳,或使用内置函数(不确定 ns,但有很多函数接受毫秒):
select to_timestamp(1467331200000/1000);
+-----------------------+
| EXPR$0 |
+-----------------------+
| 2016-07-01 03:00:00.0 |
+-----------------------+
添加回答
举报
0/150
提交
取消