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

Как гибридная Mesh разблокирует масштабное сотрудничество в dbt

· 6 мин. чтения
Jason Ganz

Одной из самых важных функций dbt является возможность для команд сотрудничать в создании и распространении организационных знаний.

Ранее это выглядело как работа команды в одном проекте dbt для создания набора преобразованных объектов в их платформе данных.

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

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

Гибкость dbt Mesh означает, что он может поддерживать широкий спектр паттернов и дизайнов. Сегодня давайте углубимся в один из паттернов, который показывает перспективы как способ объединения команд, работающих над очень разными развертываниями dbt.

Как гибридная Mesh обеспечивает сотрудничество между командами dbt Core и dbt Cloud

Сценарий — Компания с центральной командой данных использует dbt Core. Эта настройка хорошо работает для этой команды. Они хотят расширить свое влияние, чтобы ускорить принятие решений по всей организации. Текущая настройка dbt Core не подходит для вовлечения большего числа менее технических, нетехнических или менее частых участников.

Цель — Позволить трем доменным командам менее технических пользователей использовать и расширять центральные модели данных, полностью владея своими доменно-специфичными моделями dbt.

  • Центральная команда данных: Инженеры данных, комфортно работающие с dbt Core и интерфейсом командной строки (CLI), создающие и поддерживающие основные модели данных для всей организации.

  • Доменные команды: Аналитики данных, комфортно работающие с SQL, но не использующие CLI и предпочитающие сразу приступить к работе без управления локальными установками или обновлениями dbt Core. Команда должна строить преобразования, специфичные для их бизнес-контекста. Некоторые из этих пользователей могли пробовать dbt в прошлом, но не смогли успешно адаптироваться к настройке центральной команды.

Решение: Гибридная Mesh — Команды данных могут использовать dbt Mesh для соединения проектов между dbt Core и dbt Cloud, создавая рабочий процесс, в котором каждый работает в предпочитаемой среде, создавая общую линию, которая позволяет видеть, проверять и владеть данными по всему конвейеру данных.

Каждая команда будет полностью владеть своим кодом dbt, от разработки до развертывания, используя продукт, соответствующий их потребностям и возможностям, при этом делясь продуктами данных между командами, использующими как dbt Core, так и dbt Cloud.

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

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

Гибридная Mesh может быть принята как стабильный долгосрочный паттерн или как промежуточный этап, пока вы выполняете миграцию с dbt Core на dbt Cloud.

Как построить гибридную Mesh

Включение гибридной Mesh так же просто, как несколько дополнительных шагов для импорта метаданных из вашего проекта Core в dbt Cloud. После этого вы сможете управлять своей dbt Mesh как обычно, и все наши стандартные рекомендации по-прежнему применимы.

Шаг 1: Подготовьте ваш проект Core для доступа через dbt Mesh

Настройте публичные модели, чтобы они служили стабильными интерфейсами для нижестоящих проектов dbt.

  • Решите, какие модели из вашего проекта Core будут доступны в вашей Mesh. Для получения дополнительной информации о том, как настроить публичный доступ для этих моделей, обратитесь к странице доступа к моделям.
  • При необходимости настройте контракт модели для всех публичных моделей для лучшего управления.
  • Держите проекты dbt Core и dbt Cloud в отдельных репозиториях, чтобы обеспечить четкое разделение между моделями верхнего уровня, управляемыми командой dbt Core, и моделями нижнего уровня, обрабатываемыми командой dbt Cloud.

Шаг 2: Отразите каждый "производящий" проект Core в dbt Cloud

Это позволяет dbt Cloud знать о содержимом и метаданных вашего проекта, что, в свою очередь, позволяет другим проектам получать доступ к его моделям.

  • Создайте учетную запись dbt Cloud и проект dbt для каждого верхнего проекта Core.
    • Примечание: Если у вас есть переменные окружения в вашем проекте, переменные окружения dbt Cloud должны иметь префикс DBT_ (включая DBT_ENV_CUSTOM_ENV_ или DBT_ENV_SECRET). Следуйте инструкциям в этом руководстве, чтобы преобразовать их для dbt Cloud.
  • Каждый верхний проект Core должен иметь производственную среду в dbt Cloud. Вам нужно настроить учетные данные и переменные окружения в dbt Cloud, чтобы он разрешал имена отношений в те же места, где ваши рабочие процессы dbt Core развертывают эти модели.
  • Настройте merge job в производственной среде для выполнения dbt parse. Это позволит подключать нижестоящие проекты в dbt Mesh, создавая необходимые артефакты для перекрестных ссылок между проектами.
    • По желанию: Настройте регулярную задачу для выполнения dbt build вместо использования merge job для dbt parse, и централизуйте вашу оркестрацию dbt, переместив производственные запуски в dbt Cloud. Ознакомьтесь с этим руководством для получения более подробной информации о преобразовании ваших производственных запусков в dbt Cloud.
  • По желанию: Настройте регулярную задачу (например, ежедневно) для выполнения source freshness и docs generate. Это наполнит dbt Cloud дополнительными метаданными и включит функции в dbt Explorer, которые будут полезны обеим командам, включая линейность на уровне столбцов.

Шаг 3: Создайте и подключите ваши нижестоящие проекты к вашему проекту Core с использованием dbt Mesh

Теперь, когда dbt Cloud имеет необходимую информацию о вашем проекте Core, вы можете начать настройку ваших нижестоящих проектов, строя их на основе публичных моделей из проекта, который вы перенесли в Cloud на Шаге 2. Для этого:

  • Инициализируйте каждый новый нижестоящий проект dbt Cloud и создайте файл dependencies.yml.

  • В этом файле dependencies.yml добавьте имя проекта dbt из dbt_project.yml верхнего проекта(ов). Это устанавливает перекрестные ссылки между различными проектами dbt:

    # файл dependencies.yml в нижестоящем проекте dbt Cloud
    projects:
    - name: upstream_project_name
  • Используйте перекрестные ссылки для публичных моделей в верхнем проекте. Добавьте версию к ссылкам на версионные модели:

    select * from {{ ref('upstream_project_name', 'monthly_revenue') }}

И это все, что нужно! С этого момента доменные команды, которые владеют каждым проектом dbt, могут разрабатывать свои модели в соответствии с их собственными случаями использования. Теперь вы можете строить свою гибридную Mesh так, как хотите, используя полный набор функций dbt Cloud.

  • Оркестрируйте вашу Mesh, чтобы обеспечить своевременную доставку продуктов данных и сделать их доступными для нижестоящих потребителей.
  • Используйте dbt Explorer, чтобы отслеживать происхождение ваших данных до их источника.
  • Вовлекайте больше команд и подключайте их к вашей Mesh.
  • Стройте семантические модели и метрики в ваши проекты, чтобы запрашивать их с помощью семантического слоя dbt.

Заключение

В мире, где у организаций сложные и постоянно меняющиеся потребности в данных, нет универсального решения. Вместо этого специалистам по данным нужны гибкие инструменты, которые соответствуют их текущим потребностям. Гибридная Mesh представляет собой модель для такого подхода, где команды, которые комфортно работают и получают ценность от dbt Core, могут беспрепятственно сотрудничать с доменными командами на dbt Cloud.

Comments

Loading