Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/scala/20.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Scala 使用SparkSQL when函数选择列_Scala_Apache Spark_Select_Apache Spark Sql_Case When - Fatal编程技术网

Scala 使用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 |

在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 | 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