test_df = spark.createDataFrame([
(1, '2019-01-01'),
(1, '2019-01-02'),
(1, '2019-01-03'),
(1, '2019-01-10'),
(1, '2019-01-16'),
(1, '2019-01-29')
], ['id','dtstart']
)
result_df = spark.createDataFrame([
(1, '2019-01-01', '2019-01-08', 3),
(1, '2019-01-10', '2019-01-17', 2),
(1, '2019-01-29', '2019-02-05', 1)
], ['id','dtstart', 'wdend', 'count']
])
鉴于输入test_df
和窗口范围7
天,我想计算给定窗口中发生的行数。
需要注意的是,如果日期在现有窗口之外,则新窗口的结束日期必须基于行的开始日期。最终要求是窗口不得重叠。
我目前采用的方法包括使用date_diff来计算间隔数,但这由于窗口重叠而失败。
此外,我尝试使用先于当前的有界前缀,但这失败了,因为它不会自动调整为最新的可用开始日期。在给定多个开始日期的情况下,获得所有适当日期的迭代次数将未知。
对此卡住了,将不胜感激。