web-dev-qa-db-fra.com

Comment sélectionner et ordonner plusieurs colonnes dans une trame de données Pyspark après une jointure

Je souhaite sélectionner plusieurs colonnes dans la trame de données existante (qui est créée après les jointures) et je souhaite classer les fichiers comme structure de table cible. Comment ceci peut être fait ? L'approche que j'ai utilisée est ci-dessous. Ici, je suis en mesure de sélectionner les colonnes nécessaires requises mais pas en mesure de faire en séquence.

Required (Target Table structure) :
hist_columns = ("acct_nbr","account_sk_id", "Zip_code","primary_state", "eff_start_date" ,"eff_end_date","eff_flag")

account_sk_df = hist_process_df.join(broadcast(df_sk_lkp) ,'acct_nbr','inner' )
account_sk_df_ld = account_sk_df.select([c for c in account_sk_df.columns if c in hist_columns])

>>> account_sk_df
DataFrame[acct_nbr: string, primary_state: string, Zip_code: string, eff_start_date: string, eff_end_date: string, eff_flag: string, hash_sk_id: string, account_sk_id: int]


>>> account_sk_df_ld
DataFrame[acct_nbr: string, primary_state: string, Zip_code: string, eff_start_date: string, eff_end_date: string, eff_flag: string, account_sk_id: int]

Le account_sk_id doit être à la 2e place. Quelle est la meilleure façon de procéder?

10
user3858193

Essayez de sélectionner des colonnes en donnant simplement une liste, pas en itérant les colonnes existantes ou en ordonnant que cela soit OK:

account_sk_df_ld = account_sk_df.select(*hist_columns)
16
Mariusz