Быстрый старт для dbt Semantic Layer и Snowflake
Введение
Semantic Layer, работающий на базе MetricFlow, упрощает настройку ключевых бизнес-метрик. Он централизует определения, помогает избегать дублирования кода и обеспечивает простой доступ к метрикам в downstream-инструментах. MetricFlow упрощает управление метриками компании, позволяя определять метрики в вашем dbt-проекте и выполнять к ним запросы в dbt с помощью команд MetricFlow.
📹 Узнайте о семантическом слое dbt с помощью видеокурсов по запросу!
Изучите наш курс по семантическому слою dbt, чтобы узнать, как определять и запрашивать метрики в вашем проекте dbt.
Кроме того, погрузитесь в мини-курсы по запросам к семантическому слою dbt в ваших любимых инструментах: Tableau, Excel, Hex и Mode.
Этот quickstart рассчитан на пользователей dbt, которые используют Snowflake в качестве платформы данных. Он сосредоточен на создании и определении метрик, настройке Semantic Layer в проекте dbt и запросах к метрикам в Google Sheets.
Если вы используете другую платформу данных, вы также можете следовать этому руководству — но потребуется адаптировать настройку под конкретную платформу. Подробнее см. в разделе для пользователей на других платформах.
Предварительные требования
-
Для всех деплоев вам нужна учетная запись dbt уровня Trial, Starter или Enterprise.
-
Убедитесь, что у вас корректная лицензия dbt и права доступа согласно вашему тарифу:
Подробнее о лицензии и правах доступа -
Создайте пробный аккаунт Snowflake:
- Выберите редакцию Snowflake Enterprise с доступом ACCOUNTADMIN. При выборе облачного провайдера учитывайте вопросы вашей организации и см. Snowflake: Introduction to Cloud Platforms.
- Выберите облачного провайдера и регион. Подойдут любые провайдеры и регионы — выбирайте удобные вам.
-
Пройдите руководство Quickstart для dbt и Snowflake.
-
Базовое понимание SQL и dbt. Например, вы уже использовали dbt или прошли курс dbt Fundamentals.
Для пользователей других платформ данных
Если вы используете платформу данных, отличную от Snowflake, это руководство также применимо. Вы можете адаптировать настройку под свою платформу, следуя инструкциям по созданию учетной записи и загрузке данных, приведенным во вкладках ниже для каждой конкретной платформы.
Остальная часть руководства универсальна для всех поддерживаемых платформ и позволяет в полной мере использовать Semantic Layer.
- BigQuery
- Databricks
- Microsoft Fabric
- Redshift
- Starburst Galaxy
Откройте новую вкладку и выполните следующие быстрые шаги по настройке учетной записи и загрузке данных:
Откройте новую вкладку и выполните следующие быстрые шаги по настройке учетной записи и загрузке данных:
Откройте новую вкладку и выполните следующие быстрые шаги по настройке учетной записи и загрузке данных:
Откройте новую вкладку и выполните следующие быстрые шаги по настройке учетной записи и загрузке данных:
Откройте новую вкладку и выполните следующие быстрые шаги по настройке учетной записи и загрузке данных:
Создайте новый worksheet в Snowflake и настройте окружение
- Войдите в свой пробный аккаунт Snowflake.
- В пользовательском интерфейсе Snowflake (UI) нажмите + Worksheet в правом верхнем углу.
- Выберите SQL Worksheet, чтобы создать новый рабочий лист.
Настройка и загрузка данных в Snowflake
Данные, используемые в этом разделе, хранятся в виде CSV‑файлов в публичном S3‑бакете. Следующие шаги проведут вас через процесс подготовки аккаунта Snowflake для работы с этими данными и их загрузки.
-
Создайте новый виртуальный warehouse, две новые базы данных (одну для сырых данных, вторую — для будущей разработки в dbt) и две новые схемы (одну для данных
jaffle_shop, другую — для данныхstripe).Для этого выполните следующие SQL‑команды: введите их в Editor нового worksheet в Snowflake и нажмите Run в правом верхнем углу интерфейса:
create warehouse transforming;
create database raw;
create database analytics;
create schema raw.jaffle_shop;
create schema raw.stripe; -
В базе данных
rawи схемахjaffle_shopиstripeсоздайте три таблицы и загрузите в них соответствующие данные:-
Сначала удалите всё содержимое (очистите Editor) в worksheet Snowflake. Затем выполните следующую SQL‑команду для создания таблицы
customer:create table raw.jaffle_shop.customers
( id integer,
first_name varchar,
last_name varchar
); -
Очистите Editor, затем выполните эту команду для загрузки данных в таблицу
customer: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
); -
Очистите Editor (оставьте его пустым), затем выполните эту команду для создания таблицы
orders:create table raw.jaffle_shop.orders
( id integer,
user_id integer,
order_date date,
status varchar,
_etl_loaded_at timestamp default current_timestamp
); -
Очистите Editor, затем выполните эту команду для загрузки данных в таблицу
orders: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
); -
Очистите Editor (оставьте его пустым), затем выполните эту команду для создания таблицы
payment:create table raw.stripe.payment
( id integer,
orderid integer,
paymentmethod varchar,
status varchar,
amount integer,
created date,
_batched_at timestamp default current_timestamp
); -
Очистите Editor, затем выполните эту команду для загрузки данных в таблицу
payment: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
);
-
-
Убедитесь, что данные успешно загружены, выполнив следующие SQL‑запросы. Подтвердите, что для каждого из них отображается результат:
select * from raw.jaffle_shop.customers;
select * from raw.jaffle_shop.orders;
select * from raw.stripe.payment;
Подключение dbt к Snowflake
Есть два способа подключить dbt к Snowflake. Первый — Partner Connect, который обеспечивает упрощенную настройку и позволяет создать учетную запись dbt прямо из вашего нового пробного аккаунта Snowflake. Второй — создать учетную запись dbt отдельно и настроить подключение к Snowflake самостоятельно (ручное подключение). Если вы хотите начать как можно быстрее, dbt Labs рекомендует использовать Partner Connect. Если вы хотите с самого начала кастомизировать настройку и лучше познакомиться с процессом настройки dbt, dbt Labs рекомендует подключаться вручную.
- Использовать Partner Connect
- Подключить вручную
Использование Partner Connect позволяет создать полноценный аккаунт dbt с вашим подключением к Snowflake, managed repository, окружениями и учетными данными.
-
В интерфейсе Snowflake нажмите на значок Home в левом верхнем углу. В левой боковой панели выберите Data Products. Затем выберите Partner Connect. Найдите плитку dbt, прокрутив список или выполнив поиск по dbt в строке поиска. Нажмите плитку, чтобы подключиться к dbt.
Если вы используете классическую версию интерфейса Snowflake, вы можете нажать кнопку Partner Connect в верхней панели аккаунта. Затем нажмите плитку dbt, чтобы открыть окно подключения.
-
Во всплывающем окне Connect to dbt найдите опцию Optional Grant и выберите базы данных RAW и ANALYTICS. Это предоставит доступ новой роли пользователя dbt к каждой выбранной базе данных. Затем нажмите Connect.
-
Когда появится всплывающее окно, нажмите Activate:
-
После загрузки новой вкладки вы увидите форму. Если вы уже создали учетную запись dbt, вас попросят указать имя аккаунта. Если учетная запись еще не создана, вас попросят указать имя аккаунта и пароль.
-
После того как вы заполните форму и нажмете Complete Registration, вы автоматически войдете в dbt.
-
Нажмите на имя аккаунта в левом меню и выберите Account settings, выберите проект "Partner Connect Trial" и в таблице overview выберите snowflake. Нажмите Edit и обновите поле Database на
analytics, а поле Warehouse наtransforming.
-
Создайте новый проект в dbt. Перейдите в Account settings (нажав на имя аккаунта в левом меню) и нажмите + New Project.
-
Введите имя проекта и нажмите Continue.
-
В разделе Configure your development environment откройте выпадающее меню Connection и выберите Add new connection. Это перенаправит вас в настройки конфигурации подключения.
-
В разделе Type выберите Snowflake.
-
Введите Settings для Snowflake:
-
Account — Найдите идентификатор аккаунта, используя URL пробного аккаунта Snowflake и убрав
snowflakecomputing.com. Порядок частей идентификатора зависит от версии Snowflake. Например, URL Classic Console может выглядеть так:oq65696.west-us-2.azure.snowflakecomputing.com. URL AppUI или Snowsight может выглядеть скорее так:snowflakecomputing.com/west-us-2.azure/oq65696. В обоих примерах идентификатор аккаунта будет:oq65696.west-us-2.azure. Подробнее см. Account Identifiers в документации Snowflake.✅ db5261993илиdb5261993.east-us-2.azure
❌ db5261993.eu-central-1.snowflakecomputing.com -
Role — Пока оставьте пустым. Позже вы можете указать здесь роль Snowflake по умолчанию.
-
Database —
analytics. Это сообщает dbt, что новые модели нужно создавать в базе данных analytics. -
Warehouse —
transforming. Это сообщает dbt, что нужно использовать warehouse transforming, созданный ранее.
-
-
Нажмите Save.
-
Настройте ваши персональные учетные данные для разработки, перейдя в Your profile > Credentials.
-
Выберите проект, который использует подключение к Snowflake.
-
Нажмите ссылку configure your development environment and add a connection. Она перенаправит вас на страницу, где можно ввести персональные учетные данные для разработки.
-
Введите Development credentials для Snowflake:
- Username — Имя пользователя, которое вы создали в Snowflake. Это не ваш email; обычно это имя и фамилия, объединенные в одно слово.
- Password — Пароль, который вы задали при создании аккаунта Snowflake.
- Schema — Вы заметите, что имя схемы было создано автоматически. По соглашению это
dbt_<первая-буква-имени><фамилия>. Это схема, напрямую связанная с вашим окружением разработки, и именно в ней будут собираться ваши модели при запуске dbt в Studio IDE. - Target name — Оставьте значение по умолчанию.
- Threads — Оставьте 4. Это количество одновременных подключений, которые dbt будет использовать для параллельной сборки моделей.
-
Нажмите Test connection. Это проверит, что dbt может подключиться к вашему аккаунту Snowflake.
-
Если тест прошел успешно, нажмите Save, чтобы завершить настройку. Если он не прошел, возможно, нужно проверить настройки Snowflake и учетные данные.
Настройка dbt‑проекта
В этом разделе вы настроите управляемый репозиторий dbt и инициализируете dbt‑проект, чтобы начать разработку.
Настройка управляемого репозитория dbt
Если вы использовали Partner Connect, можете перейти сразу к разделу инициализация dbt‑проекта, так как Partner Connect автоматически предоставляет вам managed repository. В противном случае вам потребуется создать подключение к репозиторию самостоятельно.
При разработке в dbt вы можете использовать Git для управления версиями вашего кода.
Чтобы подключиться к репозиторию, вы можете либо настроить размещённый в dbt managed repository, либо напрямую подключиться к поддерживаемому git‑провайдеру. Managed repositories — это отличный способ попробовать dbt без необходимости создавать новый репозиторий. В долгосрочной перспективе лучше подключиться к поддерживаемому git‑провайдеру, чтобы использовать такие возможности, как автоматизация и непрерывная интеграция.
Чтобы настроить управляемый репозиторий:
- В разделе "Настроить репозиторий" выберите Управляемый.
- Введите имя для вашего репозитория, например,
bbaggins-dbt-quickstart. - Нажмите Создать. Создание и импорт вашего репозитория займет несколько секунд.
- Как только вы увидите сообщение "Репозиторий успешно импортирован", нажмите Продолжить.
Инициализируйте ваш dbt-проект
В этом руководстве предполагается, что вы используете Studio IDE для разработки dbt-проекта, определения метрик, а также для запросов и предпросмотра метрик с помощью команд MetricFlow.
Теперь, когда репозиторий настроен, вы можете инициализировать проект и начать разработку в dbt через Studio IDE:
- Нажмите Start developing in the Studio IDE. При первом запуске проект может подниматься несколько минут: настраивается подключение к git, клонируется репозиторий и проверяется соединение с warehouse.
- Слева, над деревом файлов, нажмите Initialize your project. Это создаст структуру папок с примерами моделей.
- Сделайте первый коммит, нажав Commit and sync. Используйте сообщение коммита
initial commit. Это создаст первый коммит в managed repo и позволит открыть ветку, в которую можно добавлять новый dbt-код. - Теперь вы можете выполнять запросы напрямую к вашему warehouse и запускать
dbt run. Можете попробовать прямо сейчас:- Удалите папку
models/examplesв File Catalog. - Нажмите + Create new file, добавьте этот запрос в новый файл и нажмите Save as, чтобы сохранить файл:
select * from raw.jaffle_shop.customers - В командной строке внизу введите
dbt runи нажмите Enter. Вы должны увидеть сообщение, чтоdbt runзавершился успешно.
- Удалите папку
Сборка dbt-проекта
Следующий шаг — собрать ваш проект. Это включает добавление sources, staging-моделей, бизнес-определенных сущностей и пакетов в проект.
Добавьте источники
Sources в dbt — это таблицы с сырыми данными, которые вы будете преобразовывать. Организуя определения sources, вы документируете происхождение данных. Это также делает проект и трансформации более надежными, структурированными и понятными.
У вас есть два варианта работы с файлами в Studio IDE:
- Create a new branch (recommended) — Создайте новую ветку, чтобы редактировать файлы и коммитить изменения. Перейдите в Version Control в левой боковой панели и нажмите Create branch.
- Edit in the protected primary branch — Если вы предпочитаете редактировать, форматировать или линтить файлы и выполнять команды dbt прямо в основной git-ветке, используйте этот вариант. Studio IDE не позволяет делать коммиты в защищенную ветку, поэтому вам предложат закоммитить изменения в новую ветку.
Назовите новую ветку build-project.
- Наведите курсор на директорию
modelsи нажмите меню с тремя точками (...), затем выберите Create file. - Назовите файл
staging/jaffle_shop/src_jaffle_shop.yml, затем нажмите Create. - Скопируйте следующий текст в файл и нажмите Save.
sources:
- name: jaffle_shop
database: raw
schema: jaffle_shop
tables:
- name: customers
- name: orders
В source-файле вы также можете использовать кнопку Generate model, чтобы создать отдельный файл модели для каждого source. Это создаст новый файл в директории models с указанным именем source и заполнит его SQL-кодом определения source.
- Наведите курсор на директорию
modelsи нажмите меню с тремя точками (...), затем выберите Create file. - Назовите файл
staging/stripe/src_stripe.yml, затем нажмите Create. - Скопируйте следующий текст в файл и нажмите Save.
sources:
- name: stripe
database: raw
schema: stripe
tables:
- name: payment
Добавьте staging-модели
Staging models — это первый шаг трансформации в dbt. Они очищают и подготавливают сырые данные, чтобы они были готовы для более сложных трансформаций и аналитики. Следуйте этим шагам, чтобы добавить staging-модели в ваш проект.
- В подкаталоге
jaffle_shopсоздайте файлstg_customers.sql. Либо вы можете использовать кнопку Generate model, чтобы создать отдельный файл модели для каждого source. - Скопируйте следующий запрос в файл и нажмите Save.
select
id as customer_id,
first_name,
last_name
from {{ source('jaffle_shop', 'customers') }}
- В том же подкаталоге
jaffle_shopсоздайте файлstg_orders.sql. - Скопируйте следующий запрос в файл и нажмите Save.
select
id as order_id,
user_id as customer_id,
order_date,
status
from {{ source('jaffle_shop', 'orders') }}
- В подкаталоге
stripeсоздайте файлstg_payments.sql. - Скопируйте следующий запрос в файл и нажмите Save.
select
id as payment_id,
orderid as order_id,
paymentmethod as payment_method,
status,
-- amount is stored in cents, convert it to dollars
amount / 100 as amount,
created as created_at
from {{ source('stripe', 'payment') }}
- Введите
dbt runв командной строке внизу экрана. Вы должны увидеть успешный запуск и три модели.
Добавьте бизнес-определенные сущности
Этот этап включает создание моделей, которые служат entity layer (слоем сущностей) или concept layer (концептуальным слоем) вашего dbt-проекта, подготавливая данные для отчетности и анализа. Также он включает добавление пакетов и time spine MetricFlow, которые расширяют функциональность dbt.
Этот этап — слой marts, который объединяет модульные части в широкое, насыщенное представление сущностей, важных для организации.
- Создайте файл
models/marts/fct_orders.sql. - Скопируйте следующий запрос в файл и нажмите Save.
with orders as (
select * from {{ ref('stg_orders' )}}
),
payments as (
select * from {{ ref('stg_payments') }}
),
order_payments as (
select
order_id,
sum(case when status = 'success' then amount end) as amount
from payments
group by 1
),
final as (
select
orders.order_id,
orders.customer_id,
orders.order_date,
coalesce(order_payments.amount, 0) as amount
from orders
left join order_payments using (order_id)
)
select * from final
- В директории
models/martsсоздайте файлdim_customers.sql. - Скопируйте следующий запрос в файл и нажмите Save.
with customers as (
select * from {{ ref('stg_customers')}}
),
orders as (
select * from {{ ref('fct_orders')}}
),
customer_orders as (
select
customer_id,
min(order_date) as first_order_date,
max(order_date) as most_recent_order_date,
count(order_id) as number_of_orders,
sum(amount) as lifetime_value
from orders
group by 1
),
final as (
select
customers.customer_id,
customers.first_name,
customers.last_name,
customer_orders.first_order_date,
customer_orders.most_recent_order_date,
coalesce(customer_orders.number_of_orders, 0) as number_of_orders,
customer_orders.lifetime_value
from customers
left join customer_orders using (customer_id)
)
select * from final
-
Создайте модель time spine для MetricFlow, следуя руководству MetricFlow time spine guide. В этом руководстве показано, как создать и SQL-модель, и YAML-конфигурацию, необходимые для вычисления метрик на основе времени.
-
Введите
dbt runв командной строке внизу экрана. Вы должны увидеть сообщение об успешном выполнении, а в деталях запуска — что dbt успешно собрал ваши модели.
Создайте семантические модели
В этом разделе вы узнаете о semantic model, их компонентах и о том, как настроить time spine.
О семантических моделях
Семантические модели содержат множество типов объектов (например, entities, measures и dimensions), которые позволяют MetricFlow формировать запросы для определений метрик.
- Каждая semantic model находится в соотношении 1:1 с dbt-моделью SQL/Python.
- Каждая semantic model содержит (максимум) 1 primary или natural entity.
- Каждая semantic model содержит ноль, одну или несколько foreign или unique entities, используемых для связей с другими сущностями.
- Каждая semantic model также может содержать dimensions, measures и metrics. Именно это затем передается и запрашивается вашим downstream BI-инструментом.
В следующих шагах semantic models помогут вам определить, как интерпретировать данные, связанные с заказами (orders). Это включает entities (например, ID-колонки, которые служат ключами для объединения данных), dimensions (для группировки или фильтрации данных) и measures (для агрегаций данных).
- В подкаталоге
metricsсоздайте новый файлfct_orders.yml.
Убедитесь, что вы сохраняете все semantic models и metrics в директории, указанной в model-paths (или в ее поддиректории, например models/semantic_models/). Если сохранить их вне этого пути, файл semantic_manifest.json окажется пустым, и ваши semantic models или metrics не будут распознаны.
- Добавьте следующий код в только что созданный файл:
semantic_models:
- name: orders
defaults:
agg_time_dimension: order_date
description: |
Order fact table. This table’s grain is one row per order.
model: ref('fct_orders')
Компоненты семантической модели
В следующих разделах более подробно объясняются dimensions, entities и measures, а также показано, какую роль каждый из них играет в семантических моделях.
- Entities выступают уникальными идентификаторами (например, ID-колонками), которые связывают данные из разных таблиц.
- Dimensions классифицируют и фильтруют данные, упрощая их организацию.
- Measures вычисляют показатели по данным, предоставляя ценные инсайты через агрегации.
Сущности
Сущности — это понятия реального бизнеса, которые служат основой вашей семантической модели. В наших semantic models это будут ID-колонки (например, order_id). Они будут выступать ключами для join с другими semantic models.
Добавьте entities в файл семантической модели fct_orders.yml:
semantic_models:
- name: orders
defaults:
agg_time_dimension: order_date
description: |
Order fact table. This table’s grain is one row per order.
model: ref('fct_orders')
# Newly added
entities:
- name: order_id
type: primary
- name: customer
expr: customer_id
type: foreign
Измерения
Измерения — это способ группировать или фильтровать информацию по категориям или по времени.
Добавьте dimensions в файл семантической модели fct_orders.yml:
semantic_models:
- name: orders
defaults:
agg_time_dimension: order_date
description: |
Order fact table. This table’s grain is one row per order.
model: ref('fct_orders')
entities:
- name: order_id
type: primary
- name: customer
expr: customer_id
type: foreign
# Newly added
dimensions:
- name: order_date
type: time
type_params:
time_granularity: day
Меры
Measures — это агрегации, выполняемые над колонками в вашей модели. Часто вы будете использовать их как конечные метрики. Measures также могут служить строительными блоками для более сложных метрик.
Добавьте measures в файл семантической модели fct_orders.yml:
semantic_models:
- name: orders
defaults:
agg_time_dimension: order_date
description: |
Order fact table. This table’s grain is one row per order.
model: ref('fct_orders')
entities:
- name: order_id
type: primary
- name: customer
expr: customer_id
type: foreign
dimensions:
- name: order_date
type: time
type_params:
time_granularity: day
# Newly added
measures:
- name: order_total
description: The total amount for each order including taxes.
agg: sum
expr: amount
- name: order_count
expr: 1
agg: sum
- name: customers_with_orders
description: Distinct count of customers placing orders
agg: count_distinct
expr: customer_id
- name: order_value_p99 ## The 99th percentile order value
expr: amount
agg: percentile
agg_params:
percentile: 0.99
use_discrete_percentile: True
use_approximate_percentile: False
Настройте time spine
Чтобы обеспечить точные агрегации по времени, необходимо настроить time spine. Time spine позволяет корректно рассчитывать метрики на разных временных гранулярностях.
Следуйте руководству MetricFlow time spine guide с полными пошаговыми инструкциями по созданию и настройке модели time spine. В этом руководстве приведены актуальные best practices и исключены устаревшие конфигурации.
Определите метрики и добавьте вторую семантическую модель
В этом разделе вы определите метрики и добавите в проект вторую семантическую модель.
Определите метрики
Метрики — это язык, на котором говорят бизнес-пользователи, и способ измерять эффективность бизнеса. Метрика — это агрегация над колонкой в вашем warehouse, которую вы обогащаете измерениями (dimensional cuts).
Существует несколько типов метрик, которые можно настроить:
- Метрики конверсии — Отслеживают, когда для сущности происходит базовое событие и последующее событие-конверсия в пределах заданного периода времени.
- Накопительные метрики — Агрегируют measure в рамках заданного окна. Если окно не задано, окно будет накапливать measure за весь зафиксированный период. Обратите внимание: перед добавлением cumulative metrics необходимо создать модель time spine.
- Производные метрики — Позволяют выполнять вычисления поверх метрик.
- Простые метрики — Напрямую ссылаются на один measure без дополнительных measures.
- Относительные метрики — Состоят из метрики-числителя и метрики-знаменателя. Constraint string можно применить и к числителю, и к знаменателю, либо отдельно к числителю или знаменателю.
После того как вы создали semantic models, пора начать использовать созданные вами measures, чтобы определить метрики:
- Добавьте метрики в файл семантической модели
fct_orders.yml:
Убедитесь, что вы сохраняете все semantic models и метрики в директории, указанной в model-paths (или в её поддиректории, например models/semantic_models/). Если сохранить их вне этого пути, файл semantic_manifest.json окажется пустым, и ваши semantic models или метрики не будут распознаны.
semantic_models:
- name: orders
defaults:
agg_time_dimension: order_date
description: |
Order fact table. This table’s grain is one row per order
model: ref('fct_orders')
entities:
- name: order_id
type: primary
- name: customer
expr: customer_id
type: foreign
dimensions:
- name: order_date
type: time
type_params:
time_granularity: day
measures:
- name: order_total
description: The total amount for each order including taxes.
agg: sum
expr: amount
- name: order_count
expr: 1
agg: sum
- name: customers_with_orders
description: Distinct count of customers placing orders
agg: count_distinct
expr: customer_id
- name: order_value_p99
expr: amount
agg: percentile
agg_params:
percentile: 0.99
use_discrete_percentile: True
use_approximate_percentile: False
# Newly added
metrics:
# Simple type metrics
- name: "order_total"
description: "Sum of orders value"
type: simple
label: "order_total"
type_params:
measure:
name: order_total
- name: "order_count"
description: "number of orders"
type: simple
label: "order_count"
type_params:
measure:
name: order_count
- name: large_orders
description: "Count of orders with order total over 20."
type: simple
label: "Large Orders"
type_params:
measure:
name: order_count
filter: |
{{ Metric('order_total', group_by=['order_id']) }} >= 20
# Ratio type metric
- name: "avg_order_value"
label: "avg_order_value"
description: "average value of each order"
type: ratio
type_params:
numerator:
name: order_total
denominator:
name: order_count
# Cumulative type metrics
- name: "cumulative_order_amount_mtd"
label: "cumulative_order_amount_mtd"
description: "The month to date value of all orders"
type: cumulative
type_params:
measure:
name: order_total
cumulative_type_params:
grain_to_date: month
# Derived metric
- name: "pct_of_orders_that_are_large"
label: "pct_of_orders_that_are_large"
description: "percent of orders that are large"
type: derived
type_params:
expr: large_orders/order_count
metrics:
- name: large_orders
- name: order_count
Добавьте в проект вторую семантическую модель
Отлично — вы успешно создали свою первую семантическую модель! В ней есть все необходимые элементы: entities, dimensions, measures и metrics.
Давайте расширим аналитические возможности проекта, добавив еще одну семантическую модель для другой модели слоя marts, например dim_customers.yml.
После настройки модели orders:
- В подкаталоге
metricsсоздайте файлdim_customers.yml. - Скопируйте следующий запрос в файл и нажмите Save.
semantic_models:
- name: customers
defaults:
agg_time_dimension: most_recent_order_date
description: |
semantic model for dim_customers
model: ref('dim_customers')
entities:
- name: customer
expr: customer_id
type: primary
dimensions:
- name: customer_name
type: categorical
expr: first_name
- name: first_order_date
type: time
type_params:
time_granularity: day
- name: most_recent_order_date
type: time
type_params:
time_granularity: day
measures:
- name: count_lifetime_orders
description: Total count of orders per customer.
agg: sum
expr: number_of_orders
- name: lifetime_spend
agg: sum
expr: lifetime_value
description: Gross customer lifetime spend inclusive of taxes.
- name: customers
expr: customer_id
agg: count_distinct
metrics:
- name: "customers_with_orders"
label: "customers_with_orders"
description: "Unique count of customers placing orders"
type: simple
type_params:
measure:
name: customers
Эта семантическая модель использует простые метрики, чтобы сфокусироваться на метриках клиентов, и делает акцент на клиентских измерениях, таких как имя, тип и даты заказов. Она позволяет детально анализировать поведение клиентов, lifetime value и паттерны заказов.
Тестируйте и запрашивайте метрики
Для работы с метриками в dbt у вас есть несколько инструментов для валидации или выполнения команд. Вот как вы можете тестировать и запрашивать метрики в зависимости от вашей настройки:
- Пользователи Studio IDE — Запускайте команды MetricFlow напрямую в Studio IDE, чтобы выполнять запросы и предварительный просмотр метрик. Визуально просматривайте метрики на вкладке Lineage.
- Пользователи Cloud CLI — Cloud CLI позволяет запускать команды MetricFlow для выполнения запросов и предварительного просмотра метрик прямо в интерфейсе командной строки.
- Пользователи dbt Core — Используйте MetricFlow CLI для выполнения команд. Хотя это руководство ориентировано на пользователей dbt, пользователи dbt Core могут найти подробные инструкции по настройке MetricFlow CLI на странице MetricFlow commands. Обратите внимание: для использования Semantic Layer у вас должен быть аккаунт уровня Starter или Enterprise (подробнее).
Кроме того, вы можете выполнять команды с помощью SQL-клиентов, таких как DataGrip, DBeaver или RazorSQL.
Пользователи Studio IDE
Вы можете использовать префикс dbt sl перед именем команды, чтобы выполнять их в dbt. Например, чтобы вывести список всех метрик, выполните dbt sl list metrics. Полный список команд MetricFlow, доступных в Studio IDE, см. на странице MetricFlow commands.
Кнопка Status в Studio IDE (расположена в правом нижнем углу редактора) отображает статус Error, если в определении метрики или семантической модели есть ошибка. Вы можете нажать на эту кнопку, чтобы увидеть конкретную проблему и устранить её.
После просмотра убедитесь, что вы зафиксировали и объединили свои изменения в вашем проекте.
Пользователи Cloud CLI
Этот раздел предназначен для пользователей Cloud CLI. Команды MetricFlow интегрированы с dbt, что означает, что вы можете запускать команды MetricFlow сразу после установки Cloud CLI. Ваша учетная запись будет автоматически управлять контролем версий.
Следуйте следующим шагам, чтобы начать:
- Установите Cloud CLI (если вы ещё этого не сделали). Затем перейдите в директорию вашего проекта dbt.
- Выполните команду dbt, например
dbt parse,dbt run,dbt compileилиdbt build. Если этого не сделать, вы получите сообщение об ошибке, которое начинается с: «ensure that you've ran an artifacts....». - MetricFlow строит семантический граф и генерирует файл
semantic_manifest.jsonв dbt, который сохраняется в директории/target. Если вы используете пример Jaffle Shop, выполнитеdbt seed && dbt run, чтобы убедиться, что необходимые данные загружены в вашу платформу данных перед продолжением.
Когда вы вносите изменения в метрики, обязательно как минимум выполните dbt parse, чтобы обновить Semantic Layer. Это обновляет файл semantic_manifest.json, отражая ваши изменения при запросах метрик. При запуске dbt parse вам не потребуется пересобирать все модели.
-
Выполните
dbt sl --help, чтобы подтвердить, что у вас установлен MetricFlow и что вы можете просмотреть доступные команды. -
Выполните
dbt sl query --metrics <metric_name> --group-by <dimension_name>, чтобы запросить метрики и измерения. Например, чтобы запроситьorder_totalиorder_count(обе метрики), а затем сгруппировать их поorder_date(измерение), выполните:dbt sl query --metrics order_total,order_count --group-by order_date -
Убедитесь, что значения метрик соответствуют вашим ожиданиям. Чтобы лучше понять, как генерируется метрика, вы можете просмотреть сгенерированный SQL, если введете
--compileв командной строке. -
Зафиксируйте и объедините изменения в коде, содержащие определения метрик.
Запустите production job
В этом разделе объясняется, как выполнить запуск job в среде деплоя в dbt, чтобы материализовать и развернуть ваши метрики. В настоящее время поддерживается только среда деплоя.
-
После того как вы определили свои семантические модели и метрики, закоммитьте и смержите изменения метрик в вашем dbt‑проекте.
-
В dbt создайте новую среду деплоя или используйте существующую среду на dbt версии 1.6 или выше.
- Примечание — в настоящее время поддерживается только среда деплоя (опыт для разработки появится в ближайшее время)
-
Чтобы создать новую среду, перейдите в раздел Deploy в навигационном меню, выберите Environments, а затем нажмите Create new environment.
-
Заполните учетные данные для деплоя, указав имя пользователя и пароль Snowflake. Схему можно назвать как угодно. Нажмите Save, чтобы создать новую production‑среду.
-
Создайте новую deploy job, которая будет выполняться в только что созданной среде. Вернитесь в меню Deploy, выберите Jobs, затем Create job и нажмите Deploy job.
-
Настройте job на выполнение команды
dbt parse, чтобы разобрать ваши проекты и сгенерировать артефактsemantic_manifest.json. Хотя запускdbt buildне является обязательным, при необходимости вы можете добавить его.примечаниеЕсли вы используете движок dbt Fusion, добавьте команду
dbt docs generateв job, чтобы успешно развернуть ваши метрики. -
Запустите job, нажав кнопку Run now. Отслеживайте прогресс выполнения в реальном времени на вкладке Run summary.
После успешного завершения задания ваш проект dbt, включая сгенерированную документацию, будет полностью развернут и доступен для использования в вашей производственной среде. Если возникнут какие-либо проблемы, просмотрите логи, чтобы диагностировать и устранить ошибки.
Что происходит внутри?
- Слияние кода в основную ветку позволяет dbt подтянуть эти изменения и собрать определения в манифесте, который создаётся в ходе запуска.
- Повторный запуск задания в среде деплоймента помогает материализовать модели, от которых зависят метрики, на платформе данных. Это также гарантирует, что манифест находится в актуальном состоянии.
- Semantic Layer APIs загружают самый свежий манифест и позволяют вашей интеграции извлекать из него метаданные.
Администрирование Semantic Layer
В этом разделе вы узнаете, как добавить учетные данные и создать service tokens, чтобы начать выполнять запросы к dbt Semantic Layer. Раздел охватывает следующие темы:
- Выбор окружения
- Настройка учетных данных и создание токенов
- Просмотр деталей подключения
- Добавление дополнительных учетных данных
- Удаление конфигурации
Вы должны входить в группу Owner и иметь соответствующую лицензию и права доступа, чтобы администрировать Semantic Layer на уровне окружения и проекта.
- Тарифы Enterprise+ и Enterprise:
- лицензия Developer с правами Account Admin, или
- роль Owner с лицензией Developer и назначенными правами Project Creator, Database Admin или Admin.
- Тариф Starter: роль Owner с лицензией Developer.
- Free trial: вы находитесь на бесплатном пробном периоде тарифа Starter в роли Owner, что означает, что у вас есть доступ к dbt Semantic Layer.
1. Выберите окружение
Выберите окружение, в котором вы хотите включить Семантический слой:
- Перейдите в Account settings в навигационном меню.
- В разделе Settings нажмите Projects и выберите конкретный проект, для которого вы хотите включить Semantic Layer.
- На странице Project details перейдите в раздел Semantic Layer. Выберите Configure Semantic Layer.
- На странице Настройка конфигурации Семантического слоя выберите окружение развертывания, которое вы хотите для Семантического слоя, и нажмите Сохранить. Это предоставляет администраторам гибкость в выборе окружения, в котором будет включен Семантический слой.
2. Настройка учетных данных и создание токенов
Существует два варианта настройки Semantic Layer с использованием API‑токенов:
- Добавить учетные данные и создать сервисные токены
- Настроить учетные данные для разработки и создать персональные токены
Добавить учетные данные и создать сервисные токены
Первый вариант — использовать сервисные токены для аутентификации. Эти токены связаны с учетными данными платформы данных, которые вы предварительно настраиваете. Настроенные учетные данные используются для выполнения запросов, которые Semantic Layer отправляет к вашей платформе данных.
Эти учетные данные контролируют физический доступ к данным, к которым обращается Семантический слой, и все политики доступа, установленные на платформе данных для этих учетных данных, будут соблюдаться.
| Loading table... |
Если вы используете тариф Starter и вам нужно добавить больше credential, рассмотрите возможность перехода на Enterprise+ или Enterprise plan. Все пользователи Enterprise могут обратиться к разделу Add more credentials для получения подробных инструкций по добавлению нескольких credential.
1. Выберите среду развертывания
- После выбора deployment environment вы увидите страницу Credentials & service tokens.
- Нажмите кнопку Add Semantic Layer credential.
2. Настройте учетные данные
- В разделе 1. Add credentials введите учетные данные, специфичные для вашей data platform, которые Semantic Layer будет использовать.
- Используйте учетные данные с минимально необходимыми правами. Semantic Layer требует доступ на чтение к схемам, содержащим dbt models, используемые в ваших semantic models для downstream‑приложений.
-
Используйте Расширенные атрибуты и Переменные окружения при подключении к Семантическому слою. Если вы задаете значение непосредственно в Учетных данных Семантического слоя, оно будет иметь более высокий приоритет, чем Расширенные атрибуты. При использовании переменных окружения будет использоваться значение по умолчанию для окружения.
Например, задайте хранилище, используя
{{env_var('DBT_WAREHOUSE')}}в ваших учетных данных Семантического слоя.Аналогично, если вы задаете значение учетной записи с помощью
{{env_var('DBT_ACCOUNT')}}в Расширенных атрибутах, dbt проверит как Расширенные атрибуты, так и переменную окружения.
3. Создайте или свяжите сервисные токены
- Если у вас есть права на создание service token, после добавления credential вы увидите опцию Map new service token. Укажите имя token, установите разрешения Semantic Layer Only и Metadata Only, затем нажмите Save.
- После генерации token вы больше не сможете просмотреть его значение, поэтому обязательно сохраните его в безопасном месте.
- Если у вас нет доступа к созданию service token, вы увидите сообщение с предложением связаться с администратором, чтобы он создал token для вас. Администраторы могут создавать и связывать token по мере необходимости.
Если у вас нет прав на создание service token, вы можете создать credential и попросить администратора создать token для вас.- Тариф Starter позволяет создавать несколько service token, привязанных к одному базовому credential, однако в каждом проекте может быть только один credential.
- Все тарифы Enterprise позволяют добавлять несколько credential и связывать их с service token для более гибкого управления доступом.
Запишитесь на бесплатную live‑демонстрацию, чтобы узнать о всех возможностях dbt Enterprise и более высоких тарифов.
Настройте учетные данные для разработки и создайте персональный токен
Использование personal access tokens (PATs) также поддерживается как метод аутентификации для dbt Semantic Layer. Это позволяет использовать аутентификацию на уровне пользователя и снижает необходимость совместного использования token между пользователями. При аутентификации с помощью PAT запросы выполняются с использованием ваших персональных development credentials.
Чтобы использовать PAT в Semantic Layer:
- Настройте ваши development credentials.
- Нажмите на имя вашего аккаунта в левом нижнем меню и перейдите в Account settings > Credentials.
- Выберите ваш проект.
- Нажмите Edit.
- Перейдите в раздел Development credentials и введите необходимые данные.
- Нажмите Save.
- Создайте personal access token. Обязательно скопируйте token.
Сгенерированный PAT можно использовать как метод аутентификации для Semantic Layer API и integrations.
3. Просмотрите сведения о подключении
-
Вернитесь на страницу Project details, чтобы посмотреть параметры подключения для downstream‑инструментов.
-
Скопируйте и передайте соответствующим командам Environment ID, service или personal token, Host, а также имя service или personal token для настройки подключения BI‑инструментов. Если ваш инструмент использует GraphQL API, сохраните информацию о GraphQL API host вместо JDBC URL.
Для информации о том, как подключиться к другим интеграциям, обратитесь к Доступные интеграции.
После настройки вам будут предоставлены данные для подключения, которые можно использовать для подключения ваших downstream‑инструментов.4. Добавьте дополнительные учетные данные Enterprise +Enterprise
Все тарифные планы dbt Enterprise при желании позволяют добавлять несколько учетных данных и сопоставлять их с service tokens. Это обеспечивает более детальный контроль и настраиваемый доступ для разных команд, после чего эти учетные данные можно передавать соответствующим командам для настройки подключения BI‑инструментов. Эти учетные данные управляют физическим доступом к базовым данным, к которым обращается Semantic Layer.
Мы рекомендуем настраивать учетные данные и сервисные токены в соответствии с вашими командами и их ролями. Например, создавайте токены или учетные данные, которые соответствуют потребностям вашей команды, например, предоставляя доступ к схемам, связанным с финансами, для финансовой команды.
1. Добавление дополнительных учетных данных
- После настройки окружения на странице Credentials & service tokens нажмите кнопку Add Semantic Layer credential, чтобы создать несколько учетных данных и сопоставить их с service token.
- В разделе 1. Add credentials заполните поля учетных данных для вашей платформы данных. Мы рекомендуем использовать учетные данные с правами “read-only”.
2. Сопоставление service tokens с учетными данными
- В разделе 2. Map new service token сопоставьте service token с учетными данными, которые вы настроили на предыдущем шаге. dbt автоматически выбирает необходимый набор разрешений для service token (Semantic Layer Only и Metadata Only).
- Чтобы добавить еще один service token в процессе настройки, нажмите Add Service Token.
- Позже вы можете привязать дополнительные service tokens к тем же учетным данным на странице Semantic Layer Configuration Details. Чтобы добавить еще один service token к существующей конфигурации Semantic Layer, нажмите Add service token в разделе Linked service tokens.
- Нажмите Save, чтобы связать service token с учетными данными. Не забудьте скопировать и надежно сохранить service token, так как после генерации он больше не будет доступен для просмотра.
Используйте страницу конфигурации, чтобы управлять несколькими credential или привязывать/отвязывать service token для более тонкого контроля.3. Удалите учетные данные
-
Чтобы удалить учетные данные, вернитесь на страницу Учетные данные и сервисные токены.
-
В разделе Связанные сервисные токены нажмите Редактировать и выберите Удалить учетные данные, чтобы удалить учетные данные.
Когда вы удаляете учетные данные, любые сервисные токены, связанные с этими учетными данными в проекте, перестанут работать и будут недоступны для конечных пользователей.
Удаление конфигурации
Вы можете удалить всю конфигурацию Semantic Layer для проекта. Обратите внимание, что удаление конфигурации Semantic Layer приведёт к удалению всех учётных данных и отвязке всех service token от проекта. Также это приведёт к тому, что все запросы к Semantic Layer будут завершаться с ошибкой.
Следуйте этим шагам, чтобы удалить конфигурацию Семантического слоя для проекта:
- Перейдите на страницу Детали проекта.
- В разделе Семантический слой выберите Удалить Семантический слой.
- Подтвердите удаление, нажав Да, удалить семантический слой в всплывающем окне подтверждения.
Чтобы повторно включить настройку Семантического слоя dbt в будущем, вам нужно будет воссоздать ваши конфигурации, следуя предыдущим шагам. Если ваши семантические модели и метрики все еще находятся в вашем проекте, никаких изменений не требуется. Если вы их удалили, вам нужно будет снова настроить конфигурации YAML.
Дополнительная конфигурация
Следующие дополнительные гибкие конфигурации для учетных данных Семантического слоя.
Сопоставьте сервисные токены с учетными данными
- После настройки вашего окружения вы можете сопоставить дополнительные сервисные токены с теми же учетными данными, если у вас есть необходимые разрешения.
- Перейдите на страницу Учетные данные и сервисные токены и нажмите кнопку +Добавить сервисный токен в разделе Связанные сервисные токены.
- Введите имя сервисного токена и выберите необходимый набор разрешений (Только Семантический слой и Только метаданные).
- Нажмите Сохранить, чтобы связать сервисный токен с учетными данными.
- Не забудьте скопировать и сохранить сервисный токен в безопасном месте, так как он не будет доступен для просмотра после генерации.
Отвяжите сервисные токены
- Отвяжите сервисный токен от учетных данных, нажав Отвязать в разделе Связанные сервисные токены. Если вы попытаетесь выполнить запрос к Семантическому слою с отвязанными учетными данными, вы столкнетесь с ошибкой в вашем BI-инструменте, так как не будет сопоставлен действительный токен.
Управление со страницы сервисных токенов
Просмотр учетных данных из сервисного токена
- Просмотрите ваши учетные данные Семантического слоя напрямую, перейдя на страницу API токены, а затем Сервисные токены.
- Выберите сервисный токен, чтобы просмотреть учетные данные, с которыми он связан. Это полезно, если вы хотите узнать, какие сервисные токены сопоставлены с учетными данными в вашем проекте.
Создайте новый сервисный токен
- На странице Сервисные токены создайте новый сервисный токен и сопоставьте его с учетными данными (при условии, что разрешение на семантический слой существует). Это полезно, если вы хотите создать новый сервисный токен и напрямую сопоставить его с учетными данными в вашем проекте.
- Убедитесь, что выбрали правильный набор разрешений для сервисного токена (Только Семантический слой и Только метаданные).
Создайте новый сервисный токен и сопоставьте учетные данные напрямую на отдельной странице «Service tokens».Запросы к Semantic Layer
Эта страница подскажет, как подключиться и использовать следующие интеграции для выполнения запросов к вашим метрикам:
- Подключение и запросы через Google Sheets
- Подключение и запросы через Hex
- Подключение и запросы через Sigma
Semantic Layer позволяет подключаться и выполнять запросы к метрикам с помощью различных инструментов, например PowerBI, Google Sheets, Hex, Microsoft Excel, Tableau и других.
Выполняйте запросы к метрикам и через другие инструменты, такие как first-class integrations, API Semantic Layer и exports, чтобы публиковать таблицы метрик и измерений в вашей платформе данных и создавать кастомные интеграции.
Подключение и запросы через Google Sheets
Интеграция с Google Sheets позволяет выполнять запросы к вашим метрикам с использованием Google Sheets. Этот раздел поможет вам подключиться и использовать интеграцию с Google Sheets.
Чтобы выполнять запросы к вашим метрикам с помощью Google Sheets:
- Убедитесь, что у вас есть учетная запись Gmail.
- Чтобы настроить Google Sheets и выполнять запросы к вашим метрикам, следуйте подробным инструкциям по интеграции с Google Sheets.
- Начните исследовать и выполнять запросы к метрикам!
- Выполните запрос к метрике, например,
order_total, и отфильтруйте ее по измерению, например,order_date. - Вы также можете использовать параметр
group_by, чтобы группировать ваши метрики по определенному измерению.
- Выполните запрос к метрике, например,
Используйте интеграцию Google Sheets с семантическим слоем dbt для выполнения запросов к метрикам с помощью меню Query Builder.Подключение и запросы через Hex
В этом разделе описано, как использовать интеграцию Hex для запросов к вашим метрикам через Hex. Выберите подходящую вкладку в зависимости от способа подключения:
- Запросы к Semantic Layer через Hex
- Воркшоп Getting started with the Semantic Layer
- Перейдите на страницу входа Hex.
- Войдите или зарегистрируйтесь (если у вас еще нет аккаунта).
- Можно создать бесплатный пробный аккаунт Hex, используя рабочую почту или адрес с доменом .edu.
- В левом верхнем углу страницы нажмите на иконку HEX, чтобы перейти на главную страницу.
- Затем нажмите кнопку + New project в правом верхнем углу.
- В меню слева выберите Data browser. Затем выберите Add a data connection.
- Нажмите Snowflake. Укажите имя и описание подключения. Вам не нужны учетные данные к data warehouse, чтобы использовать Semantic Layer.
- В разделе Integrations переведите переключатель dbt вправо, чтобы включить интеграцию dbt.
- Введите следующую информацию:
- Выберите версию dbt 1.6 или выше
- Введите ваш Environment ID
- Введите ваш service token или personal token
- Обязательно включите переключатель Use Semantic Layer — так все запросы будут маршрутизироваться через dbt
- Нажмите Create connection в правом нижнем углу
- Наведите курсор на More в меню, показанном на изображении ниже, и выберите Semantic Layer.
- Теперь вы можете выполнять запросы к метрикам в Hex! Попробуйте:
- Создайте новую ячейку и выберите метрику.
- Отфильтруйте ее по одному или нескольким измерениям.
- Создайте визуализацию.
- Нажмите на ссылку, которую вам дали в чате воркшопа.
- Если сразу не видите, проверьте раздел Pinned message в чате.
- Введите ваш email в поле ввода. Затем выберите SQL and Python, чтобы перейти на главную страницу Hex.
- Затем нажмите фиолетовую кнопку Hex в левом верхнем углу.
- В меню слева нажмите Collections.
- Выберите коллекцию Semantic Layer Workshop.
- Откройте коллекцию проектов Getting started with the Semantic Layer.
- Чтобы редактировать этот ноутбук Hex, нажмите Duplicate в выпадающем меню проекта (как показано на изображении). Это создаст новую копию ноутбука Hex, которой вы будете владеть.
- Чтобы копию было проще найти, переименуйте ее, добавив ваше имя.
-
Теперь вы можете выполнять запросы к метрикам в Hex! Попробуйте на примерах:
- В первой ячейке показана таблица метрики
order_totalпо времени. Добавьте в эту таблицу метрикуorder_count. - Во второй ячейке показан линейный график метрики
order_totalпо времени. Поэкспериментируйте с графиком — попробуйте изменить time grain с помощью выпадающего меню Time unit. - Следующая таблица в ноутбуке с названием “Example_query_2” показывает количество клиентов, сделавших свой первый заказ в определенный день. Создайте новую chart-ячейку. Постройте линейный график
first_ordered_atvscustomers, чтобы увидеть, как меняется число новых клиентов по дням. - Создайте новую ячейку semantic layer и выберите одну или несколько метрик. Отфильтруйте метрику(и) по одному или нескольким измерениям.
- В первой ячейке показана таблица метрики
Подключение и запросы через Sigma
В этом разделе показано, как использовать интеграцию Sigma для запросов к вашим метрикам через Sigma. Если у вас уже есть аккаунт Sigma, просто войдите и перейдите к шагу 6. В противном случае вы будете использовать аккаунт Sigma, который создадите через Snowflake Partner Connect.
- Вернитесь в ваш аккаунт Snowflake. В интерфейсе Snowflake нажмите на значок Home в левом верхнем углу. В левой боковой панели выберите Data Products. Затем выберите Partner Connect. Найдите плитку Sigma, прокрутив список или выполнив поиск по Sigma в строке поиска. Нажмите плитку, чтобы подключиться к Sigma.
- Выберите плитку Sigma из списка. Откройте выпадающее меню Optional Grant. Введите RAW и ANALYTICS в текстовое поле, затем нажмите Connect.
- Придумайте название компании и URL. Какой именно URL — не важно, главное, чтобы он был уникальным.
- Введите ваше имя и email. Задайте пароль для аккаунта.
- Отлично! Теперь у вас есть аккаунт Sigma. Прежде чем начать, вернитесь в Snowflake и откройте пустой worksheet. Выполните следующие строки:
grant all privileges on all views in schema analytics.SCHEMA to role pc_sigma_role;grant all privileges on all tables in schema analytics.SCHEMA to role pc_sigma_role;
- Нажмите на вашу иконку (bubble) в правом верхнем углу. В выпадающем меню выберите Administration.
- Прокрутите вниз до раздела integrations и нажмите Add рядом с интеграцией dbt.
- В разделе dbt Integration заполните обязательные поля и нажмите save:
- Ваш dbt service account token или personal access tokens.
- Ваш access URL для существующей интеграции Sigma с dbt. Используйте
cloud.getdbt.comкак access URL. - Ваш dbt Environment ID.
- Вернитесь на главную страницу Sigma. Создайте новый workbook.
- Нажмите Table, затем нажмите SQL. Выберите Snowflake
PC_SIGMA_WHв качестве подключения к данным.
- Теперь выполните запрос к рабочей метрике в вашем проекте! Например, допустим, у вас есть метрика, которая измеряет различные значения, связанные с заказами. Вот как вы могли бы выполнить запрос:
select * from
{{ semantic_layer.query (
metrics = ['order_total', 'order_count', 'large_orders', 'customers_with_orders', 'avg_order_value', 'pct_of_orders_that_are_large'],
group_by =
[Dimension('metric_time').grain('day') ]
) }}
Что дальше
Отличная работа — вы завершили подробное руководство по Semantic Layer! Надеемся, теперь у вас есть четкое понимание того, что такое Semantic Layer, зачем он нужен и когда его использовать в ваших проектах.
Вы научились:
- Настраивать окружение Snowflake и dbt, включая создание worksheets и загрузку данных.
- Подключать и настраивать dbt для работы со Snowflake.
- Собирать, тестировать и управлять проектами dbt, уделяя внимание метрикам и семантическому слою.
- Запускать production jobs и выполнять запросы к метрикам через доступные интеграции.
В качестве следующих шагов вы можете начать определять собственные метрики и изучить дополнительные опции конфигурации, такие как exports, заполнение null-значений, внедрение Mesh с помощью Semantic Layer и другие.
Вот несколько дополнительных ресурсов, которые помогут вам продолжить путь:


































