如何在 Pyspark 的动态列列表中转义列名
Posted
技术标签:
【中文标题】如何在 Pyspark 的动态列列表中转义列名【英文标题】:How to escape column names in a dynamic list of column in Pyspark 【发布时间】:2021-07-25 03:21:39 【问题描述】:我有以下语句动态生成要在连接条件中使用的列列表。 这可以正常工作,但对于具有特殊字符的列会失败。例如名为:ABC#XYZ 的列或中间有空格的列。 我知道反引号可以在 SQL 语句中使用,但在下面的常规 python 语句中我将在哪里插入反引号?
col_list_cond = [" & ( regexp_replace( file_df_new."+ c +",' ','') != regexp_replace(table_df_new."+ c +",' ','') )" for c in col_list]
【问题讨论】:
【参考方案1】:您可以尝试使用 python f-strings
并在变量 c 之前和之后添加`:
new_col_list = [f"`col`" if '#' in col else col for col in col_list]
然后使用下面的这个新列表:
col_list_cond = [" & ( regexp_replace( file_df_new."+ c +",' ','') != regexp_replace(table_df_new."+ c +",' ','') )" for c in new_col_list]
【讨论】:
以上是关于如何在 Pyspark 的动态列列表中转义列名的主要内容,如果未能解决你的问题,请参考以下文章