You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Spark SQL执行GROUP BY操作时保留非空值并填充同组空列的实现方案

解决思路

你想要的其实是同组内字段的非空值合并填充,Spark SQL里可以利用聚合函数自动忽略NULL值的特性来实现,不用复杂的窗口操作,用简单的GROUP BY配合聚合函数就搞定了。

实现语句

假设你的数据表名为product_data,执行以下Spark SQL语句即可:

SELECT
  name,
  MAX(value_1) AS value_1,
  MAX(value_2) AS value_2
FROM product_data
GROUP BY name
ORDER BY name;

原理说明

  • MAX()函数会自动忽略分组内的NULL值,只返回该字段下的非空值(如果分组内该字段有多个非空值,会返回最大的那个;如果你的场景里同组同字段只有一个非空值,完全符合需求)。
  • 如果你更倾向于取分组内第一个出现的非空值,也可以用FIRST_VALUE配合窗口函数,但MAX()的写法更简洁高效。

验证结果

执行后会得到你期望的输出:

namevalue_1value_2
prod1code1code11
prod2code2NULL
prod3code3code33
prod4code4NULL

内容的提问来源于stack exchange,提问作者user3735871

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 09:22:40