Используя библиотеку amazon deequ, я пытаюсь построить функцию, которая принимает 3 параметра, объект проверки, строку, сообщающую, какое ограничение необходимо выполнить, и другую строку, которая предоставляет критерии ограничения. У меня есть куча проверок, которые я хочу прочитать из таблицы mysql. Мое намерение состоит в том, чтобы пройти через все проверки, которые я получаю из таблицы mysql, и построить объект проверки, используя функцию, которую я описал выше, и выполнить проверки на исходном фрейме данных. Вот пример amazon deequ https://towardsdatascience.com/automated-data-quality-testing-at-scale-using-apache-spark-93bb1e2c5cd0
Таким образом, вызов функции выглядит примерно так:
var _check = build_check_object_function(check_object, "hasSize", "10000")
Эта функция должна добавить новую проверку hasSize в check_object и вернуть ее.
Часть, в которой я застрял, - это как перевести строку hasSize в функцию hasSize.
var _check = Check(CheckLevel.Error, "Data Validation Check")
val listOfFunctions= _check.getClass.getMethods.filter(!_.getName().contains('$'))
for (function <- listOfFunctions) {
if( function.getName().toLowerCase().contains(row(2).asInstanceOf[String].toLowerCase())) {
_check = _check.function(row(3))
}else{
println("Not a match")}
}
Вот ошибка, которую я получаю
<console>:38: error: value function is not a member of com.amazon.deequ.checks.Check
if( function.getName().toLowerCase().contains(row(2).asInstanceOf[String].toLowerCase())) {_check = _check.function(row(3))