Apache-Drill 不理解 Pandas datetime64[ns]

Apache-Drill doesn't understand Pandas datetime64[ns]

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

查询如下所示:

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

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

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

能否分享镶木地板架构?它是否包含此列的 TIMESTAMP 逻辑类型?

现在,您可以编写自定义 UDF,将 BigInt 纳秒值转换为时间戳,或使用内置函数(不确定 ns,但有很多函数接受 millis):

select to_timestamp(1467331200000/1000);
+-----------------------+
|        EXPR[=10=]         |
+-----------------------+
| 2016-07-01 03:00:00.0 |
+-----------------------+

好的,几天前我找到了一个解决方案,我想分享一下。我想我最初错过了一些东西。在将数据帧发送到 Parquet 之前向下转换为 [ms] 以及允许截断时间戳非常重要,以便能够在 Drill 中免费打开它:

pq.write_table(table, rf'{name}.parquet',
           coerce_timestamps='ms',
           allow_truncated_timestamps=True)

当我在 Drill 中定义视图时,我可以根据需要将该列转换为日期或时间戳。