这个问题与我以前的问题有关。pyspark dataframe通过滑动时间窗口聚合一列,但是,我想创建一个post来澄清我上一个问题中缺少的一些关键点。
the original dataframe:
client_id value1 name1 a_date
dhd 561 ecdu 2019-10-8
dhd 561 tygp 2019-10-8
dhd 561 rdsr 2019-10-8
dhd 561 rgvd 2019-8-12
dhd 561 bhnd 2019-8-12
dhd 561 prti 2019-8-12
dhd 561 teuq 2019-5-7
dhd 561 wnva 2019-5-7
dhd 561 pqhn 2019-5-7
我需要为每个“client\u id”、每个“value1”和某个给定的滑动时间窗口找到“name1”的聚合值。
给定的时间窗口称为:
last_0_month last_1_month last_2_month last_5_month last_8_month last_12_month
这里,“last\u x\u month”表示时间窗口从“a\u date”中的月份开始,对“x”个月进行回溯,并为时间窗口累积“name1”的值。如果有一个空白月,其中没有该月的数据,只需跳过它。
对于上述示例,我需要:
client_id value1 start_date last_0_month last_1_month last_2_month
dhd 561 2019-10-8 [ecdu,tygp,rdsr] [ecdu,tygp,rdsr] [ecdu,tygp,rdsr, rgvd,bhnd,prti]
last_5_month
[ecdu,tygp,rdsr, rgvd,bhnd,prti, teuq, wnva,pqhn ]
last_8_month
[ecdu,tygp,rdsr, rgvd,bhnd,prti, teuq, wnva,pqhn]
last_12_month
[ecdu,tygp,rdsr, rgvd,bhnd,prti, teuq, wnva,pqhn ]
从预期结果可以看出,对于“dhd”客户机,在给定的Dataframe中,2019-10和2018-10之间存在间隔月。e、 g.2019-9在Dataframe中不可用。
因此,“最后0个月”(2019-10)和“最后1个月”(2019-10和2019-9)对于“name1”等其他间隔月份的累积数据相同。
大约有1000万个不同的“client_id”值和10个不同的“value1”值以及大约1000个“name1”值。
而且,对于同一个“client\u id”和“value1”,每年和每月只有一个“name1”值。
我需要为每个可用的“a\u日期”获取“name1”的累积值。
我不知道如何设计时间滑动窗口。
谢谢
暂无答案!
目前还没有任何答案,快来回答吧!