Ограничения загрузки из csv-файла (amazon deequ) - PullRequest
0 голосов
/ 18 октября 2019

Я проверяю 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

1 Ответ

0 голосов
/ 22 октября 2019

Это зависит от того, насколько сложным вы хотите разрешить ограничения. В общем, deequ позволяет вам использовать произвольный scala-код для функции проверки ограничения, поэтому его сложно (и опасно с точки зрения безопасности) загрузить из файла.

Я думаю, вам придется прийтис вашей собственной схемой и семантикой для файла CSV, по крайней мере, он не поддерживается напрямую в deequ.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...