猿问

Apache-Drill 不理解 Pandas datetime64[ns]

我正在使用PyarrowPyarrow.Parquet以及Pandas。当我将 Pandasdatetime64[ns]系列发送到 Parquet 文件并通过钻取查询再次加载时,查询显示一个整数,例如:1467331200000000,这似乎不是 UNIX 时间戳。

查询如下所示:

SELECT workspace.id-column AS id-column, workspace.date-column AS date-column

当我再次在 Python 中打开该文件时,它会正确加载并且仍然具有它的datetime64[ns]类型。

知道出了什么问题以及如何解决这个问题吗?我希望这个值显示为常规日期。


慕婉清6462132
浏览 109回答 2
2回答

哈士奇WWW

好的,我几天前找到了一个解决方案,我想分享一下。我想我最初错过了一些东西。在将数据帧发送到 Parquet 之前,向下转换到 [ms] 以及允许截断时间戳非常重要,以便能够在 Drill 中免费打开它:pq.write_table(table, rf'{name}.parquet',            coerce_timestamps='ms',            allow_truncated_timestamps=True)当我在 Drill 中定义一个视图时,我可以根据需要将该列转换为日期或时间戳。

30秒到达战场

你能分享一下镶木地板模式吗?它是否包含此列的 TIMESTAMP 逻辑类型?现在,您可以编写自定义 UDF,将 BigInt 纳秒值转换为时间戳,或使用内置函数(不确定 ns,但有很多函数接受毫秒):select to_timestamp(1467331200000/1000);+-----------------------+|        EXPR$0         |+-----------------------+| 2016-07-01 03:00:00.0 |+-----------------------+
随时随地看视频慕课网APP

相关分类

Python
我要回答