'Pyspark join on multiple aliased table columns

Python doesn't like the ampersand below. I get the error:
& is not a supported operation for types str and str. Please review your code.

Any idea how to get this right? I've never tried to join more than 1 column for aliased tables. Thx!!

df_initial_sample = df_crm.alias('crm').join(df_cngpt.alias('cng'), on= (("crm.id=cng.id") & ("crm.cpid = cng.cpid")), how = "inner")


Solution 1:[1]

Try using as below -

df_initial_sample = df_crm.alias('crm').join(df_cngpt.alias('cng'), on= (["id"] and ["cpid"]), how = "inner")

Solution 2:[2]

Your join condition is overcomplicated. It can be as simple as this

df_initial_sample = df_crm.join(df_cngpt, on=['id', 'cpid'], how = 'inner')

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 DKNY
Solution 2 pltc