Scala 使用SparkSQL when函数选择列
在SparkSQL文档中,有一个when函数返回一列。给出的示例如下所示:Scala 使用SparkSQL when函数选择列,scala,apache-spark,select,apache-spark-sql,case-when,Scala,Apache Spark,Select,Apache Spark Sql,Case When,在SparkSQL文档中,有一个when函数返回一列。给出的示例如下所示: people.select(when(people("gender") === "male", 0) .when(people("gender") === "female", 1) .otherwise(2)) 在本例中,when条件的结果为0、1或2。但是,如果我希望结果是people数据框的一列,该怎么办?例如,给定以下数据: id | name | gender | testosterone |
people.select(when(people("gender") === "male", 0)
.when(people("gender") === "female", 1)
.otherwise(2))
在本例中,when条件的结果为0、1或2。但是,如果我希望结果是people数据框的一列,该怎么办?例如,给定以下数据:
id | name | gender | testosterone | estrogen
-----------------------------------------------
1 | Joe | male | 10 | 2
2 | Sue | female | 3 | 12
3 | John | male | 9 | 3
4 | Kim | female | 1 | 10
我想要这样的东西:
SELECT
name,
CASE WHEN gender = "male" THEN testosterone
WHEN gender = "female" THEN estrogen
END AS hormone_level
FROM
people
结果是:
name | hormone_level
-----------------------
Joe | 10
Sue | 12
John | 9
Kim | 10
只是
只是
when(people("gender") === "female", people("estrogen"))
.when(people("gender") === "male", people("testosterone"))
// .otherwise(???) Add base-case if required