Audit_helper в dbt: Поднимаем аудит данных на новый уровень
Аудит таблиц — это важная часть ежедневных задач аналитиков данных, особенно при рефакторинге таблиц, созданных с использованием SQL-хранимых процедур или Alteryx Workflows. В этой статье мы представляем, как пакет audit_helper
может (как следует из названия) помочь в процессе ауди та таблиц, чтобы убедиться, что рефакторинг модели дает (почти) такой же результат, как и оригинальная, основываясь на нашем опыте использования этого пакета для поддержки наших клиентов в Indicium Tech®.
Введение
Аналитикам данных (AE) и аналитикам часто приходится рефакторить (или переводить) хранимые процедуры SQLServer®, Alteryx Workflows® или другие инструменты моделирования в модели dbt, или даже рефакторить модель dbt для обновления ее источников данных. Также часто некоторые бизнес-правила применяются в разных моделях (и инструментах), и мы, как аналитики, должны убедиться, что результаты совпадают. Однако обеспечение совпадения значений в оригинальной таблице и в рефакторенной раньше было сложной задачей, требующей много ручного кодирования и некоторых общих тестов (таких как подсчет количества строк или суммирование всех значений в столбце).
Этот подход не только отнимает много времени, но и подвержен наивным предположениям о совпадении значений на основе агрегированных мер (таких как подсчеты или суммы). Чтобы предложить лучший, более точный подход к аудиту, dbt Labs создали пакет audit_helper
. audit_helper
— это пакет для dbt, основная цель которого — аудит данных путем сравнения двух таблиц (оригинальной и рефакторенной модели). Он использует простую и интуитивно понятную структуру запросов, которая позволяет быстро сравнивать таблицы на основе значений столбцов, количества строк и даже типов столбцов (например, чтобы убедиться, что данный столбец является числовым как в вашей таблице, так и в оригинальной). На рисунке 1 графически показан рабочий процесс и место audit_helper
в процессе рефакторинга.
Теперь, когда понятно, где пакет audit_helper
находится в процессе рефакторинга, важно подчеркнуть преимущества использования audit_helper (и, в конечном итоге, аудита рефакторенных моделей). Среди преимуществ можно упомянуть:
- Обеспечение качества: Убедитесь, что рефакторенная модель достигает того же результата, что и оригинальная модель, которая подвергается рефакторингу.
- Простой и интуитивно понятный код: Поскольку audit_helper опирается на макросы dbt, он был разработан как интуитивно понятный инструмент, работающий на простых SQL-запросах.
- Четкий вывод: Audit_helper предоставляет четкий вывод, показывающий, насколько ваша рефакторенная таблица соответствует оригинальной.
- Видимость проекта: Audit_helper дает видимость процесса рефакторинга, показывая, как ваш код дает те же результаты как в строковом, так и в столбцовом сравнении.
- Гибкость для сравнения строк и столбцов: Легко быстро сравнить результаты в строках или столбцах с помощью готовых шаблонов, которые требуют только указания имен ваших столбцов и оригинальных моделей.
Далее мы предоставим инструкции по установке audit_helper в ваш проект dbt, как запустить сравнение строк (с макросом compare_queries
), сравнение столбцов (с compare_column_values
) и дадим несколько советов по использованию audit_helper
.
Инструкции по установке
Начнем с подготовки пакета audit_helper для работы в нашем проекте. Важно отметить, что пакет audit_helper
должен работать на версиях dbt выше или равных 1.2.0 и ниже 2.0.0. Далее два шага помогут вам установить и запустить audit_helper
.
-
Сначала добавьте файл
packages.yml
в ваш проект dbt, если его еще нет. Внутри файлаpackages.yml
добавьте пакетaudit_helper
, скопировав и вставив код ниже. Обратите внимание, что этот файл должен находиться на том же уровне, что и ваш файлdbt_project.yml
.packages:
- package: dbt-labs/audit_helper
version: 0.7.0 -
Запустите
dbt deps
в командной строке, чтобы установить пакет(ы). Пакеты устанавливаются в директориюdbt_packages
— по умолчанию эта директория игнорируется git, чтобы избежать дублирования исходного кода пакета. Для получения дополнительной информации о использовании пакетов в вашем проекте dbt, ознакомьтесь с документацией dbt.
Теперь, когда audit_helper
установлен, давайте поговорим о его двух основных макросах:
compare_queries
— для аудита строкcompare_column_values
— для аудита значений в столбцах.
Аудит строк (compare_queries
)
Согласно документации пакета audit_helper
, этот макрос полезен, когда:
- Вам нужно отфильтровать записи из одного из отношений,
- Некоторые столбцы должны быть переименованы или преобразованы, чтобы совпадать,
- Но вы хотите сравнить только несколько столбцов, так как проще написать столбцы, которые вы хотите сравнить, чем те, которые вы хотите исключить.