【发布时间】:2020-08-29 22:47:38
【问题描述】:
我需要对每个商店中的每种产品计算相对于该日期的过去 30 天(不包括在内)的值的总和。 假设所有月份都有 30 天:
date|store|product|values
2020-06-30|Store1|Product1|1
2020-07-02|Store1|Product2|4
2020-07-01|Store2|Product1|3
2020-07-18|Store1|Product1|4
2020-07-18|Store1|Product2|2
2020-07-18|Store2|Product1|2
2020-07-30|Store1|Product1|1
2020-08-01|Store1|Product1|1
2020-08-01|Store1|Product2|1
2020-08-01|Store2|Product1|6
在 2020-08-01 的行中,将 (2020-08-20 - 30 days) 的值与 2020-08-19 相加,并将其放入 2020-08-20 行,如下所示: (第一行不包括 '2020-06-30' 因为是 30 多天前和 '2020-08-01' 因为是同一天,这样继续......)
date|store|product|sum_values_over_last_30_days_to_this_date
2020-08-01|Store1|Product1|5
2020-08-01|Store1|Product2|6
2020-08-01|Store2|Product1|5
....
在下面尝试过,也没有:
spark.sql("""
SELECT
a.date,
a.store,
a.product,
SUM(a.values) OVER (PARTITION BY a.product,a.store ORDER BY a.date BETWEEN a.date - INTERVAL '1' DAY AND a.date - INTERVAL '30' DAY) AS sum
FROM table a
""").show()
有人可以帮帮我吗?
【问题讨论】:
-
a.values 列在哪里?在你的桌子上?请正确给我们表格
标签: date apache-spark-sql sum date-range