为了账号安全,请及时绑定邮箱和手机立即绑定

Apache-Drill 不理解 Pandas datetime64[ns]

Apache-Drill 不理解 Pandas datetime64[ns]

慕婉清6462132 2022-04-23 17:17:07
我正在使用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 中定义一个视图时,我可以根据需要将该列转换为日期或时间戳。


查看完整回答
反对 回复 2022-04-23
?
30秒到达战场

TA贡献1828条经验 获得超6个赞

你能分享一下镶木地板模式吗?它是否包含此列的 TIMESTAMP 逻辑类型?


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


select to_timestamp(1467331200000/1000);

+-----------------------+

|        EXPR$0         |

+-----------------------+

| 2016-07-01 03:00:00.0 |

+-----------------------+


查看完整回答
反对 回复 2022-04-23
  • 2 回答
  • 0 关注
  • 108 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信