我正在尝试使用SparkSQL来处理数据框架。数据框架看起来像:
A B
1 Null
2 Null
Null 3
Null 4
我如何使用加入或联合形成一个新列C
,以便数据帧可以:
A B c
1 Null 1
2 Null 2
Null 3 3
Null 4 4
*可以保证,A和B不会均为null或非效果;他们中的任何一个都会有一个价值。
您可以使用coalesce
函数;根据文档:
它返回第一列不是null的,如果所有输入为 null。
例如,如果a不是null,或 a为null,b不是null,或C 不是null。
val df = Seq((Some(1), null), (Some(2), null), (null, Some(3)), (null, Some(4))).toDF("A", "B")
// df: org.apache.spark.sql.DataFrame = [A: int, B: int]
df.withColumn("C", coalesce($"A", $"B")).show
+----+----+---+
| A| B| C|
+----+----+---+
| 1|null| 1|
| 2|null| 2|
|null| 3| 3|
|null| 4| 4|
+----+----+---+