Apache spark when函数如何处理多个匹配案例?
函数始终返回第一个匹配项时是否触发? 比如说,Apache spark when函数如何处理多个匹配案例?,apache-spark,apache-spark-sql,Apache Spark,Apache Spark Sql,函数始终返回第一个匹配项时是否触发? 比如说, val df = spark.sql("SELECT 1 as a") df.withColumn("a",when($"a">0,1).when($"a">0.5,2)).show() 它是否总是一致地返回第一个“when”匹配 或者更好的做法是这样做: df.withColumn("a",when($"a">0,1).otherwise(when($"a">0.5,2)).show() 使用哪种做法更好?文档(尤其
val df = spark.sql("SELECT 1 as a")
df.withColumn("a",when($"a">0,1).when($"a">0.5,2)).show()
它是否总是一致地返回第一个“when”匹配
或者更好的做法是这样做:
df.withColumn("a",when($"a">0,1).otherwise(when($"a">0.5,2)).show()
使用哪种做法更好?文档(尤其是示例)建议进行第一次匹配:
计算条件列表并返回多个可能的条件之一
结果表达式。如果末尾未定义“否则”,则为null
为不匹配的条件返回。
//示例:将性别字符串列编码为整数
//斯卡拉:人物。选择( 当(人(“性别”)=“男性”,0) .当(人(“性别”)=“女性”,1) 。否则(2)) 编辑: 尽管此示例使用了不相交的情况,但第一次匹配是标准SQL,请参见和文档(尤其是示例)建议进行第一次匹配: 计算条件列表并返回多个可能的条件之一 结果表达式。如果末尾未定义“否则”,则为null 为不匹配的条件返回。 //示例:将性别字符串列编码为整数 //斯卡拉:
人物。选择( 当(人(“性别”)=“男性”,0) .当(人(“性别”)=“女性”,1) 。否则(2)) 编辑:
虽然这个例子使用了不相交的情况,但是第一个匹配是标准的SQL,参见和我看到了文档,他们的例子中有两个条件不能同时匹配,如果我有多个条件匹配,他们不会说第一个条件被匹配。真的!在(标准)SQL中,它应该是第一个匹配项。但是如果我在某处看到这些文档,那就太好了。我看到了这些文档,它们的示例中有两个条件不能同时匹配,如果我有多个条件匹配,它们不会说第一个条件被采用。真的!在(标准)SQL中,它应该是第一个匹配项。但如果能在某个地方看到这一点就好了