我想 convert
下面的 query
在 spark dataframe
:
sqlContext.sql("SELECT d.dep_name,count(*) FROM employees e,department d WHERE e.dep_id = d.dep_id GROUP BY d.dep_name HAVING count(*) >= 2").show
输出:
+---------+---+
| dep_name|_c1|
+---------+---+
| FINANCE| 3|
| AUDIT| 5|
|MARKETING| 6|
我用下面的查询进行了尝试:
scala> finalEmployeesDf.as("df1").join(depDf.as("df2"), $"df1.dep_id" === $"df2.dep_id").select($"dep_name").groupBy($"dep_name").count.show()
+---------+-----+
| dep_name|count|
+---------+-----+
| FINANCE| 3|
| AUDIT| 5|
|MARKETING| 6|
+---------+-----+
我知道这个 isn't correct
因为假设我们有一个情况,我们只有一个部门的条目,那么它也将列在这些结果,但我想结果显示只有当 counts are greater than 2
. 那我怎么才能做到呢???我试过用谷歌搜索,但对这个案子毫无帮助。
2条答案
按热度按时间n3schb8v1#
组和聚合部分错误。您需要选择所有相关列、分组依据和聚合依据。以下是未经测试的代码,将代表正确的方法:
一般的建议是尝试将api调用分成几行,这使得阅读和理解更加容易。
5q4ezhmt2#
尝试以下操作: