小编Ale*_*kiy的帖子

PySpark窗口函数:orderBetween/rowsBetween之间的orderBy中的多个条件

是否有可能创建一个可以在多个条件了窗口函数排序依据rangeBetweenrowsBetween.假设我有一个如下所示的数据框.

user_id     timestamp               date        event
0040b5f0    2018-01-22 13:04:32     2018-01-22  1       
0040b5f0    2018-01-22 13:04:35     2018-01-22  0   
0040b5f0    2018-01-25 18:55:08     2018-01-25  1       
0040b5f0    2018-01-25 18:56:17     2018-01-25  1       
0040b5f0    2018-01-25 20:51:43     2018-01-25  1       
0040b5f0    2018-01-31 07:48:43     2018-01-31  1       
0040b5f0    2018-01-31 07:48:48     2018-01-31  0       
0040b5f0    2018-02-02 09:40:58     2018-02-02  1       
0040b5f0    2018-02-02 09:41:01     2018-02-02  0       
0040b5f0    2018-02-05 14:03:27     2018-02-05  1       
Run Code Online (Sandbox Code Playgroud)

每行,我需要事件列值的总和,其日期不超过3天.但我不能在同一天晚些时候发生事件.我可以创建一个窗口函数,如:

days = lambda i: i * 86400
my_window = Window\
                .partitionBy(["user_id"])\
                .orderBy(F.col("date").cast("timestamp").cast("long"))\
                .rangeBetween(-days(3), 0)
Run Code Online (Sandbox Code Playgroud)

但这将包括同一天晚些时候发生的事件.我需要创建一个窗口函数,其行为类似于(对于带*的行):

user_id …
Run Code Online (Sandbox Code Playgroud)

python window-functions apache-spark pyspark

7
推荐指数
1
解决办法
1159
查看次数

标签 统计

apache-spark ×1

pyspark ×1

python ×1

window-functions ×1