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

Быстрый старт для dbt Semantic Layer и Snowflake

Semantic Layer
Snowflake
dbt platform
Quickstart
Intermediate
Menu

    Введение

    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.

    Откройте новую вкладку и выполните следующие быстрые шаги по настройке учетной записи и загрузке данных:

    Создайте новый worksheet в Snowflake и настройте окружение

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

    Настройка и загрузка данных в Snowflake

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

    1. Создайте новый виртуальный 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;
    2. В базе данных 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
        );
    3. Убедитесь, что данные успешно загружены, выполнив следующие SQL‑запросы. Подтвердите, что для каждого из них отображается результат:

      select * from raw.jaffle_shop.customers;
      select * from raw.jaffle_shop.orders;
      select * from raw.stripe.payment;
    Изображение показывает вывод подтверждения Snowflake, когда данные загружены правильно в редакторе.Изображение показывает вывод подтверждения Snowflake, когда данные загружены правильно в редакторе.

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

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

    Использование Partner Connect позволяет создать полноценный аккаунт dbt с вашим подключением к Snowflake, managed repository, окружениями и учетными данными.

    1. В интерфейсе Snowflake нажмите на значок Home в левом верхнем углу. В левой боковой панели выберите Data Products. Затем выберите Partner Connect. Найдите плитку dbt, прокрутив список или выполнив поиск по dbt в строке поиска. Нажмите плитку, чтобы подключиться к dbt.

      Окно Snowflake Partner ConnectОкно Snowflake Partner Connect

      Если вы используете классическую версию интерфейса Snowflake, вы можете нажать кнопку Partner Connect в верхней панели аккаунта. Затем нажмите плитку dbt, чтобы открыть окно подключения.

      Классический интерфейс Snowflake — Partner ConnectКлассический интерфейс Snowflake — Partner Connect
    2. Во всплывающем окне Connect to dbt найдите опцию Optional Grant и выберите базы данных RAW и ANALYTICS. Это предоставит доступ новой роли пользователя dbt к каждой выбранной базе данных. Затем нажмите Connect.

      Классический интерфейс Snowflake — окно подключенияКлассический интерфейс Snowflake — окно подключения
      Новый интерфейс Snowflake — окно подключенияНовый интерфейс Snowflake — окно подключения
    3. Когда появится всплывающее окно, нажмите Activate:

    Классический интерфейс Snowflake — окно активацииКлассический интерфейс Snowflake — окно активации
    Новый интерфейс Snowflake — окно активацииНовый интерфейс Snowflake — окно активации
    1. После загрузки новой вкладки вы увидите форму. Если вы уже создали учетную запись dbt, вас попросят указать имя аккаунта. Если учетная запись еще не создана, вас попросят указать имя аккаунта и пароль.

    2. После того как вы заполните форму и нажмете Complete Registration, вы автоматически войдете в dbt.

    3. Нажмите на имя аккаунта в левом меню и выберите Account settings, выберите проект "Partner Connect Trial" и в таблице overview выберите snowflake. Нажмите Edit и обновите поле Database на analytics, а поле Warehouse на transforming.

    dbt — Обзо�р проекта Snowflakedbt — Обзор проекта Snowflake
    dbt — Обновление базы данных и warehousedbt — Обновление базы данных и warehouse

    Настройка dbt‑проекта

    В этом разделе вы настроите управляемый репозиторий dbt и инициализируете dbt‑проект, чтобы начать разработку.

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

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

    При разработке в dbt вы можете использовать Git для управления версиями вашего кода.

    Чтобы подключиться к репозиторию, вы можете либо настроить размещённый в dbt managed repository, либо напрямую подключиться к поддерживаемому git‑провайдеру. Managed repositories — это отличный способ попробовать dbt без необходимости создавать новый репозиторий. В долгосрочной перспективе лучше подключиться к поддерживаемому git‑провайдеру, чтобы использовать такие возможности, как автоматизация и непрерывная интеграция.

    Чтобы настроить управляемый репозиторий:

    1. В разделе "Настроить репозиторий" выберите Управляемый.
    2. Введите имя для вашего репозитория, например, bbaggins-dbt-quickstart.
    3. Нажмите Создать. Создание и импорт вашего репозитория займет несколько секунд.
    4. Как только вы увидите сообщение "Репозиторий успешно импортирован", нажмите Продолжить.

    Инициализируйте ваш dbt-проект

    В этом руководстве предполагается, что вы используете Studio IDE для разработки dbt-проекта, определения метрик, а также для запросов и предпросмотра метрик с помощью команд MetricFlow.

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

    1. Нажмите Start developing in the Studio IDE. При первом запуске проект может подниматься несколько минут: настраивается подключение к git, клонируется репозиторий и проверяется соединение с warehouse.
    2. Слева, над деревом файлов, нажмите Initialize your project. Это создаст структуру папок с примерами моделей.
    3. Сделайте первый коммит, нажав Commit and sync. Используйте сообщение коммита initial commit. Это создаст первый коммит в managed repo и позволит открыть ветку, в которую можно добавлять новый dbt-код.
    4. Теперь вы можете выполнять запросы напрямую к вашему 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.

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

    sources:
    - name: jaffle_shop
    database: raw
    schema: jaffle_shop
    tables:
    - name: customers
    - name: orders
    подсказка

    В source-файле вы также можете использовать кнопку Generate model, чтобы создать отдельный файл модели для каждого source. Это создаст новый файл в директории models с указанным именем source и заполнит его SQL-кодом определения source.

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

    sources:
    - name: stripe
    database: raw
    schema: stripe
    tables:
    - name: payment

    Добавьте staging-модели

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

    1. В подкаталоге jaffle_shop создайте файл stg_customers.sql. Либо вы можете использовать кнопку Generate model, чтобы создать отдельный файл модели для каждого source.
    2. Скопируйте следующий запрос в файл и нажмите Save.
    models/staging/jaffle_shop/stg_customers.sql
      select
    id as customer_id,
    first_name,
    last_name
    from {{ source('jaffle_shop', 'customers') }}
    1. В том же подкаталоге jaffle_shop создайте файл stg_orders.sql.
    2. Скопируйте следующий запрос в файл и нажмите Save.
    models/staging/jaffle_shop/stg_orders.sql
      select
    id as order_id,
    user_id as customer_id,
    order_date,
    status
    from {{ source('jaffle_shop', 'orders') }}
    1. В подкаталоге stripe создайте файл stg_payments.sql.
    2. Скопируйте следующий запрос в файл и нажмите Save.
    models/staging/stripe/stg_payments.sql
    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') }}
    1. Введите dbt run в командной строке внизу экрана. Вы должны увидеть успешный запуск и три модели.

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

    Этот этап включает создание моделей, которые служат entity layer (слоем сущностей) или concept layer (концептуальным слоем) вашего dbt-проекта, подготавливая данные для отчетности и анализа. Также он включает добавление пакетов и time spine MetricFlow, которые расширяют функциональность dbt.

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

    1. Создайте файл models/marts/fct_orders.sql.
    2. Скопируйте следующий запрос в файл и нажмите Save.
    models/marts/fct_orders.sql
    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

    1. В директории models/marts создайте файл dim_customers.sql.
    2. Скопируйте следующий запрос в файл и нажмите Save.
    models/marts/dim_customers.sql
    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
    1. Создайте модель time spine для MetricFlow, следуя руководству MetricFlow time spine guide. В этом руководстве показано, как создать и SQL-модель, и YAML-конфигурацию, необходимые для вычисления метрик на основе времени.

    2. Введите 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 (для агрегаций данных).

    1. В подкаталоге metrics создайте новый файл fct_orders.yml.
    подсказка

    Убедитесь, что вы сохраняете все semantic models и metrics в директории, указанной в model-paths (или в ее поддиректории, например models/semantic_models/). Если сохранить их вне этого пути, файл semantic_manifest.json окажется пустым, и ваши semantic models или metrics не будут распознаны.

    1. Добавьте следующий код в только что созданный файл:
    models/metrics/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')

    Компоненты семантической модели

    В следующих разделах более подробно объясняются dimensions, entities и measures, а также показано, какую роль каждый из них играет в семантических моделях.

    • Entities выступают уникальными идентификаторами (например, ID-колонками), которые связывают данные из разных таблиц.
    • Dimensions классифицируют и фильтруют данные, упрощая их организацию.
    • Measures вычисляют показатели по данным, предоставляя ценные инсайты через агрегации.

    Сущности

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

    Добавьте entities в файл семантической модели fct_orders.yml:

    models/metrics/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:

    models/metrics/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:

    models/metrics/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, чтобы определить метрики:

    1. Добавьте метрики в файл семантической модели fct_orders.yml:
    подсказка

    Убедитесь, что вы сохраняете все semantic models и метрики в директории, указанной в model-paths (или в её поддиректории, например models/semantic_models/). Если сохранить их вне этого пути, файл semantic_manifest.json окажется пустым, и ваши semantic models или метрики не будут распознаны.

    models/metrics/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
    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:

    1. В подкаталоге metrics создайте файл dim_customers.yml.
    2. Скопируйте следующий запрос в файл и нажмите Save.
    models/metrics/dim_customers.yml
    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 CLICloud 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, если в определении метрики или семантической модели есть ошибка. Вы можете нажать на эту кнопку, чтобы увидеть конкретную проблему и устранить её.

    После просмотра убедитесь, что вы зафиксировали и объединили свои изменения в вашем проекте.

    Проверяйте свои метрики с помощью вкладки Lineage в IDE.Проверяйте свои метрики с помощью вкладки Lineage в IDE.

    Пользователи Cloud CLI

    Этот раздел предназначен для пользователей Cloud CLI. Команды MetricFlow интегрированы с dbt, что означает, что вы можете запускать команды MetricFlow сразу после установки Cloud CLI. Ваша учетная запись будет автоматически управлять контролем версий.

    Следуйте следующим шагам, чтобы начать:

    1. Установите Cloud CLI (если вы ещё этого не сделали). Затем перейдите в директорию вашего проекта dbt.
    2. Выполните команду dbt, например dbt parse, dbt run, dbt compile или dbt build. Если этого не сделать, вы получите сообщение об ошибке, которое начинается с: «ensure that you've ran an artifacts....».
    3. MetricFlow строит семантический граф и генерирует файл semantic_manifest.json в dbt, который сохраняется в директории /target. Если вы используете пример Jaffle Shop, выполните dbt seed && dbt run, чтобы убедиться, что необходимые данные загружены в вашу платформу данных перед продолжением.
    Запускайте dbt parse, чтобы отразить изменения метрик

    Когда вы вносите изменения в метрики, обязательно как минимум выполните dbt parse, чтобы обновить Semantic Layer. Это обновляет файл semantic_manifest.json, отражая ваши изменения при запросах метрик. При запуске dbt parse вам не потребуется пересобирать все модели.

    1. Выполните dbt sl --help, чтобы подтвердить, что у вас установлен MetricFlow и что вы можете просмотреть доступные команды.

    2. Выполните 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
    3. Убедитесь, что значения метрик соответствуют вашим ожиданиям. Чтобы лучше понять, как генерируется метрика, вы можете просмотреть сгенерированный SQL, если введете --compile в командной строке.

    4. Зафиксируйте и объедините изменения в коде, содержащие определения метрик.

    Запустите production job

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

    1. После того как вы определили свои семантические модели и метрики, закоммитьте и смержите изменения метрик в вашем dbt‑проекте.

    2. В dbt создайте новую среду деплоя или используйте существующую среду на dbt версии 1.6 или выше.

      • Примечание — в настоящее время поддерживается только среда деплоя (опыт для разработки появится в ближайшее время)
    3. Чтобы создать новую среду, перейдите в раздел Deploy в навигационном меню, выберите Environments, а затем нажмите Create new environment.

    4. Заполните учетные данные для деплоя, указав имя пользователя и пароль Snowflake. Схему можно назвать как угодно. Нажмите Save, чтобы создать новую production‑среду.

    5. Создайте новую deploy job, которая будет выполняться в только что созданной среде. Вернитесь в меню Deploy, выберите Jobs, затем Create job и нажмите Deploy job.

    6. Настройте job на выполнение команды dbt parse, чтобы разобрать ваши проекты и сгенерировать артефакт semantic_manifest.json. Хотя запуск dbt build не является обязательным, при необходимости вы можете добавить его.

      примечание

      Если вы используете движок dbt Fusion, добавьте команду dbt docs generate в job, чтобы успешно развернуть ваши метрики.

    7. Запустите 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. Выберите окружение

    Выберите окружение, в котором вы хотите включить Семантический слой:

    1. Перейдите в Account settings в навигационном меню.
    2. В разделе Settings нажмите Projects и выберите конкретный проект, для которого вы хотите включить Semantic Layer.
    3. На странице Project details перейдите в раздел Semantic Layer. Выберите Configure Semantic Layer.
    Раздел Semantic Layer на странице «Project details»Раздел Semantic Layer на странице «Project details»
    1. На странице Настройка конфигурации Семантического слоя выберите окружение развертывания, которое вы хотите для Семантического слоя, и нажмите Сохранить. Это предоставляет администраторам гибкость в выборе окружения, в котором будет включен Семантический слой.
    Выберите окружение развертывания, относительно которого будет выполняться ваш Semantic Layer.Выберите окружение развертывания, относительно которого будет выполняться ваш Semantic Layer.

    2. Настройка учетных данных и создание токенов

    Существует два варианта настройки Semantic Layer с использованием API‑токенов:

    Добавить учетные данные и создать сервисные токены

    Первый вариант — использовать сервисные токены для аутентификации. Эти токены связаны с учетными данными платформы данных, которые вы предварительно настраиваете. Настроенные учетные данные используются для выполнения запросов, которые Semantic Layer отправляет к вашей платформе данных.

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

    ВозможностьТариф StarterТарифы Enterprise+ и Enterprise
    Service tokensМожно создать несколько service token, связанных с одними учётными данными (credential).Можно использовать несколько credential и привязывать к каждому из них несколько service token. Обратите внимание, что один service token нельзя привязать более чем к одному credential.
    Credentials per projectОдин credential на проект.Можно добавить несколько credential на проект.
    Link multiple service tokens to a single credential
    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 проверит как Расширенные атрибуты, так и переменную окружения.

    Добавьте учётные данные и сопоставьте их с service token.Добавьте учётные данные и сопоставьте их с service token.
    • Если у вас есть права на создание service token, после добавления credential вы увидите опцию Map new service token. Укажите имя token, установите разрешения Semantic Layer Only и Metadata Only, затем нажмите Save.
    • После генерации token вы больше не сможете просмотреть его значение, поэтому обязательно сохраните его в безопасном месте.
    • Если у вас нет доступа к созданию service token, вы увидите сообщение с предложением связаться с администратором, чтобы он создал token для вас. Администраторы могут создавать и связывать token по мере необходимости.
    Если у вас нет прав на создание service token, вы можете создать credential и попросить администратора создать 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:

    1. Настройте ваши development credentials.
      1. Нажмите на имя вашего аккаунта в левом нижнем меню и перейдите в Account settings > Credentials.
      2. Выберите ваш проект.
      3. Нажмите Edit.
      4. Перейдите в раздел Development credentials и введите необходимые данные.
      5. Нажмите Save.
    2. Создайте personal access token. Обязательно скопируйте token.

    Сгенерированный PAT можно использовать как метод аутентификации для Semantic Layer API и integrations.

    3. Просмотрите сведения о подключении

    1. Вернитесь на страницу Project details, чтобы посмотреть параметры подключения для downstream‑инструментов.

    2. Скопируйте и передайте соответствующим командам Environment ID, service или personal token, Host, а также имя service или personal token для настройки подключения BI‑инструментов. Если ваш инструмент использует GraphQL API, сохраните информацию о GraphQL API host вместо JDBC URL.

      Для информации о том, как подключиться к другим интеграциям, обратитесь к Доступные интеграции.

    После настройки вам будут предоставлены данные для подключения, которые можно использовать для подключения ваших downstream‑инструментов.После настройки вам будут предоставлены данные для подключения, которые можно использовать для подключения ваших downstream‑инструментов.

    4. Добавьте дополнительные учетные данные Enterprise +Enterprise

    Все тарифные планы dbt Enterprise при желании позволяют добавлять несколько учетных данных и сопоставлять их с service tokens. Это обеспечивает более детальный контроль и настраиваемый доступ для разных команд, после чего эти учетные данные можно передавать соответствующим командам для настройки подключения BI‑инструментов. Эти учетные данные управляют физическим доступом к базовым данным, к которым обращается Semantic Layer.

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

     Соображения по связыванию учетных данных
    • Администраторы могут связывать несколько сервисных токенов с одними учетными данными в проекте, но каждый сервисный токен может быть связан только с одними учетными данными на проект.
    • Когда вы отправляете запрос через API, сервисный токен связанного учетного данных будет следовать политикам доступа к представлениям и таблицам, используемым для построения ваших запросов семантического слоя.
    • Используйте Расширенные атрибуты и Переменные окружения при подключении к Семантическому слою. Если вы задаете значение непосредственно в Учетных данных Семантического слоя, оно будет иметь более высокий приоритет, чем Расширенные атрибуты. При использовании переменных окружения будет использоваться значение по умолчанию для окружения.

      Например, задайте хранилище, используя {{env_var('DBT_WAREHOUSE')}} в ваших учетных данных Семантического слоя.

      Аналогично, если вы задаете значение учетной записи с помощью {{env_var('DBT_ACCOUNT')}} в Расширенных атрибутах, dbt проверит как Расширенные атрибуты, так и переменную окружения.

    1. Добавление дополнительных учетных данных

    • После настройки окружения на странице Credentials & service tokens нажмите кнопку Add Semantic Layer credential, чтобы создать несколько учетных данных и сопоставить их с service token.
    • В разделе 1. Add credentials заполните поля учетных данных для вашей платформы данных. Мы рекомендуем использовать учетные данные с правами “read-only”.
      Добавьте учётные данные и сопоставьте их с service token.Добавьте учётные данные и сопоставьте их с service token.

    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 для более тонкого контроля.Используйте страницу конфигурации, чтобы управлять несколькими credential или привязывать/отвязывать service token для более тонкого контроля.

    3. Удалите учетные данные

    • Чтобы удалить учетные данные, вернитесь на страницу Учетные данные и сервисные токены.

    • В разделе Связанные сервисные токены нажмите Редактировать и выберите Удалить учетные данные, чтобы удалить учетные данные.

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

    Удаление конфигурации

    Вы можете удалить всю конфигурацию Semantic Layer для проекта. Обратите внимание, что удаление конфигурации Semantic Layer приведёт к удалению всех учётных данных и отвязке всех service token от проекта. Также это приведёт к тому, что все запросы к Semantic Layer будут завершаться с ошибкой.

    Следуйте этим шагам, чтобы удалить конфигурацию Семантического слоя для проекта:

    1. Перейдите на страницу Детали проекта.
    2. В разделе Семантический слой выберите Удалить Семантический слой.
    3. Подтвердите удаление, нажав Да, удалить семантический слой в всплывающем окне подтверждения.

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

    Удаление конфигурации семантического слоя для проекта.Удаление конфигурации семантического слоя для проекта.

    Дополнительная конфигурация

    Следующие дополнительные гибкие конфигурации для учетных данных Семантического слоя.

    Сопоставьте сервисные токены с учетными данными

    • После настройки вашего окружения вы можете сопоставить дополнительные сервисные токены с теми же учетными данными, если у вас есть необходимые разрешения.
    • Перейдите на страницу Учетные данные и сервисные токены и нажмите кнопку +Добавить сервисный токен в разделе Связанные сервисные токены.
    • Введите имя сервисного токена и выберите необходимый набор разрешений (Только Семантический слой и Только метаданные).
    • Нажмите Сохранить, чтобы связать сервисный токен с учетными данными.
    • Не забудьте скопировать и сохранить сервисный токен в безопасном месте, так как он не будет доступен для просмотра после генерации.
    Сопоставьте дополнительные сервисные токены с учетными данными.Сопоставьте дополнительные сервисные токены с учетными данными.
    • Отвяжите сервисный токен от учетных данных, нажав Отвязать в разделе Связанные сервисные токены. Если вы попытаетесь выполнить запрос к Семантическому слою с отвязанными учетными данными, вы столкнетесь с ошибкой в вашем BI-инструменте, так как не будет сопоставлен действительный токен.

    Управление со страницы сервисных токенов

    Просмотр учетных данных из сервисного токена

    • Просмотрите ваши учетные данные Семантического слоя напрямую, перейдя на страницу API токены, а затем Сервисные токены.
    • Выберите сервисный токен, чтобы просмотреть учетные данные, с которыми он связан. Это полезно, если вы хотите узнать, какие сервисные токены сопоставлены с учетными данными в вашем проекте.

    Создайте новый сервисный токен

    • На странице Сервисные токены создайте новый сервисный токен и сопоставьте его с учетными данными (при условии, что разрешение на семантический слой существует). Это полезно, если вы хотите создать новый сервисный токен и напрямую сопоставить его с учетными данными в вашем проекте.
    • Убедитесь, что выбрали правильный набор разрешений для сервисного токена (Только Семантический слой и Только метаданные).
    Создайте новый сервисный токен и сопоставьте учетные данные напрямую на отдельной странице «Service tokens».Создайте новый сервисный токен и сопоставьте учетные данные напрямую на отдельной странице «Service tokens».

    Запросы к Semantic Layer

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

    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:

    1. Убедитесь, что у вас есть учетная запись Gmail.
    2. Чтобы настроить Google Sheets и выполнять запросы к вашим метрикам, следуйте подробным инструкциям по интеграции с Google Sheets.
    3. Начните исследовать и выполнять запросы к метрикам!
      • Выполните запрос к метрике, например, order_total, и отфильтруйте ее по измерению, например, order_date.
      • Вы также можете использовать параметр group_by, чтобы группировать ваши метрики по определенному измерению.
    Используйте интеграцию Google Sheets с семантическим слоем dbt для выполнения запросов к метрикам с помощью меню Query Builder.Используйте интеграцию Google Sheets с семантическим слоем dbt для выполнения запросов к метрикам с помощью меню Query Builder.

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

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

    1. Перейдите на страницу входа Hex.
    2. Войдите или зарегистрируйтесь (если у вас еще нет аккаунта).
    • Можно создать бесплатный пробный аккаунт Hex, используя рабочую почту или адрес с доменом .edu.
    1. В левом верхнем углу страницы нажмите на иконку HEX, чтобы перейти на главную страницу.
    2. Затем нажмите кнопку + New project в правом верхнем углу.
    Нажмите кнопку '+ New project' в правом верхнем углуНажмите кнопку '+ New project' в правом верхнем углу
    1. В меню слева выберите Data browser. Затем выберите Add a data connection.
    2. Нажмите Snowflake. Укажите имя и описание подключения. Вам не нужны учетные данные к data warehouse, чтобы использовать Semantic Layer.
    Выберите 'Data browser', затем 'Add a data connection', чтобы подключиться к Snowflake.Выберите 'Data browser', затем 'Add a data connection', чтобы подключиться к Snowflake.
    1. В разделе Integrations переведите переключатель dbt вправо, чтобы включить интеграцию dbt.
    Нажмите переключатель dbt, чтобы включить интеграцию.Нажмите переключатель dbt, чтобы включить интеграцию.
    1. Введите следующую информацию:
      • Выберите версию dbt 1.6 или выше
      • Введите ваш Environment ID
      • Введите ваш service token или personal token
      • Обязательно включите переключатель Use Semantic Layer — так все запросы будут маршрутизироваться через dbt
      • Нажмите Create connection в правом нижнем углу
    2. Наведите курсор на More в меню, показанном на изображении ниже, и выберите Semantic Layer.
    Наведите курсор на 'More' и выберите 'dbt Semantic Layer'.Наведите курсор на 'More' и выберите 'dbt Semantic Layer'.
    1. Теперь вы можете выполнять запросы к метрикам в Hex! Попробуйте:
      • Создайте новую ячейку и выберите метрику.
      • Отфильтруйте ее по одному или нескольким измерениям.
      • Создайте визуализацию.

    Подключение и запросы через Sigma

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

    1. Вернитесь в ваш аккаунт Snowflake. В интерфейсе Snowflake нажмите на значок Home в левом верхнем углу. В левой боковой панели выберите Data Products. Затем выберите Partner Connect. Найдите плитку Sigma, прокрутив список или выполнив поиск по Sigma в строке поиска. Нажмите плитку, чтобы подключиться к Sigma.
    Нажмите кнопку '+ New project' в правом верхнем углуНажмите кнопку '+ New project' в правом верхнем углу
    1. Выберите плитку Sigma из списка. Откройте выпадающее меню Optional Grant. Введите RAW и ANALYTICS в текстовое поле, затем нажмите Connect.
    Нажмите кнопку '+ New project' в правом верхнем углуНажмите кнопку '+ New project' в правом верхнем углу
    1. Придумайте название компании и URL. Какой именно URL — не важно, главное, чтобы он был уникальным.
    Нажмите кнопку '+ New project' в правом верхнем углуНажмите кнопку '+ New project' в правом верхнем углу
    1. Введите ваше имя и email. Задайте пароль для аккаунта.
    Нажмите кнопку '+ New project' в правом верхнем углуНажмите кнопку '+ New project' в правом верхнем углу
    1. Отлично! Теперь у вас есть аккаунт 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;
    1. Нажмите на вашу иконку (bubble) в правом верхнем углу. В выпадающем меню выберите Administration.
    Нажмите кнопку '+ New project' в правом верхнем углуНажмите кнопку '+ New project' в правом верхнем углу
    1. Прокрутите вниз до раздела integrations и нажмите Add рядом с интеграцией dbt.
    Нажмите кнопку '+ New project' в правом верхнем углуНажмите кнопку '+ New project' в правом верхнем углу
    1. В разделе dbt Integration заполните обязательные поля и нажмите save:
    • Ваш dbt service account token или personal access tokens.
    • Ваш access URL для существующей интеграции Sigma с dbt. Используйте cloud.getdbt.com как access URL.
    • Ваш dbt Environment ID.
    Нажмите кнопку '+ New project' в правом верхнем углуНажмите кнопку '+ New project' в правом верхнем углу
    1. Вернитесь на главную страницу Sigma. Создайте новый workbook.
    Нажмите кнопку '+ New project' в правом верхнем углуНажмите кнопку '+ New project' в правом верхнем углу
    1. Нажмите Table, затем нажмите SQL. Выберите Snowflake PC_SIGMA_WH в качестве подключения к данным.
    Нажмите кнопку '+ New project' в правом верхнем углуНажмите кнопку '+ New project' в правом верхнем углу
    1. Теперь выполните запрос к рабочей метрике в вашем проекте! Например, допустим, у вас есть метрика, которая измеряет различные значения, связанные с заказами. Вот как вы могли бы выполнить запрос:
    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 и другие.

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

    Нашли ошибку?

    0