2017-07-19 5 views
1

私は以下の問題を抱えています:都市値が 'noClue'のとき、データフレームAに列RealCityを追加したい、キーを使用してdf Bから選択するもの、市を得る。spark別のdfにcondtionsを持つデータフレームに列を追加する

表A:

+---------+--------+ 
    |  Key | City| 
    +---------+--------+ 
    |a  | PDX | 
    +---------+--------+ 
    |b  | noClue | 

表B:

+---------+--------+ 
    |  Key | Name | 
    +---------+--------+ 
    |c  | SYD | 
    +---------+--------+ 
    |b  | AKL | 

私は.withColumnwhenを使用したいが、私はそれをこの方法を実行して、値が別のテーブル(テーブルB)を選択することはできません。これを行う良い方法は何ですか?どうもありがとう!

+0

あなたの表Bは、どのように大きなあるとして、最終的な出力を持っている必要があります –

答えて

5

は、あなたが持っていることを考えると2 dataframes

A:

+---+------+ 
|key|City | 
+---+------+ 
|a |PDX | 
|b |noClue| 
+---+------+ 

B:

+---+----+ 
|key|Name| 
+---+----+ 
|a |SYD | 
|b |AKL | 
+---+----+ 

することはでき単に共通Keyjoinそれらを使いwithColumn

として when機能
val finalDF = A.join(B, Seq("Key"), "left").withColumn("RealCity", when($"City" === "noClue", $"Name").otherwise($"City")).drop("Name") 

あなたは

+---+------+--------+ 
|key|City |RealCity| 
+---+------+--------+ 
|a |PDX |PDX  | 
|b |noClue|AKL  | 
+---+------+--------+ 
関連する問題