check.yaml
Содержит бизнес-правила валидации для ключевых полей. Это позволяет обеспечить:
- Проверку семантической корректности
- Регулярный мониторинг качества данных
- Расширение валидации сверх базовых типов
- Раннее обнаружение невалидных данных
- Машиночитаемое описание ограничений
Особенности реализации
- Применяются после технической валидации схемы данных, описанной contract.yaml
- Нарушение → запись помечается невалидной
- Критичные нарушения останавливают зависимые процессы
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:
- 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