Моя динамическая функция слишком велика, добавлена функция eval, и она отлично работает.
См. Ниже мой ключ и значение.
item key : QUARTER
item value: rh_if ((rh_less_than ((rh_str_to_num ((rh_date_to_char (('TRANSACTION_DATE'),('MM') )) )),('04') )),(rh_concatenate ((lit('Q1')),(lit('-')),(rh_date_to_char (('TRANSACTION_DATE'),('YYYY') )) )),(rh_if ((rh_less_than ((rh_str_to_num ((rh_date_to_char (('TRANSACTION_DATE'),('MM') )) )),(7) )),(rh_concatenate ((lit('Q2')),(lit('-')),(rh_date_to_char (('TRANSACTION_DATE'),('YYYY') )) )),(rh_if ((rh_less_than ((rh_str_to_num ((rh_date_to_char (('TRANSACTION_DATE'),('MM') )) )),(10) )),(rh_concatenate ((lit('Q3')),(lit('-')),(rh_date_to_char (('TRANSACTION_DATE'),('YYYY') )) )),(rh_concatenate ((lit('Q4')),(lit('-')),(rh_date_to_char (('TRANSACTION_DATE'),('YYYY') )) )) )) )) )
мой код будет выглядеть ниже,
for key, value in exp_list.items():
print("item key :",key)
print('item value: ', value)
if key=='QUARTER':
tran_df.withColumn(key, eval(value)).show()