Перейти к содержанию

check.yaml

Содержит бизнес-правила валидации для ключевых полей. Это позволяет обеспечить:

  • Проверку семантической корректности
  • Регулярный мониторинг качества данных
  • Расширение валидации сверх базовых типов
  • Раннее обнаружение невалидных данных
  • Машиночитаемое описание ограничений
Особенности реализации
  1. Применяются после технической валидации схемы данных, описанной contract.yaml
  2. Нарушение → запись помечается невалидной
  3. Критичные нарушения останавливают зависимые процессы

Batch DQ

В процессе загрузки данных из stage layer в cleansed layer происходят проверки качества данных, ниже описан подход к проведению проверок

Набор проверок#

Каждая проверка возвращает true или false.

Оператор Описание Короткая форма
re Проверка соответствия регулярному выражению field ~= value
like Проверка соответствия маске field like '%wtf'
eq Проверка равенства field == value
ne Проверка неравенства field != value
gt Больше field > value
lt Меньше field < value
ge Больше или равно field >= value
le Меньше или равно field <= value
in Проверка вхождения значения в массив field in (1, 2)

Структура описания проверок#

Проверки задаются в массиве checks.

Каждая проверка имеет type, он может быть равен check — означая единственную проверку, либо chain — набор проверок.

Структура check#

  • name (опционально) — название проверки. Если не задано, будет автоматически сгенерировано в следующем формате: check-{имя колонки}-{оператор}.
  • fn — название (не выражение) оператора сравнения из набора выше.
  • negate (опционально) — инверсия результата проверки. Положительный результат становится отрицательным, и наоброт.
  • fields — набор полей, над которыми осуществляются проверки.
  • args — параметры для fn.

Структура chain#

  • clause: any, all — сложение результатов проверок.
  • checks — массив проверок.

Короткая форма#

Допустима короткая форма записи проверок, при которой указываются только название поля, оператор и значение для сравнения.

Результаты проверок#

Результаты проверок сохраняются в технических полях в таблице:

  • _dq tinyint (фактически int) — количество проваленных проверок.
  • _dq_failed_checks array<string> — набор названий (поле name) проваленных проверок.

Примеры конфигурации проверок#

Example
checks:
- foobar ~= ^v\d{1,2}$
- foobar01 >= 10
- foobar02 in ('foo', 'bar')

Внутреннее представление конфигурации, для записи стоит использовать преимущественно короткую форму

checks:
  - name: foobar_check
    type: check  # default
    fn: maxLen
    fileds:
      - foobar
    args:
      - 255
  - fn: notNullIfSet
    fields:
      - foobar01
      - foobar02
  - type: chain
    clause: all
    checks:
      - fn: eq
        negate: false
        fields:
          - payment_type
        args:
          - CRD
      - type: chain
        clause: any
        checks:
          - fn: in
            fields:
              - status_id
            args:
              - 10
              - 30
          - fn: gt
            fields:
              - price
            args:
              - 0