我有一个Dask数据帧,它有两列,一个日期和一个值
我是这样存储的:
ddf.to_parquet('/some/folder', engine='pyarrow', overwrite=True)
我希望Dask将日期列存储为Parquet中的date,但是当我使用apachedrill查询它时,我得到的是16位数字(我会说是时间戳),而不是日期。例如,我得到:
15463080000000000而不是2019-01-01
1548979200000000而不是2019-02-01
有没有办法告诉Dask将列存储为日期?如何使用Apache Drill运行select并获取日期?我尝试在Drill中使用SELECT CAST
,但它无法将数字转换为日期
这里有一个关于
TO_TIMESTAMP()
函数的演练文档链接。(https://drill.apache.org/docs/data-type-conversion/#to_timestamp)我认为@mdurant的方法是正确的我想试试:
或
如果内存可用,Drill使用一个旧的非标准的INT96时间戳,这是拼花地板从未支持过的。Aparquet timestamp本质上是一个UNIX时间戳,与int64一样,具有不同的精度。Drill必须有一个函数来正确地将其转换为内部格式
我不是钻取方面的专家,但似乎需要先将整数除以10的适当幂(参见this answer)。此syntac可能是错误的,但可能会让您产生以下想法:
不确定是否与您相关,但您似乎只对日期值感兴趣(忽略小时、分钟等)。如果是这样,您可以使用
.dt.date
显式地将时间戳信息转换为日期字符串对于时间转换,可以使用
.astype
或dd.to_datetime
,请参见this question的答案。还有一个非常类似的question和answer,这表明确保时间戳向下转换为ms
可以解决这个问题因此,在使用您提供的值时,可能会发现核心问题是变量的缩放不匹配:
相关问题 更多 >
编程相关推荐