用总计汇总计数列

Totalize count column with grand total

我想添加一行,其中包含之前分组行的总计。 我有代码:

df_join = ( 
       df.join(df1, df.serialnumber == df1.entityid)
          .distinct()
         .groupBy("SW_version").count().show(truncate=False)

我需要添加总计行,对计数列中的所有值求和。

现在代码的结果是:

 +-----------+-----+
 |SW_version |count|
 +-----------+-----+
 |SG4J000078C|63   |
 |SG4J000092C|670  |
 |SG4J000094C|43227|
 +-----------+-----+

在这种情况下,您可以使用 rollup 而不是 groupBy。 Rollup 将生成一个额外的行,其中包含 null 组和所有行的聚合。

对于 df 这样的:

+-------+
|version|
+-------+
|      A|
|      A|
|      B|
|      B|
|      B|
|      C|
+-------+

df.rollup("version").count().sort("version", ascending=False).show() 将 return:

+-------+-----+
|version|count|
+-------+-----+
|      C|    1|
|      B|    3|
|      A|    2|
|   null|    6| <-- this is the grand total
+-------+-----+

您可以在此 post

中阅读有关汇总的更多信息