2017-09-13 70 views
1

我試圖用SparkSQL來處理dataframe.The數據框的樣子:在其中任何使用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不能同時爲空或者非空;他們中的任何一個都會有價值。

回答

1

您可以使用​​3210函數;按照docs

它返回的第一列是不爲空,則返回null所有輸入都是 空。例如,如果a不爲空,或者b如果a爲空且b不爲空,或者c如果a和b都爲空,但c爲 ,則合併(a,b,c)將返回a不爲空。

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| 
+----+----+---+ 
相關問題