2017-11-15 6 views
1

私は現在pySparkを使用しています。私は今、2つのテーブルを持っています。私はそれらを次のように2回参加させたい。PySparkを使用して同じ2つのデータフレームに2回参加することはできますか?

 
Table 1 (df1) 

sell_product sell_amount buy_product buy_amount    

apple    2   pineapple  3 
pear    1   apple   4 
orange    5   apple   2 
 
Table 2 (df2) 

product price    

apple   $1    
pear   $2    
orange   $3  
pineapple  $4 
 
Result Table 

sell_product sell_amount sell_price  buy_product buy_amount buy_price    

apple    2     $1    pineapple  3  $4 
pear    1     $2    apple   4  $1 
orange    5     $3    apple   2  $1 
df_firstjoin= df1.join(df2.select(col('price').alias('sell_price')),'sell_product'=='product','inner') 

df_twice= df1.firstjoin(df2.select(col('price').alias('buy_price')),'buy_product'=='product','inner') 

私はそれらを同時に参加することができますどのような方法があるかどうか、私は疑問に思って。ありがとう。

答えて

0

2つの「価格」列を追加する場合は、df1(sell_productとbuy_product)で異なるキーを使用しているため、1つの結合でこれを行う方法はありません。私が考えることができる唯一の解決策は、新しいdfを作成することではなく、単一のパイプラインでこれを行うことです。

result = df1\ 
.join(df2.select(col('price').alias('sell_price')),'sell_product'=='product','inner') 
.join(df2.select(col('price').alias('buy_price')),'buy_product'=='product','inner') 
関連する問題