#dataframe #pyspark #databricks #rule-engine
Вопрос:
Наличие двух кадров данных, в одном из которых есть фактические данные, а в другом-правила, которые необходимо проверить.
дисплей(DF1) — Основная таблица данных:
дисплей(DF2) — Таблицы правил:
from business_rule_engine import RuleParser
params = {
'Col_2': DF1.where(DF1.SNO == 1).select('Col_2')
}
rules = """
rule "1"
when
Col_2= "B"
then
print("Yayyyy")
end
"""
parser = RuleParser()
parser.register_function(print)
parser.parsestr(rules)
parser.execute(params)
The above one always returns FALSE no matter what If i pass a DF. If I pass a manual Record like
params = {
‘Col_2’: ‘B’
}
It will return TRUE.
Need help on how to pass DF rows multiple columns
2 rule-engine (PyPi) — Link:
import rule_engine
rule = rule_engine.Rule(
'Col_2 == "B" and (Col_3 != 1 or Col_3 != 2)'
)
rule.matches({
DF1.where(DF1.SNO == 1)
})
Приведенное выше всегда возвращает значение FALSE при задании строки через DF, а при задании вручную оно становится ИСТИННЫМ. Попробовал даже Rule.filter({ DF1 }), который выдает мне <объект генератора Rule.filter в 0x7f2bdafbe650> в качестве вывода
Мы очень ценим любую помощь. заранее спасибо!