2016-12-07 6 views
-2

2つのデータフレームのjoinキーを2つのvaribaleでkepしようとしています。私は同じものを結合に渡したい。ここに私の変数は一つのキーを含んでいます。複数のキーを渡すことはできますか?Scalaを使用してSpark Data Frameの変数としてjoinキーを渡す方法

例: 第1キー: スカラ>ヴァルprimary_key_col = scd_table_keys_df.first()のgetString(2) primary_key_col:文字列= acct_nbr

2キー: スカラ>ヴァルdelta_primary_key_col = "デルタ_ "+ primary_key_col delta_primary_key_col:文字列= delta_acct_nbr

** My python Code which is working 
cdc_new_acct_df = delta_src_rename_df.join(hist_tgt_tbl_Y_df ,(col(delta_primary_key_col) == col(primary_key_col)) ,'left_outer').where(hist_tgt_tbl_Y_df[primary_key_col].isNull()) 

私は同じ達成したいですスカラ。提案してください。 複数の方法で試行します。

val cdc_new_acct_df = delta_src_rename_df.join(hist_tgt_tbl_Y_df ,(delta_src_rename_df({primary_key_col.mkstring(",")}) == hist_tgt_tbl_Y_df({primary_key_col.mkstring(",")}),"left_outer")).where(hist_tgt_tbl_Y_df[primary_key_col].isNull()) 

:121:エラーは:値mkstringがString

val cdc_new_acct_df = delta_src_rename_df.join(hist_tgt_tbl_Y_df ,(delta_src_rename_df(delta_primary_key_col.map(c => col(c))) == hist_tgt_tbl_Y_df(primary_key_col.map(c => col(c))),"left_outer")) 

のメンバーではありません:123:エラー:型の不一致。 found:Array [org.apache.spark.sql.Column] 必須:文字列

解決できません。提案してください。

答えて

0

私は変数置換がありませんでした。これは私のために働いています。

scala> val cdc_new_acct_df = delta_src_rename_df.join(hist_tgt_tbl_Y_df ,delta_src_rename_df(**s"$delta_primary_key_col"**) === hist_tgt_tbl_Y_df(s"$primary_key_col"),"left_outer") 
    cdc_new_acct_df: org.apache.spark.sql.DataFrame = [delta_acct_nbr: string, delta_primary_state: string, delta_zip_code: string, delta_load_tm: string, delta_load_date: string, hash_key_col: string, delta_hash_key: int, delta_eff_start_date: string, acct_nbr: string, account_sk_id: bigint, primary_state: string, zip_code: string, eff_start_date: string, eff_end_date: string, load_tm: string, hash_key: string, eff_flag: string] 
関連する問題