在spark中使用动态窗口计算汇总聚合

xuo3flqw  于 2021-05-19  发布在  Spark
关注(0)|答案(0)|浏览(275)

我有一个包含月份和年份的sparkDataframe。现在,我想使用这个Dataframe对另一个Dataframe中存在的过去几个月的数据执行每月和每年的汇总。例如,我有一个月,年的Dataframe
Dataframe1

+---+------------+--------+
| id|lookup_month| year   |
+---+------------+--------+
|  5|         May| 2020   |
|  6|         Jun| 2020   |
| 10|         Oct| 2020   |
+---+------------+--------+

我想在下表中为上述Dataframe2中的每个月执行汇总聚合

+--------+---------------+------------+--------+-----------------------+
|store_no|inventory_month|inventory_yr|products|inventory_month_encoded|
+--------+---------------+------------+--------|-----------------------+
|    1011|            Jan|        2019|ZYCCX   |                      1|
|    1011|            Jan|        2019|ZYCCY   |                      1|
|    1011|            Jan|        2019|ZYCCZ   |                      1|
|    1011|            Feb|        2019|ZYCCU   |                      2|
|    1011|            Feb|        2019|ZYCCY   |                      2|
|    1011|            Feb|        2019|ZYCCZ   |                      2|
|    1012|            Mar|        2019|ZYCCU   |                      3|
|    1012|            Mar|        2019|ZYCCV   |                      3|
|    1012|            Mar|        2019|ZYCCY   |                      3|
|    1012|            Apr|        2019|ZYCCU   |                      4|
|    1012|            Apr|        2019|ZYCCV   |                      4|
|    1012|            Apr|        2019|ZYCCY   |                      4|
|    1011|           July|        2019|ZYCCT   |                      7|
|    1011|           July|        2019|ZYCCS   |                      7|
|    1011|           July|        2019|ZYCCN   |                      7|
|    1011|            Aug|        2019|ZYCCA   |                      8|
|    1011|            Aug|        2019|ZYCCB   |                      8|
|    1011|            Aug|        2019|BYCCN   |                      8|
|    1015|           Sept|        2019|ZYCCT   |                      9|
|    1015|           Sept|        2019|ZYCCS   |                      9|
+--------+---------------+------------+--------+-----------------------+

我试图创建一个窗口,但我不确定是否有任何方法可以在窗口中使用动态列

Window.partitionBy($"lookup_month", $"year")
  .orderBy($"date_time")
  .rowsBetween(Window.unboundedPreceding, Window.currentRow)

$year和$lookup\u month应该来自lookup数据框。使用这个,我需要为dataframe2中的每个产品执行过去几个月的汇总计数。

暂无答案!

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

相关问题