有如下表格(Data):
color status freq
red y 1
blue y 1
green   y       2
预期产量:  red,blue 1 green 2
select color , freq from  data where status = 'y' group by(freq)
现在,我们要得到结果为“ red,blue”的freq= 1,并green为freq =2 如何通过频率来获得color组的列表,纠正上述SQL查询。
使用时first(colour),它只返回第一种color,但期望所有color按freq分组。
根据输出更正SQL查询
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
试试这个:
import org.apache.spark.sql.functions._
import spark.implicits._
//import org.apache.spark.sql._
//import org.apache.spark.sql.types._ 
val df = Seq(
 ("green","y", 4),
 ("blue","n", 7),
 ("red","y", 7),
 ("yellow","y", 7),
 ("cyan","y", 7)
      ).toDF("colour", "status", "freq")
val df2 = df.where("status = 'y'")
        .select($"freq", $"colour")
        .groupBy("freq")
        .agg(collect_list($"colour"))
df2.show(false)
收益:
| freq | collect_list(colour) | 
|---|---|
| 4 | [green] | 
| 7 | [red, yellow, cyan] |