python проверка параметра - строка фильтра кадра данных pyspark - PullRequest
0 голосов
/ 28 мая 2020

У меня есть требование передать строку предложения 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, чтобы вызвать исключение из строки фильтра, если его нет в выше формат. Как я могу это сделать?

1 Ответ

0 голосов
/ 29 мая 2020

Я пытаюсь понять, что вы написали, но у меня проблемы. В общем, не следует смешивать «текст» и «код» вместе. Это сбивает с толку людей, которые пытаются прочитать вашу работу. Слова «Сценарий:» и «Пример 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))
...