Базовые проверки в Postgres
---
sources:
- name: dq-course-main-db # придумайте имя для своего источника. Имена всех сущностей должны быть уникальными.
type: postgres # тип нашего источника
parameters:
host: 127.0.0.1 # хост (ip адрес или доменное имя)
port: 5432 # порт
database: dq_course # имя базы
credentials:
type: vault # тип хранилища секретов
path: platform/dq/demo/ocean_demo # путь в Vault, где лежат credentials подключения к источнику
user: dq_course_user # наш логин к базе (должен совпадать с полем key в Vault)
owners: # Владельцы источника, которые могут редактировать и запускать проверки на этой БД, более подробно читай в описании Ролевой модели
- user1 # владельцем может быть как ваша собственная УЗ
- tech_user_2 # так и технический пользователь
- ad_group_name # или AD группа
check_objects:
- name: datagov_products.public.dq_course.dq-course-main-db # имя таблицы, старайтесь придерживаться naming convention <Table name>.<DB name>.<Source name>
source: dq-course-main-db # имя из блока Source
database: dq_course # база
schema: public # схема
table: datagov_products # таблица
metrics:
- name: total_records_count.datagov_products.public.dq_course.dq-course-main-db # имя согласно конвенции <Metric_name>.<Check_object>
type: row_count # тип метрики
check_object: datagov_products.public.dq_course.dq-course-main-db # имя объекта проверки из предыдущего блока
parameters:
column: "*" # столбец, по которому считаем
date_column_name: Date # столбец с бизнес датой, по которой фильтруем
- name: product_name_distinct.datagov_products.public.dq_course.dq-course-main-db
type: row_count_distinct
check_object: datagov_products.public.dq_course.dq-course-main-db
parameters:
column: "product_name"
date_column_name: Date
- name: product_name_nulls.datagov_products.public.dq_course.dq-course-main-db
type: row_count_null
check_object: datagov_products.public.dq_course.dq-course-main-db
parameters:
column: "product_name"
date_column_name: Date
compares:
- name: Timeliness.datagov_products.public.dq_course.dq-course-main-db # имя проверки <Compare_name>.<Check_object>
type: compare_with_static_values # тип проверки
metric: total_records_count.datagov_products.public.dq_course.dq-course-main-db # имя метрики из блока metrics
parameters:
min_value: 1 # есть хотя бы 1 запись за бизнес-дату
max_value: inf # можно использовать значения inf и -inf, чтобы поставить порог в +/- Бесконечность
description: 'Актуальность: проверка на наличие новых данных' # Добавляем краткое описание нашей проверки
- name: Uniqueness.datagov_products.public.dq_course.dq-course-main-db
type: absolute_ratio
metric: total_records_count.datagov_products.public.dq_course.dq-course-main-db
parameters:
reference_metric: product_name_distinct.datagov_products.public.dq_course.dq-course-main-db # имя второй метрики из блока метрики, с которой будем сравнивать
min_value: 1
max_value: 1
description: 'Уникальность: отсутствие дублей в колонке product_name'
- name: Completeness_product_name.datagov_products.public.dq_course.dq-course-main-db
type: percent_delta
metric: product_name_nulls.datagov_products.public.dq_course.dq-course-main-db
parameters:
reference_metric: total_records_count.datagov_products.public.dq_course.dq-course-main-db
min_value: 0
max_value: 0 # ожидаем, что в поле нет NULL значений
description: 'Полнота: заполненность product_name'
groups: # группа для запуска проверок (обычно одна проверка это редкость)
- name: datagov_products.public.dq_course.dq-course-main-db # имя группы <Group_name>.<Check_object>
compares: # перечисляем наши проверки
- Timeliness.datagov_products.public.dq_course.dq-course-main-db
- Uniqueness.datagov_products.public.dq_course.dq-course-main-db
- Completeness_product_name.datagov_products.public.dq_course.dq-course-main-db
run:
schedule: '0 1 * * *' # расписание запуска, ежедневно в 01:00
days_data_lag: 1 # метрики будут вычисляться за предыдущую дату (по полю Date)
alerts:
- name: datagov_products.dq-course-main-db
annotations:
summary: 'Не прошли проверки по {check_object} за {compare_date}' # Описание сообщения в алерте с плейсхолдерами в фигурных скобках
channels: # каналы отправки алерта
- smtp # на email
emails:
- user@gmail.com # адреса получателей
groups:
- datagov_products.public.dq_course.dq-course-main-db
fields: # список полей, которые будут показаны в письме с алертом
- description
- status
- value
- min_value
- max_value
statuses: [-1, -2] # статусы срабатывания "-1" — проверка прошла не успешно (выявилось несоответствие пороговым значениям из правила проверки). "-2" — возникла ошибка при вычислении метрики.