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

Spark 3.3.0按仓库和产品统计金额的最大、最小、平均值

解决方案

首先注意:你原来的all变量定义末尾加了.show,这会导致all变成Unit类型(而非DataFrame),后续无法对其进行分组聚合操作,得先把.show去掉,修正后的关联代码如下:

val all = amounts.join(whp, whp("positionId") === amounts("positionId"), "inner")
  .drop(whp("eventTime"))
  .drop(amounts("eventTime"))
  .drop(whp("positionId"))
  .drop(amounts("positionId"))

接下来要实现按warehouse和product分组,同时计算amount的最大值、最小值、平均值,只需在groupBy后调用agg方法,一次性传入多个聚合函数即可,还可以给生成的列指定清晰的名称:

import org.apache.spark.sql.functions.{max, min, avg}

val aggResult = all.groupBy("warehouse", "product")
  .agg(
    max("amount").alias("max_amount"),
    min("amount").alias("min_amount"),
    avg("amount").alias("avg_amount")
  )

aggResult.show()

代码说明

  • 导入Spark内置的聚合函数max、min、avg,这些函数来自org.apache.spark.sql.functions包
  • groupBy("warehouse", "product")指定分组键
  • agg方法接受多个聚合操作,每个操作通过.alias()给结果列重命名,避免默认的max(amount)这种不直观的列名
  • 最后调用.show()查看计算结果

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.24 19:27:29