Анализируйте данные в dbt
Начните с вопроса стейкхолдера и проанализируйте данные, чтобы ответить на него, не написав ни одной строки SQL
Введение
Как аналитик данных, вы играете ключевую роль в преобразовании сложных данных в надёжные и практичные инсайты для вашей команды. С помощью dbt вы можете использовать встроенные инструменты на базе ИИ для создания управляемых data models, изучения того, как они устроены, и даже запуска собственного анализа.
В этом quickstart вы узнаете, как:
- Использовать Catalog для просмотра и понимания data models как в dbt, так и в Snowflake data assets
- Использовать Insights для выполнения запросов с целью исследования и валидации данных
- Использовать Canvas для визуального создания собственных data models
- Повысить уверенность в работе, используя dbt как рабочее пространство, дополненное ИИ
Подробнее об инструментах, которые вы будете использовать:
- Catalog: Просматривайте ресурсы проекта (такие как models, tests и metrics), их lineage и шаблоны запросов, чтобы лучше понимать актуальное production‑состояние проекта.
- Insights: Исследуйте, проверяйте и запрашивайте данные с помощью интуитивного, контекстно насыщенного интерфейса, который объединяет технических и бизнес‑пользователей за счёт метаданных, документации, инструментов с ИИ‑поддержкой и мощных возможностей запросов.
- Canvas: Быстро получайте доступ к данным и трансформируйте их с помощью визуального интерфейса drag‑and‑drop и встроенного ИИ для генерации пользовательского кода.
Предварительные требования
Перед началом убедитесь, что:
- У вас есть доступ и настроенные учётные данные для проекта в dbt
- Ваша команда уже успешно запускала dbt job, поэтому models собраны и готовы к использованию
- У вас подключён и аутентифицирован git provider
Рабочий процесс аналитика
Кимико, аналитик в Jaffle Shop, замечает, что у компании появилось много новых продаж, и хочет исследовать наиболее важные данные, которые хранятся в их хранилище.
Вопрос: стейкхолдеру интересно, сколько клиентов вы привлекали помесячно за последние 12 месяцев.
Кимико задаётся вопросом: «Как мне найти данные в нашем проекте, которые помогут ответить на этот вопрос?»
Разбор вопроса стейкхолдера
Она переходит в каталог данных — Catalog, войдя в dbt и нажав Catalog в левой панели. Поскольку вопрос касается клиентов, Кимико начинает с поиска по слову “customers” в Catalog:
Она находит model с названием customers, которая, возможно, ей подходит. Кимико нажимает customers, чтобы открыть model. В описании указано: “Customer overview data Mart offering key details for each unique customer, one row per customer.”
Затем Кимико выбирает Columns, чтобы посмотреть, какие колонки используются в этой model.
Она замечает следующие колонки: customer_ID, customer_names и first_ordered_at.
Колонка first_ordered_at особенно привлекает внимание Кимико — она предполагает, что её можно использовать, чтобы определить, сколько клиентов было привлечено на основе даты их первого заказа.
Но сначала она решает поработать с данными напрямую, чтобы лучше их понять.
Запрос данных в Insights
На странице Customer model в Catalog Кимико выбирает Analyze data в выпадающем меню Open in.... Это позволяет выполнять запросы к данным Customer model. После открытия Insights уже содержит подготовленный запрос, готовый к выполнению.
Когда Кимико запускает запрос, она может просмотреть данные, лежащие в его основе. Тот же контекст, который она видела в Catalog, теперь доступен и в интерфейсе редактирования SQL.
Просматривая данные, она видит информацию по каждому клиенту и снова обращает внимание на колонку first_ordered_at. Кимико хочет написать запрос, но её навыки SQL немного подзабыты, поэтому она использует естественный язык в dbt Copilot:
Сколько новых клиентов мы получили в каждом месяце прошлого года? Я бы хотел(а) использовать мою модель клиентов и поле first ordered at, чтобы выполнить этот анализ.
dbt Copilot генерирует SQL, который Кимико решает использовать:
select
date_trunc('month', first_ordered_at) as month,
count(customer_id) as new_customers
from {{ ref('customers') }}
where
date_part('year', first_ordered_at) = date_part('year', current_date) - 1
and customer_type = 'new'
group by 1
order by 1;
Кимико нажимает Replace, чтобы перенести весь SQL в редактор, заменив исходный запрос. Она запускает новый запрос и просматривает результаты, но решает ещё раз воспользоваться Copilot, чтобы ограничить даты:
Можем ли мы ограничить даты 2024 годом?
Она проверяет новый фильтр на 2024 год и повторно запускает запрос:
select
date_trunc('month', first_ordered_at) as month,
count(customer_id) as new_customers
from {{ ref('customers') }}
where
date_part('year', first_ordered_at) = 2024
and customer_type = 'new'
group by 1
order by 1;
Результаты её устраивают, и она нажимает Details, чтобы посмотреть отчёт, сгенерированный ИИ, который включает заголовок и описание, исходный SQL и скомпилированный SQL.
Когда Кимико готова поделиться инсайтом со стейкхолдером, она нажимает Chart, чтобы увидеть график, автоматически заполненный данными из вкладки Data.
Она добавляет подписи к осям X и Y, например “Month of first order” и “Total new customers”, чтобы сделать итоговый отчёт более понятным. Затем она делает скриншот, чтобы поделиться им со стейкхолдером.
Кимико часто возвращается к этим данным, поэтому она решает добавить страницу в закладки, нажав Bookmark в правом верхнем углу. Также она экспортирует данные в CSV‑файл.
Визуализация результатов
После нескольких разговоров с коллегами Кимико узнаёт, что они выполняют очень похожие разовые запросы. Поэтому она решает взять свой долгоживущий запрос, который ранее добавила в закладки, и превратить его в полноценную dbt model с помощью Canvas. Это позволяет ей делиться результатом с другими, устранять дублирование работы и повышать эффективность команды.
Для этого она открывает запрос в Insights, нажимает Develop, затем *Develop in Canvas. SQL‑запрос открывается в визуальной форме, представленной в виде DAG.
Изучая model, она отмечает, что всё работает как ожидается: данные выбираются из customers, применяется фильтр на 2024 год, даты агрегируются по месяцам. Она запускает model в своей development‑среде и нажимает Commit, чтобы создать pull request.
Теперь вся команда Кимико — те, у кого есть такой же доступ, — может запускать эту model и видеть те же результаты! Более того, коллеги могут помогать ей улучшать model по мере усложнения запросов стейкхолдера, и Кимико будет получать пользу от их вклада.
Запрос становится моделью
В дальнейшем Кимико может возвращаться к проекту в Catalog и запускать model, чтобы получать самые актуальные результаты. Отсюда она может:
- Вручную запускать model, что также запускает tests и сохраняет версии, позволяя Кимико отслеживать изменения со временем
- Запускать запланированный job для выполнения dbt model, например, каждый понедельник для отчёта стейкхолдеру
- Настроить уведомление в Slack на случай сбоя job, чтобы она могла оперативно исправить проблемы



