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 |
+-------+-----------+--------+--------+--------+--------+---+--------+--------+