Я проверяю Deequ, который выглядит как действительно хорошая библиотека. Мне было интересно, можно ли загрузить ограничения из CSV-файла или таблицы orc в HDFS?
Допустим, у меня есть таблица с этими типами
case class Item(
id: Long,
productName: String,
description: String,
priority: String,
numViews: Long
)
, и я хочупоставить ограничения как:
val checks = Check(CheckLevel.Error, "unit testing my data")
.isComplete("id") // should never be NULL
.isUnique("id") // should not contain duplicates
Но я хочу загрузить ".isComplete (" id ")", ".isUnique (" id ")" из файла CSV, чтобы бизнес мог добавить ограничения имы можем запустить те тесты на основе их ввода
val verificationResult = VerificationSuite()
.onData(data)
.addChecks(Seq(checks))
.run()
Мне удалось получить ограничения из SuggestionResult.constraintSuggestion
val allConstraints = suggestionResult.constraintSuggestions
.flatMap { case (_, suggestions) => suggestions.map { _.constraint }}
.toSeq
, который выдает список, например, например:
allConstraints = List(CompletenessConstraint(Completeness(id,None)), ComplianceConstraint(Compliance('id' has no negative values,id >= 0,None))
Но он генерируется из SuggestionResult.constraintSuggestions. Но я хочу иметь возможность создавать список, подобный этому, на основе входных данных из файла CSV, кто-нибудь может мне помочь?
Подводя итог: В основном я просто хочу добавить:
val checks = Check(CheckLevel.Error, "unit testing my data")
.isComplete("columnName1")
.isUnique("columnName1")
.isComplete("columnName2")
динамически на основе файла, где файл имеет, например:
columnName;isUnique;isComplete (header)
columnName1;true;true
columnName2;false;true