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-запрос к конкретной витрине и к конкретному столбцу.
Данный тесты предназначаются для особых случаев, когда у конкретной витрины есть собственные правила проверки качества.