Apache spark 有没有办法将当月累计总和添加到我的数据集中

Apache spark 有没有办法将当月累计总和添加到我的数据集中,apache-spark,pyspark,apache-spark-sql,pyspark-dataframes,Apache Spark,Pyspark,Apache Spark Sql,Pyspark Dataframes,目前,我有一个数据集,显示每月列的累计总和,如上面的数据集,但是我希望自动添加当前月份行,即使我还没有其他新数据。我所需的输出与此类似 df.select( *df.columns[:2], *[F.sum(F.col(i)).over(Window.orderBy('Month')).alias(i) for i in df.columns[2:8]] ) +-------+-----------+--------+--------+--------+--------+---

目前,我有一个数据集,显示每月列的累计总和,如上面的数据集,但是我希望自动添加当前月份行,即使我还没有其他新数据。我所需的输出与此类似


df.select(
    *df.columns[:2],
    *[F.sum(F.col(i)).over(Window.orderBy('Month')).alias(i) for i in df.columns[2:8]]
)
+-------+-----------+--------+--------+--------+--------+---+--------+--------+
|Month  |month_index|QA_count|BS_count|BV_count|QT_count|B  |QB_count|BT_count|
+-------+-----------+--------+--------+--------+--------+---+--------+--------+
|2020-09|0          |3       |0       |1       |1       |2  |3       |7       |
|2020-10|1          |4       |1       |2       |2       |7  |12      |8       |
|2020-11|2          |5       |2       |3       |3       |12 |21      |9       |
|2020-12|3          |6       |3       |4       |4       |17 |30      |10      |    |
+-------+-----------+--------+--------+--------+--------+---+--------+--------+


ps:但是,当2021-01月份出现新计数时,它应自动将该新计数添加到累计总数中。

import pyspark.sql.functions as F
df2=df.select(
*df.列[:2],
*[F.sum(F.col(i)).over(Window.orderBy('Month'))。df.列[2:8]中i的别名(i)]
)
#检查是否有任何新数据。如果没有,请添加与最后一行相同的行。
如果df2.选择('Month').orderBy(F.desc('Month')).head(1)[0]!=df2.选择(F.date\u格式(F.current\u date(),'yyyy-MM')).head(1)[0]:
df3=df2.0(
df2.订购人(F.desc(‘月份’)。限额(1)
.withColumn('Month',F.date_格式(F.current_date(),'yyyy-MM'))
.withColumn('month_index'),F.col('month_index')+1)
)
其他:
df3=df2
df3.show()
+-------+-----------+--------+--------+--------+--------+---+--------+--------+
|月|月|指数| QA | u计数| BS | BV | QT | u计数| B | QB | u计数| BT ||
+-------+-----------+--------+--------+--------+--------+---+--------+--------+
|2020-09|          0|       3|       0|       1|       1|  2|       3|       7|
|2020-10|          1|       4|       1|       2|       2|  7|      12|       8|
|2020-11|          2|       5|       2|       3|       3| 12|      21|       9|
|2020-12|          3|       6|       3|       4|       4| 17|      30|      10|
|2021-01|          4|       6|       3|       4|       4| 17|      30|      10|
+-------+-----------+--------+--------+--------+--------+---+--------+--------+

感谢您的解决方案,当该月(2021-01)有新计数时,是否会考虑刚刚添加的月份?我这样问是因为月份字段会自动填充,并且当2021-01年有新条目时,它会将其添加到数据集。当前行没有新条目,这就是为什么2021-01年没有数据集的原因。但是,当数据集自动更新,然后出现2021-01新值时,会发生什么情况。我会有两个吗(2021-01)行?@Mandibajr将不存在。if条件检查是否存在该问题。
+-------+-----------+--------+--------+--------+--------+---+--------+--------+
|Month  |month_index|QA_count|BS_count|BV_count|QT_count|B  |QB_count|BT_count|
+-------+-----------+--------+--------+--------+--------+---+--------+--------+
|2020-09|0          |3       |0       |1       |1       |2  |3       |7       |
|2020-10|1          |4       |1       |2       |2       |7  |12      |8       |
|2020-11|2          |5       |2       |3       |3       |12 |21      |9       |
|2020-12|3          |6       |3       |4       |4       |17 |30      |10      |
|2021-01|4          |6       |3       |4       |4       |17 |30      |10      |
+-------+-----------+--------+--------+--------+--------+---+--------+--------+