使用SparkSQL到两个列中的两个列中,其中任何一个



我正在尝试使用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|
+----+----+---+

相关内容

  • 没有找到相关文章

最新更新