我有一个带数据的Spark SQL DataFrame
,我想要得到的是给定日期范围内当前行之前的所有行。例如,我希望所有的行都在给定行之前7天。我发现我需要使用一个Window Function
类似的:
Window \
.partitionBy('id') \
.orderBy('start')
问题来了。我想有一个rangeBetween
7天,但在Spark文档中我找不到任何关于这个的信息。Spark甚至提供了这样的选择吗?现在,我要把前面的所有行与:
.rowsBetween(-sys.maxsize, 0)
但希望实现如下目标:
.rangeBetween("7 days", 0)
如果有人能在这件事上帮我,我将非常感激。提前谢谢!
火花>;=2.3
由于Spark 2.3可以使用SQL API来使用interval对象,但是
DataFrame
API的支持是still work in progress。火花<;2.3
据我所知,无论是在星火还是蜂巢中,这都是不可能的。两者都要求与
RANGE
一起使用的ORDER BY
子句是数字的。我找到的最接近的东西是转换为时间戳并以秒为单位操作。假设start
列包含date
类型:小助手和窗口定义:
最终查询:
虽然不漂亮但很管用。
*Hive Language Manual, Types
相关问题 更多 >
编程相关推荐