pyspark: получение столбцов на основе других записей

#python #join #pyspark

#python #Присоединиться #пайспарк

Вопрос:

У меня есть фрейм данных, который выглядит следующим образом

 membershipAccountNbr            cntryRetailChannelCustId
111590058               1010015900581000010101
214100897               1010041008972100010101
104100897               1010041008971000010101
 

И еще один, который выглядит так:

 membershipAccountNbr    parentMembershipNbr
111590058                   111590058
214100897                   104100897
 

Моя цель — сделать так, чтобы это выглядело:

 membershipAccountNbr parentMembershipNbr parentCustId
111590058               111590058    1010015900581000010101
214100897               104100897    1010041008971000010101
 

Я пытался использовать объединения, но они выдают ошибку неоднозначности. Я новичок в Pyspark, поэтому, пожалуйста, помогите.

Ответ №1:

Предположим df1 , что,

  -------------------- ------------------------ 
|membershipAccountNbr|cntryRetailChannelCustId|
 -------------------- ------------------------ 
|           111590058|    10100159005810000...|
|           214100897|    10100410089721000...|
|           104100897|    10100410089710000...|
 -------------------- ------------------------ 
 

И df2 ,

  -------------------- ------------------- 
|membershipAccountNbr|parentMembershipNbr|
 -------------------- ------------------- 
|           111590058|          111590058|
|           214100897|          104100897|
 -------------------- ------------------- 
 

Затем вы запускаете,

 df1.join(df2, on="membershipAccountNbr", how="right").select(
    col("membershipAccountNbr"),
    col("parentMembershipNbr"),
    col("cntryRetailChannelCustId").alias("parentCustId"),
).show()
 

Результат будет выглядеть следующим образом,

  -------------------- ------------------- -------------------- 
|membershipAccountNbr|parentMembershipNbr|        parentCustId|
 -------------------- ------------------- -------------------- 
|           111590058|          111590058|10100159005810000...|
|           214100897|          104100897|10100410089721000...|
 -------------------- ------------------- -------------------- 
 

Комментарии:

1. Это то, что я пытался сделать, но это выдает ошибку неоднозначности. И просит меня включить перекрестное соединение