如何在groupBy子句中计算计数,其中还包括null/empty字段



我使用的是带有java8的spark-sql-2.4.1v。我有一个用例场景,其中我需要按子句计算参与分组的总记录。即,假设我正在与group by一起进行avg。我还需要通过统计该组中的记录

如果我确实将(col(计算为total_count,则avg(col这不考虑col的字段是空的。如何在total_count中包含列的空字段?

groupBy忽略空列。若要包含这些列,您需要为这些空单元格赋值。这可以使用df.na.fill来完成。使用此选项,您可以为这些列指定一个默认值(如果希望将它们包含在平均值或总和中,则为0;如果是字符串类型的列,则为"some_sample_string",依此类推(。完成na填充后,可以应用groupBy操作来获得所需的结果。

请参阅以下代码:

val new_df = df.na.fill(0, Seq("column_list"))
.na.fill("sample_string", Seq("string_column_list"))

现在,您可以使用new_df进行计算。希望这能有所帮助。

最新更新