Apache-Drill 不理解 Pandas datetime64[ns]
Apache-Drill doesn't understand Pandas datetime64[ns]
我正在使用 Pyarrow、Pyarrow.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 中定义视图时,我可以根据需要将该列转换为日期或时间戳。
我正在使用 Pyarrow、Pyarrow.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 中定义视图时,我可以根据需要将该列转换为日期或时间戳。