sql—按给定的时间滑动窗口查询pysparkDataframe,以收集每个给定时间窗口内的累积数据,并按其他列分组

pcww981p  于 2021-06-25  发布在  Hive
关注(0)|答案(0)|浏览(284)

这个问题与我以前的问题有关。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”的累积值。
我不知道如何设计时间滑动窗口。
谢谢

暂无答案!

目前还没有任何答案,快来回答吧!

相关问题