首页 > 解决方案 > python参数验证-pyspark数据框过滤字符串

问题描述

我需要将 where 子句字符串直接传递给输入数据框以过滤输入记录。具有列名和要过滤的值的 filter_string 将采用以下格式:

Ex 1: "(col('clm1') == '201')"
Ex 2: "(col('clm1') == '101') & (col('dim2') == '201')"

Scenario: If filter_string = "(col('clm1') == '201')"   # In the correct format
   df_output = df_input.filter(eval(filter_str)

现在,如果不是上述格式,我想编写 python 语法来引发过滤器字符串的异常。我怎样才能做到这一点?

标签: pythondataframefilterpysparkpyspark-dataframes

解决方案


我正在尝试理解您所写的内容,但遇到了麻烦。一般来说,你不应该把“文本”和“代码”混在一起。它使试图阅读您作品的人感到困惑。“Scenario:”和“Ex 1:”这两个词不是代码,不应出现在您的代码块中。

听起来您想根据匹配的字符串引发异常。以下是如何做到这一点:

filter_string = "(col('clm1') == '201')" # Could be something else too. 
check_string  = "(col('clm1') == '201')"

if not other_string == check_string:
    raise TypeError(f"The string you provided, {filter_string}, is not valid.")

df_output = df_input.filter(eval(filter_string))

推荐阅读