我正在使用 Pyarrow , Pyarrow.Parquet 和 Pandas 。当我将Pandas function compare([a, ...aa], [b, ...bb]) {
if (!a && !b) return 0;
return a > b || -(a < b) || compare(aa, bb);
}
var array = [[88, "Bowling Ball"], [2, "Dirty Sock"], [3, "Hair Pin"], [3, "Haaf-Eaten Apple"], [5, "Microphone"], [7, "Toothpaste"]];
array.sort(([, a], [, b]) => compare(a, b));
console.log(array);
系列发送到Parquet文件并通过钻取查询加载该Parquet文件时,该查询显示一个Integer,例如:1467331200000000,我不理解,似乎与UNIX时间戳有所不同。
我的查询如下:
datetime64[ns]
当我再次使用Python打开该Parquet文件时,其正确且仍为SELECT workspace.id-column AS id-column,
workspace.date-column AS date-column
。
有什么想法,怎么解决呢?我希望此值beeing显示为常规日期。
答案 0 :(得分:0)
能否请您分享实木复合地板图式?该列是否包含TIMESTAMP逻辑类型?
现在,您可以编写自定义UDF来将BigInt纳秒值转换为时间戳,或者使用内置函数(不确定ns,但是有很多函数接受毫秒):
select to_timestamp(1467331200000/1000);
+-----------------------+
| EXPR$0 |
+-----------------------+
| 2016-07-01 03:00:00.0 |
+-----------------------+
答案 1 :(得分:0)
好吧,几天前我找到了一个我想分享的解决方案。我想我最初错过了一些东西。向下转换为[ms]非常重要,并允许在将数据帧发送到Parquet之前允许截断时间戳,以便能够在Drill中免费打开它:
pq.write_table(table, rf'{name}.parquet',
coerce_timestamps='ms',
allow_truncated_timestamps=True)
当我在Drill中定义视图时,可以根据需要将该列转换为日期或时间戳。