Работа с тестами
Готовые тесты
Готовые тесты представляют собой SQL-запросы, которые покрывают большую часть потребностей при проверке таблиц.
Для создания теста в разделе "Качество данных" во вкладке "Тесты" нажмите "Создать тест".
1️⃣ Выберите таблицу
2️⃣ Выберите столбцы и проверки над ними

Дополнительно можно выбирать тесты над всей таблицей, а не над конкретным столбцом.
3️⃣ Заполните параметры тестов
Для выбранных тестов заполните необходимые параметры

4️⃣ Сохраните с запуском теста или без запуска
Ручные тесты
Ручные тесты - кастомные тесты, которые пользователь задает с помощью своего SQL-запроса. SQL-запрос должен выводить строки с ошибками.
1️⃣ Выберите одну или несколько таблиц, к которым относится ваш тест
2️⃣ Укажите наименование теста Если тест с таким наименованием уже создан, вам будет выведено предупреждение, что в таком случае тест будет перезаписан.
Дополнительно вы можете задать описание теста.
3️⃣ Введите SQL-запрос

4️⃣ Заполните параметры теста
5️⃣ Сохраните с запуском теста или без запуска
Изменение тестов
На текущий момент в Datapulse нет возможности редактировать ранее созданные тесты. Вы можете создать тест заново, и тогда старый тест будет перезаписан.
Типы готовых тестов
В то время как dbt имеет всего 4 готовых теста из коробки, Datapulse может предложить следующий широкий список готовых проверок:
| Тест | Описание | 
|---|---|
| Не NULL | Значение столбца не должно быть NULL | 
| Не равно | Значение столбца должно быть не равно указанному значению | 
| Больше | Значение столбца должно быть больше указанного значения | 
| Меньше | Значение столбца должно быть меньше указанного значения | 
| Включает | Значение столбца должно содержать указанное значение | 
| Не включает | Значение столбца не должно содержать указанное значение | 
| Только буквы | Значение столбца должно содержать только буквы | 
| Диапазон значений | Значение должно быть в указанном диапазоне (включительно) | 
| Одно из значений | Значение столбца должно быть значением из списка | 
| Тест | Описание | 
|---|---|
| ФИО | Значение столбца должно соответствовать формату ФИО | 
| Эл. почта | Значение столбца должно соответствовать формату электронной почты | 
| Мобильный телефон | Значение столбца должно соответствовать формату номера мобильного телефона | 
| Номер паспорта | Значение столбца должно соответствовать формату номера паспорта | 
| ИНН | Значение столбца должно соответствовать формату ИНН | 
| Тест | Описание | 
|---|---|
| Кол-во между | Количество по столбцу в разрезе указанной даты должно быть между указанными значениями | 
| Кол-во уникальных между | Уникальное количество ( count distinct) по столбцу в разрезе указанной даты должно быть между указанными значениями | 
| Персентиль по кол-ву | Количество по столбцу в разрезе указанной даты должно не превышать указанный персентиль | 
| Персентиль по кол-ву уникальных | Уникальное количество ( count distinct) по столбцу в разрезе указанной даты должно не превышать указанный персентиль | 
| Сумма по дате между | Сумма по столбцу в разрезе указанной даты должна быть между указанными значениями | 
| Сумма по дате персентиль | Сумма по столбцу в разрезе указанной даты должна не превышать указанный персентиль | 
| Тест | Описание | 
|---|---|
| Персентиль | Значение столбца не должно превышать указанный персентиль | 
| Стандартное отклонение | Значение столбца не должно отличаться от стандартного отклонения больше, чем на указанный порядок | 
| Тест | Описание | 
|---|---|
| Уникальный | Значение столбца не должно дублироваться | 
| Корректная ссылка | Значение столбца должно содержаться в указанном столбце другой таблицы | 
| Больше столбца | Значение столбца больше значения другого столбца | 
| Меньше столбца | Значение столбца меньше значения другого столбца | 
| Тест | Описание | 
|---|---|
| Отсутствуют данные | Нет разрезов по дате, у которых отсутствовали бы данные | 
| Стандартное отклонение количества строк | Количество строк в разрезе даты не должно отличаться от стандартного отклонения больше, чем на указанный порядок | 
Критичность теста
В Datapulse у теста можно определить его критичность:
- высокая
- средняя
- низкая
Критичность влияет на расчет балла качества данных - чем критичнее тест, тем сильнее на снижение балла качества данных влияет не выполнение теста и количество строк, которое тест не прошло.
Хранение ошибок
В Datapulse есть возможность сохранять в отдельную таблицу строки, которые не прошли проверку.
Перед этим необходимо в файле dbt_project.yml указать схему, в которой будут создаваться таблицы для хранения ошибок.
tests:
  +schema: ваша_схема
Для сохранения ошибок при заполнении параметров теста включите параметр "Хранить ошибки". Также для большинства тестов вы можете выбрать, какие столбцы таблицы сохранять в таблицу с ошибочными строками (в том случае, если вы не хотите хранить все столбцы ошибочной строки для оптимизации памяти).
Ошибочные строки будут сохранены в таблицу - схема_для_тестов.таблица_столбец_имятеста. Наименование таблицы вы всегда можете посмотреть в карточке теста.
Инкрементальное тестирование
Проверяемые таблицы могут содержать большое количество данных, что может сильно сказываться на времени выполнения теста. Также, если данные только записываются и не изменяются (как в большинстве случаев у DWH витрин), каждый раз проверять таблицу целиком может быть неоптимальным решением.
Для этого в Datapulse есть возможность инкрементального тестирования. Для этого укажите столбец инкремента (обычно это столбец даты: дата записи строки в таблицу) и в таком случае проверяться будут только последние записи - строки с наибольшим значением в выбранном столбце инкремента.
where load_dttm = (select max(load_dttm) from "schema"."table")
У некоторых тестов (особенно, которые связаны со статистикой: персентиль и стандартное отклонение) было бы некорректно брать только последние записи, так как это напрямую бы влияло на полученное статистическое значение и на результат теста в целом. Для этого в Datapulse предусмотрена возможность тестирования в рамках окна - тестирование данных, которые входят в последнее окно (N дней/месяцев/кварталов/лет).
where load_dttm >= (select max(load_dttm) from "schema"."table") - (2|| ' month')::interval
Карточка теста
В карточке теста отображает основная информация о нем, а также собранная статистика: календарь с результатами выполнения и статистика по строкам с ошибками

Просмотр SQL-теста
В карточке теста можно посмотреть его SQL, нажав кнопку "Получить SQL-теста".
Наименование готовых тестов
Готовые тесты от Datapulse автоматически сохраняются в папке проекта dbt и имеют префикс dpulse_.
Важно
Редактирование этих файлов может повлиять на работоспособность и появление критических ошибок.