使用Spark中的动态窗口计算汇总汇总

时间:2020-10-25 03:37:28

标签: scala apache-spark

我有一个火花数据框,其中包含月份和年份。现在,我想使用此数据框对另一个数据框中存在的过去几个月的数据进行每月和每年的汇总汇总。例如,我有一个带有月,年的数据框

DataFrame 1

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

我想对上面的每个月在下表中进行汇总汇总 DataFrame 2

+--------+---------------+------------+--------+-----------------------+
|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_month应该来自查找数据框。使用此方法,我需要对数据框2中的每个产品执行过去几个月的累计计数。

0 个答案:

没有答案