如何计算 groupBy 子句中的计数,其中还包括空/空字段
Posted
技术标签:
【中文标题】如何计算 groupBy 子句中的计数,其中还包括空/空字段【英文标题】:how to calculate count in groupBy clause where it includes null/empty fields also 【发布时间】:2020-03-30 09:27:09 【问题描述】:我正在使用 spark-sql-2.4.1v,带有 java8。 我有一个用例场景,我需要计算参与 group by 子句的总记录。 即假设我正在使用 group by 进行平均。 我还需要该组中的记录计数。
如果我 count(col) as total_count , avg(col) as mean group by col(year) 这不考虑 col 的字段是空的。 如何在 total_count 中包含列的空字段?
【问题讨论】:
【参考方案1】: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 进行计算。希望这会有所帮助。
【讨论】:
以上是关于如何计算 groupBy 子句中的计数,其中还包括空/空字段的主要内容,如果未能解决你的问题,请参考以下文章