我有Spark了 DataFrame
我要得到的是给定日期范围内当前行前面的所有行。举个例子,我想得到给定行前7天的所有行。我想我需要一个 Window Function
比如:
Window \
.partitionBy('id') \
.orderBy('start')
问题来了。我想喝一杯 rangeBetween
7天,但在spark的文件里我找不到这个。spark是否提供了这样的选择?现在,我只想得到前面所有的行:
.rowsBetween(-sys.maxsize, 0)
但我想实现以下目标:
.rangeBetween("7 days", 0)
如果有人能在这件事上帮助我,我将非常感激。提前谢谢!
2条答案
按热度按时间x759pob21#
奇妙的解决方案@zero323,如果你想用几分钟而不是我必须的几天来操作,你不需要用id分区,所以你只需要修改代码的一部分,如我所示:
bpsygsoo2#
Spark>=2.3
由于spark2.3可以使用sqlapi使用interval对象,但是
DataFrame
api支持仍在进行中。Spark<2.3
据我所知,这是不可能直接在Spark或Hive。两者都需要
ORDER BY
从句与连用RANGE
是数字。我找到的最接近的东西是转换为时间戳和秒操作。假设start
列包含date
类型:小辅助对象和窗口定义:
最后查询:
一点也不漂亮,但很管用。