Перейти к основному содержимому

Представляем dbt_project_evaluator: Автоматическая оценка вашего dbt проекта на соответствие лучшим практикам

· 7 мин. чтения
Grace Goheen

Почему мы это создали: Краткая история команды профессиональных услуг dbt Labs

Если вы посетили Coalesce 2022, вы знаете, что секрет раскрыт — команда профессиональных услуг dbt Labs — это не просто группа опытных консультантов по данным; мы также межгалактическая группа инопланетян, путешествующих по Млечному Пути с миссией помочь аналитическим инженерам успешно внедрять и управлять dbt по всей галактике.

Не верите мне??? Вот фотографическое доказательство.

Редкое фотографическое доказательство команды профессиональных услуг dbt LabsРедкое фотографическое доказательство команды профессиональных услуг dbt Labs

С момента основания dbt Labs наша команда работала с различными командами по данным — от перегруженной команды из одного человека до мультивселенной данных.

В ходе этих взаимодействий мы начали замечать общие проблемы, с которыми сталкиваются многие аналитические инженеры при масштабировании своих dbt проектов:

  • Отсутствие оповещений, когда модели данных выдают некорректные результаты
  • Длительное время выполнения при построении или запросе модели
  • Дублирование кода и различия в определениях метрик между командами
  • Недостаток знаний о том, что представляет собой модель или поле
  • Потеря времени разработчиков на поиск и чтение неаккуратных SQL файлов

Возможно, ваша команда сталкивается с некоторыми из этих проблем прямо сейчас 👀 И это нормально! Мы знаем, что создание эффективного, масштабируемого dbt проекта требует много усилий и умственных затрат. Возможно, вы унаследовали устаревший dbt проект с горой технического долга. Возможно, вы начинаете с нуля. В любом случае, может быть сложно понять, как лучше всего настроить вашу команду на успех. Не волнуйтесь, вы в правильном месте!

Решая эти проблемы снова и снова, команда профессиональных услуг начала оттачивать наши лучшие практики работы с dbt и то, как аналитические инженеры могли бы улучшить свой dbt проект. Мы добавили «обзоры решений» в наш список предлагаемых услуг — взаимодействия с клиентами, в которых мы оцениваем данный dbt проект и предоставляем конкретные рекомендации по улучшению производительности, экономии времени разработчиков и предотвращению неправильного использования функций dbt. И в стремлении поделиться этими лучшими практиками с более широкой сообществом dbt, мы разработали много контента. Мы писали статьи в блоге разработчиков (см. 1, 2, и 3), давали доклады на Coalesce, и создавали учебные курсы.

Снова и снова мы обнаруживали, что когда команды следуют этим лучшим практикам, их проекты становятся более:

  • Удобными: Результаты данных надежны с надлежащими оповещениями
  • Быстрыми: Задачи выполняются более эффективно без узких мест в моделях с длительным временем выполнения
  • Организованными: Разработчики могут быстро находить, читать и понимать код, который им нужно обновить
  • Масштабируемыми: Больше никаких "черных дыр", дублирование кода устранено, что позволяет вашему проекту расти с легкостью

Даже с учетом всех этих отличных ресурсов, оценка dbt проекта все еще требовала значительного времени на разработку, чтобы точно определить, где и как применять эти лучшие практики.

Именно тогда у нас появилась идея, изменяющая пространство: что если бы мы могли сжать все наши идеи о лучших практиках в один действенный инструмент, чтобы автоматизировать процесс обнаружения этих несоответствий, чтобы аналитические инженеры могли сразу понять, где их проекты отклоняются от наших лучших практик и были в состоянии улучшить свои проекты самостоятельно.

Перенесемся на шесть месяцев вперед в процессе разработки…

Родился dbt_project_evaluator: пакет dbt, который использует общий язык SQL, моделей и тестов для выявления и утверждения конкретных рекомендаций для данного dbt проекта.

Как работает пакет dbt_project_evaluator

Когда вы устанавливаете и запускаете этот пакет в своем dbt проекте, он:

  1. Преобразует объект graph — который является переменной, содержащей информацию о узлах в вашем dbt проекте — в таблицу, доступную для запросов. Это позволяет нам писать SQL запросы к табличному представлению вашего .
  2. Фиксирует каждое несоответствие установленной «лучшей практике» в модели dbt.
  3. Тестирует эти новые модели, чтобы предупредить вас о наличии несоответствий в вашем dbt проекте.

