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

Быстрый старт с семантическим слоем dbt Cloud и Snowflake

Обновлен
Semantic Layer
Snowflake
dbt Cloud
Quickstart
Intermediate
Menu

    Введение

    Семантический слой dbt, работающий на базе MetricFlow, упрощает настройку ключевых бизнес-метрик. Он централизует определения, избегает дублирования кода и обеспечивает легкий доступ к метрикам в последующих инструментах. MetricFlow помогает легче управлять метриками компании, позволяя вам определять метрики в вашем проекте dbt и запрашивать их в dbt Cloud с помощью команд MetricFlow.

    Этот гид по быстрому старту предназначен для пользователей dbt Cloud, использующих Snowflake в качестве своей платформы данных. Он сосредоточен на создании и определении метрик, настройке семантического слоя dbt в проекте dbt Cloud и запросе метрик в Google Sheets.

    Для пользователей на других платформах данных

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

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

    Предварительные требования

    • Вам нужен аккаунт dbt Cloud Trial, Team или Enterprise для всех развертываний. Свяжитесь с вашим представителем для настройки Single-tenant; в противном случае создайте аккаунт, используя это руководство.

    • Иметь правильную лицензию dbt Cloud и разрешения в зависимости от вашего плана:

       Подробнее о лицензии и разрешениях
    • Создайте пробный аккаунт Snowflake:

      • Выберите издание Enterprise Snowflake с доступом ACCOUNTADMIN. Учитывайте организационные вопросы при выборе облачного провайдера, обратитесь к Введению в облачные платформы Snowflake.
      • Выберите облачного провайдера и регион. Все облачные провайдеры и регионы будут работать, поэтому выберите тот, который вам больше нравится.
    • Базовое понимание SQL и dbt. Например, вы уже использовали dbt или прошли курс Основы dbt.

    Чему вы научитесь

    Это руководство охватывает следующие темы:

    Создание нового рабочего листа Snowflake и настройка среды

    1. Войдите в свой пробный аккаунт Snowflake.
    2. В пользовательском интерфейсе Snowflake (UI) нажмите + Worksheet в правом верхнем углу.
    3. Выберите SQL Worksheet, чтобы создать новый рабочий лист.

    Настройка среды Snowflake

    Данные, используемые здесь, хранятся в виде CSV-файлов в общедоступном S3-бакете, и следующие шаги помогут вам подготовить ваш аккаунт Snowflake для этих данных и загрузить их.

    Создайте новый виртуальный склад, две новые базы данных (одну для необработанных данных, другую для будущей разработки dbt) и две новые схемы (одну для данных jaffle_shop, другую для данных stripe).

    1. Выполните следующие SQL-команды одну за другой, вводя их в редакторе вашего нового рабочего листа SQL Snowflake, чтобы настроить вашу среду.

    2. Нажмите Run в правом верхнем углу пользовательского интерфейса для каждой из них:

    -- Создайте виртуальный склад с именем 'transforming'
    create warehouse transforming;

    -- Создайте две базы данных: одну для необработанных данных и другую для аналитики
    create database raw;
    create database analytics;

    -- В базе данных 'raw' создайте две схемы: 'jaffle_shop' и 'stripe'
    create schema raw.jaffle_shop;
    create schema raw.stripe;

    Загрузка данных в Snowflake

    Теперь, когда ваша среда настроена, вы можете начать загрузку данных в нее. Вы будете работать в базе данных raw, используя схемы jaffle_shop и stripe для организации ваших таблиц.

    1. Создайте таблицу клиентов. Сначала удалите все содержимое (очистите) в редакторе рабочего листа Snowflake. Затем выполните эту SQL-команду, чтобы создать таблицу клиентов в схеме jaffle_shop:
    create table raw.jaffle_shop.customers
    ( id integer,
    first_name varchar,
    last_name varchar
    );

    Вы должны увидеть сообщение «Таблица CUSTOMERS успешно создана».

    1. Загрузите данные. После создания таблицы удалите все содержимое в редакторе. Выполните эту команду, чтобы загрузить данные из S3-бакета в таблицу клиентов:
    copy into raw.jaffle_shop.customers (id, first_name, last_name)
    from 's3://dbt-tutorial-public/jaffle_shop_customers.csv'
    file_format = (
    type = 'CSV'
    field_delimiter = ','
    skip_header = 1
    );

    Вы должны увидеть подтверждающее сообщение после выполнения команды.

    1. Создайте таблицу orders. Удалите все содержимое в редакторе. Выполните следующую команду, чтобы создать...
    create table raw.jaffle_shop.orders
    ( id integer,
    user_id integer,
    order_date date,
    status varchar,
    _etl_loaded_at timestamp default current_timestamp
    );

    Вы должны увидеть подтверждающее сообщение после выполнения команды.

    1. Загрузите данные. Удалите все содержимое в редакторе, затем выполните эту команду, чтобы загрузить данные в таблицу заказов:
    copy into raw.jaffle_shop.orders (id, user_id, order_date, status)
    from 's3://dbt-tutorial-public/jaffle_shop_orders.csv'
    file_format = (
    type = 'CSV'
    field_delimiter = ','
    skip_header = 1
    );

    Вы должны увидеть подтверждающее сообщение после выполнения команды.

    1. Создайте таблицу payment. Удалите все содержимое в редакторе. Выполните следующую команду, чтобы создать таблицу платежей:
    create table raw.stripe.payment
    ( id integer,
    orderid integer,
    paymentmethod varchar,
    status varchar,
    amount integer,
    created date,
    _batched_at timestamp default current_timestamp
    );

    Вы должны увидеть подтверждающее сообщение после выполнения команды.

    1. Загрузите данные. Удалите все содержимое в редакторе. Выполните следующую команду, чтобы загрузить данные в таблицу платежей:
    copy into raw.stripe.payment (id, orderid, paymentmethod, status, amount, created)
    from 's3://dbt-tutorial-public/stripe_payments.csv'
    file_format = (
    type = 'CSV'
    field_delimiter = ','
    skip_header = 1
    );

    Вы должны увидеть подтверждающее сообщение после выполнения команды.

    1. Проверьте данные. Убедитесь, что данные загружены, выполнив эти SQL-запросы. Подтвердите, что вы видите вывод для каждого из них, как на следующем изображении подтверждения.
    select * from raw.jaffle_shop.customers;
    select * from raw.jaffle_shop.orders;
    select * from raw.stripe.payment;
    Изображение показывает вывод подтверждения Snowflake, когда данные загружены правильно в редакторе.Изображение показывает вывод подтверждения Snowflake, когда данные загружены правильно в редакторе.

    Подключение dbt Cloud к Snowflake

    Существует два способа подключения dbt Cloud к Snowflake. Первый вариант — Partner Connect, который предоставляет упрощенную настройку для создания вашего аккаунта dbt Cloud из вашего нового пробного аккаунта Snowflake. Второй вариант — создать ваш аккаунт dbt Cloud отдельно и самостоятельно настроить подключение к Snowflake (подключение вручную). Если вы хотите быстро начать, dbt Labs рекомендует использовать Partner Connect. Если вы хотите настроить все с самого начала и ознакомиться с процессом настройки dbt Cloud, dbt Labs рекомендует подключение вручную.

    Настройка управляемого репозитория dbt Cloud

    Если вы использовали Partner Connect, вы можете перейти к инициализации вашего проекта dbt, так как Partner Connect предоставляет вам управляемый репозиторий. В противном случае вам нужно будет создать ваше подключение к репозиторию.

    Инициализация вашего проекта dbt и начало разработки

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

    Теперь, когда у вас настроен репозиторий, вы можете инициализировать ваш проект и начать разработку в dbt Cloud, используя IDE:

    1. Нажмите Начать разработку в IDE dbt Cloud. Это может занять несколько минут, так как ваш проект впервые запускается, устанавливая соединение с git, клонируя ваш репозиторий и тестируя соединение с хранилищем.
    2. Над деревом файлов слева нажмите Инициализировать ваш проект. Это создаст структуру папок с примерами моделей.
    3. Сделайте ваш первый коммит, нажав Коммит и синхронизация. Используйте сообщение коммита initial commit. Это создаст первый коммит в вашем управляемом репозитории и позволит вам открыть ветку, где вы можете добавить новый код dbt.
    4. Теперь вы можете напрямую запрашивать данные из вашего хранилища и выполнять dbt run. Вы можете попробовать это сейчас:
      • Удалите папку models/examples в Проводнике файлов.
      • Нажмите + Создать новый файл, добавьте этот запрос в новый файл и нажмите Сохранить как, чтобы сохранить новый файл:
        select * from raw.jaffle_shop.customers
      • В командной строке внизу введите dbt run и нажмите Enter. Вы должны увидеть сообщение о успешном выполнении dbt run.

    Создание вашего проекта dbt

    Следующий шаг — построить ваш проект. Это включает добавление источников, моделей стадий, бизнес-определенных сущностей и пакетов в ваш проект.

    Добавление источников

    Источники в dbt — это необработанные таблицы данных, которые вы будете преобразовывать. Организуя определения источников, вы документируете происхождение ваших данных. Это также делает ваш проект и трансформацию более надежными, структурированными и понятными.

    У вас есть два варианта работы с файлами в IDE dbt Cloud:

    • Создать новую ветку (рекомендуется) — Создайте новую ветку, чтобы редактировать и коммитить ваши изменения. Перейдите в Управление версиями на левой боковой панели и нажмите Создать ветку.
    • Редактировать в защищенной основной ветке — Если вы предпочитаете редактировать, форматировать или проверять файлы и выполнять команды dbt непосредственно в вашей основной ветке git, используйте этот вариант. IDE dbt Cloud предотвращает коммиты в защищенную ветку, поэтому вам будет предложено коммитить ваши изменения в новую ветку.

    Назовите новую ветку build-project.

    1. Наведите курсор на директорию models и нажмите на меню с тремя точками (...), затем выберите Создать файл.
    2. Назовите файл staging/jaffle_shop/src_jaffle_shop.yml, затем нажмите Создать.
    3. Скопируйте следующий текст в файл и нажмите Сохранить.

    Добавление моделей стадий

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

    Добавление бизнес-определенных сущностей

    Этот этап включает создание моделей, которые служат слоем сущностей или концептуальным слоем вашего проекта dbt, делая данные готовыми для отчетности и анализа. Он также включает добавление пакетов и временной оси MetricFlow, которые расширяют функциональность dbt.

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

    Создание семантических моделей

    Семантические модели содержат множество типов объектов (таких как сущности, меры и измерения), которые позволяют MetricFlow строить запросы для определения метрик.

    • Каждая семантическая модель будет 1:1 с моделью dbt SQL/Python.
    • Каждая семантическая модель будет содержать (в лучшем случае) 1 основную или естественную сущность.
    • Каждая семантическая модель будет содержать ноль, одну или много внешних или уникальных сущностей, используемых для соединения с другими сущностями.
    • Каждая семантическая модель может также содержать измерения, меры и метрики. Это то, что фактически передается и запрашивается вашим последующим инструментом BI.

    В следующих шагах семантические модели позволяют вам определить, как интерпретировать данные, связанные с заказами. Они включают сущности (например, столбцы ID, служащие ключами для соединения данных), измерения (для группировки или фильтрации данных) и меры (для агрегации данных).

    Сущности

    Сущности — это концепция реального мира в бизнесе, служащая основой вашей семантической модели. Это будут столбцы ID (например, order_id) в наших семантических моделях. Они будут служить ключами соединения с другими семантическими моделями.

    Измерения

    Измерения — это способ группировки или фильтрации информации на основе категорий или времени.

    Меры

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

    Определение метрик

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

    Существуют различные типы метрик, которые вы можете настроить:

    • Метрики конверсии — Отслеживают, когда базовое событие и последующее событие конверсии происходят для сущности в течение заданного периода времени.
    • Кумулятивные метрики — Агрегируют меру за заданное окно. Если окно не указано, окно будет накапливать меру за весь записанный период времени. Обратите внимание, что вы должны создать модель временной оси перед добавлением кумулятивных метрик.
    • Производные метрики — Позволяют выполнять вычисления на основе метрик.
    • Простые метрики — Непосредственно ссылаются на одну меру без участия дополнительных мер.
    • Метрики отношения — Включают числитель и знаменатель метрики. Строка ограничения может быть применена как к числителю, так и к знаменателю, или отдельно к числителю или знаменателю.

    Добавление второй семантической модели в ваш проект

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

    Давайте расширим аналитические возможности вашего проекта, добавив еще одну семантическую модель в вашу другую модель рынков, такую как: dim_customers.yml.

    Тестирование и запрос метрик

    Запуск производственного задания

    Настройка семантического слоя dbt

    Запрос семантического слоя

    Эта страница поможет вам подключиться и использовать следующие интеграции для запроса ваших метрик:

    Семантический слой dbt позволяет вам подключаться и запрашивать ваши метрики с помощью различных доступных инструментов, таких как Google Sheets, Hex, Tableau и другие.

    Запрашивайте метрики, используя другие инструменты, такие как интеграции первого класса, API семантического слоя и экспорты, чтобы раскрыть таблицы метрик и измерений в вашей платформе данных и создать пользовательскую интеграцию с такими инструментами, как PowerBI.

    Подключение и запрос с помощью Google Sheets

    Подключение и запрос с помощью Hex

    Что дальше

    Отличная работа по завершению комплексного руководства по семантическому слою dbt 🎉! Надеюсь, вы получили четкое представление о том, что такое семантический слой dbt, его назначение и когда его использовать в ваших проектах.

    Вы узнали, как:

    • Настроить вашу среду Snowflake и dbt Cloud, включая создание рабочих листов и загрузку данных.
    • Подключить и настроить dbt Cloud с Snowflake.
    • Создавать, тестировать и управлять проектами dbt Cloud, сосредотачиваясь на метриках и семантических слоях.
    • Запускать производственные задания и запрашивать метрики с помощью наших доступных интеграций.

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

    Вот некоторые дополнительные ресурсы, которые помогут вам продолжить ваше путешествие:

    0