将日期列表传递给 PySpark 中的 SQL WHERE 语句

Pass list of dates to SQL WHERE statement in PySpark

在将一些 SAS 代码转换为 PySpark 的过程中,我们之前在此代码中的 where 语句中使用了一个宏变量。在适应 PySpark 时,我试图将日期列表传递给 where 语句,但我不断收到错误。我想要 SQL 代码从这 3 个月中提取所有数据。有什么指点吗?

month_list = ['202107', '202108', '202109'] 

sql_query = """ (SELECT *                   
                FROM Table_Blah                  
                WHERE (to_char(DateVariable,'yyyymm') IN '{}')                  
                ) as table1""".format(month_list)

将列表作为元组传递以获得正确的 sql 语法:

month_list = ['202107', '202108', '202109'] 

sql_query = """ (SELECT *                   
                FROM Table_Blah                  
                WHERE (to_char(DateVariable,'yyyymm') IN {})                  
                ) as table1""".format(tuple(month_list))

而且您不需要在语句中使用撇号