В настоящее время пакет dbt_project_evaluator охватывает пять основных категорий:

КатегорияПримеры лучших практик
Моделирование- Каждый сырой источник имеет одно-ко-одному отношение с моделью подготовки для централизации очистки данных.
- Каждая модель может быть отслежена до объявленного источника в dbt проекте (т.е. нет "корневых" моделей).
- Разветвление в конце DAG остается ниже заданного порога.
Тестирование- У каждой модели есть , который правильно тестируется.
- Процент моделей, к которым применен минимум 1 тест, больше или равен заданному порогу.
Документация- У каждой модели есть описание.
- Процент моделей, имеющих описание, больше или равен заданному порогу.
Структура- Все модели названы с соответствующим префиксом в соответствии с их типами моделей (например, модели подготовки имеют префикс stg_).
- SQL файл для каждой модели находится в подкаталоге, соответствующем типу модели (например, промежуточные модели находятся в промежуточном подкаталоге).
- Каждый подкаталог моделей содержит один .yml файл, который включает тесты и документацию для всех моделей в данном подкаталоге.
Производительность- Каждая модель, которая напрямую подает данные в экспозицию, материализуется как .
- Ни одна модель не зависит от цепочек "нефизически материализованных" моделей, превышающих заданный порог.

Для полного актуального списка охваченных правил, ознакомьтесь с README пакета, который описывает для каждого несоответствия лучшей практике:

  • Определение и поясняющий пример
  • Причина для пометки несоответствия
  • Любые известные исключения из правила
  • Как устранить проблему

Могут быть конкретные ситуации, когда вам нужно отойти от наших лучших практик. Это на самом деле нормально, если вы рассмотрели несоответствие и приняли активное решение сделать что-то другое. Мы создали этот инструмент с простыми механизмами для настройки поведения пакета, включая:

  • Отключение модели пакета, чтобы исключить лучшую практику из всего процесса оценки
  • Переопределение переменных для настройки как оценивается лучшая практика
  • Документирование конкретных исключений проекта из лучшей практики в seed файле

Для инструкций и фрагментов кода для каждого метода настройки, ознакомьтесь с README.

Попробуйте!

Чтобы попробовать пакет в вашем собственном проекте:

  1. Установите пакет: Проверьте dbt Hub для последних инструкций по установке или прочитайте документацию для получения дополнительной информации о установке пакетов.
  2. Запустите и протестируйте все модели в пакете: Выполните команду dbt build --select package:dbt_project_evaluator.
  3. Определите любые предупреждения: Каждое предупреждение теста указывает на наличие типа несоответствия.

Для каждого предупреждения, которое появляется:

  1. Определите имя модели.
  2. Найдите соответствующую документацию в README пакета.
  3. Запросите модель, чтобы найти конкретные случаи проблемы в вашем проекте.
  4. Либо исправьте проблему(ы), либо настройте пакет, чтобы исключить проблему(ы).

Чтобы автоматически поддерживать качество проекта по мере расширения вашей команды, вы можете обеспечить соответствие лучшим практикам dbt Labs для всех будущих изменений кода, добавив этот пакет в качестве проверки CI. Каждый раз, когда один из членов вашей команды (или вы сами) открывает PR, проверка CI автоматически гарантирует, что новые изменения кода не вводят новые несоответствия.

Вы можете рассматривать это как "линтинг" вашего dbt проекта, чтобы он соответствовал нашим лучшим практикам — так же, как вы могли бы линтить ваш SQL код, чтобы он соответствовал вашему стилевому руководству.

Чтобы добавить этот пакет в качестве проверки CI:

  1. Переопределите серьезность ваших тестов, используя переменную окружения.
  2. Запустите этот пакет как шаг в вашей CI задаче.

Чтобы посмотреть полную демонстрацию использования этого пакета более подробно, обязательно посмотрите мой доклад на Coalesce ниже [демонстрация начинается на 7:35].


Если что-то не работает должным образом или у вас есть идеи для будущей функциональности, откройте проблему в репозитории Github или даже внесите свой код!

Вместе мы можем гарантировать, что dbt проекты по всей галактике настроены на успех, когда они растут до бесконечности и дальше.

Инопланетянка Грейслайн возвращается в центр управления миссией dbt Labs... пока чтоИнопланетянка Грейслайн возвращается в центр управления миссией dbt Labs... пока что

Comments

Loading