Закрыть
Получить бесплатный доступ к DataPulse
Наш менеджер свяжется с вами для предоставления бесплатного доступа и презентует наш сервис
Не стоит даже говорить о том, что качество данных в настоящее время основополагающая вещь в построении любого хранилища данных. Если раньше главной задачей было построение оперативной отчетности, то сейчас требования к DWH существенно изменились. Раньше, если мы говорили про тестирование, имелось в виду тестирование функционала систем или приложений, и, наконец, культура тестирования пришла и в мир хранилищ данных. Сейчас недостаточно просто построить витрину и поставить ее на расписание. Важно еще, чтобы была уверенность – в витрине качественные данные без ошибок.
Про основы data quality и его самые значимые метрики я уже писал в нашем телеграмм канале.
DBT предоставляет функционал по настройке тестирования ваших витрин – dbt test. Замечательная и весьма функциональная вещь.

Что такое тест?

Тест – SQL-запрос к таблице, который ищет строки с некорректными данными.
К примеру: если проверка на NULL, то SQL-запрос будет вида

Generic vs Singular тесты

В dbt есть два вида тестов:
  • generic тесты – преднастроенные, которые можно переиспользовать
  • singular тесты – кастомные тесты для конкретной витрины


Generic tests

Чаще всего, конечно, используются generic тесты, так как чаще всего мы проверяем банальные вещи: дубли, пропуски, ссылочная целостность и т.д.
Вот пример проверки на NULL:
Тест из примера принимает два параметра: model и column_name. Это зарезервированные параметры, о которых речь пойдет далее. Так же можно указывать любые свои параметры, значения которых будут определяться для каждой модели и столбца отдельно.
Такой тест можно переиспользовать, просто задав в метаданных .yml.
Вот пример, как к модели и к определенному столбцу привязывается данный тест:
Зарезервированные параметры model и column_name будут определены автоматически при запуске теста. В них будут переданы наименование модели и столбца, под которыми определен тест.
Сам dbt имеет встроенные тесты, их пока четыре штуки: проверка на NULL, проверка на уникальность, ссылочная целостность и допустимые значения.
В Datapulse на текущий момент порядка 30 преднастроенных тестов, и мы продолжаем расширять этот список.
Пример использования встроенного теста на уникальность:


Singular tests

Здесь все еще проще. Просто пишем SQL-запрос безо всяких переменных. Обращается SQL-запрос к конкретной витрине и к конкретному столбцу.
Пример такого теста:
Данный тесты предназначаются для особых случаев, когда у конкретной витрины есть собственные правила проверки качества.

Параметры тестов

До этого я уже писал про два зарезервированных параметра у тестов: model и column_name.
Есть также следующие параметры:
Параметры указываются в разделе config.
Пример указания параметров в метаданных модели у generic теста:
Или пример указания параметров в SQL-файле у singular теста:
У Datapulse есть свои встроенные параметры, которых нет в dbt. К примеру, возможность инкрементального тестирования для оптимизации работы тестов или критичность теста.

Переменные в тестах

Вы можете передавать переменные в generic тесты.
Пример указания переменных:
В данном примере кастомными переменными выступают column_value и selected_columns.
  • column_value – значение, которое не должно превышать значение проверяемого столбца;
  • selected_columns – столбцы, значения которых требуется сохранить в базе при выявлении ошибки.

Вызов теста

В dbt core тесты вызываются посредством следующей консольной команды
В данном примере мы запускаем все generic тесты.
А данной командой запускаем конкретный тест

Логирование работы тестов

Как и в части логирования отработки моделей dbt предоставляет из коробки лишь возможность записывать логи в файл.
Для записи логов в базу, что гораздо более удобно, потребуется воспользоваться сторонней библиотекой dbt_artifacts.
В Datapulse из коробки реализована запись логов в ваше DWH. А также доступен дашборд, с помощью которого вы можете мониторить «здоровье» ваших витрин.

Хранение ошибок в базе

Если у теста вы проставили store_faiures, ошибочные строки будут сохранены в отдельную таблицу.
Таблица будет иметь то же название, что и имя теста (name). Если же вы не указали name у теста, то оно будет сгенерировано автоматически.
Чтобы таблицы для хранения результатов тестов создавались в отдельной схеме, в dbt_project.yml укажите следующее:

Datapulse и dbt test

Datapulse упрощает использование dbt и расширяет его возможности в части data quality.
Вам не нужно будет разбираться, как правильно указывать метаданные в бесчисленных yml-файлах. Все это реализовано под капотом нашего графического интерфейса.
Также в Datapulse имеется широкий набор встроенных проверок поэтому вам не придется самим писать SQL-запросы.
И самое главное, из коробки Datapulse доступно логирование в ваш DWH результатов тестов, и готовый дашборд, который мониторит качество данных ваших витрин.

закажите
демо-версию
datapulse

оставьте ваши контакты и наш менеджер свяжется с вами
Закрыть

Получить бесплатный доступ к DataPulse

Наш менеджер свяжется с вами для предоставления бесплатного доступа и презентует наш сервис