# Быстрый старт с dbt Semantic Layer

Платформа dbt | Starter, Enterprise, Enterprise+

[Назад к гайдам](https://docs.getdbt.tech/guides.md)

[Menu ]()



## Введение

[Semantic Layer](https://docs.getdbt.tech/docs/use-dbt-semantic-layer/dbt-sl.md), работающий на базе [MetricFlow](https://docs.getdbt.tech/docs/build/about-metricflow.md), упрощает настройку ключевых бизнес-метрик. Он централизует определения, исключает дублирование кода и обеспечивает удобный доступ к метрикам в инструментах, использующих эти данные. MetricFlow упрощает управление метриками компании, позволяя определять метрики в проекте dbt и запрашивать их в dbt с помощью [команд MetricFlow](https://docs.getdbt.tech/docs/build/metricflow-commands.md).

📹 Узнайте о семантическом слое dbt с помощью видеокурсов по запросу!

Изучите наш [курс по семантическому слою dbt](https://learn.getdbt.com/courses/semantic-layer), чтобы узнать, как определять и запрашивать метрики в вашем проекте dbt.

Кроме того, погрузитесь в мини-курсы по запросам к семантическому слою dbt в ваших любимых инструментах: [Tableau](https://courses.getdbt.com/courses/tableau-querying-the-semantic-layer), [Excel](https://learn.getdbt.com/courses/querying-the-semantic-layer-with-excel), [Hex](https://courses.getdbt.com/courses/hex-querying-the-semantic-layer) и [Mode](https://courses.getdbt.com/courses/mode-querying-the-semantic-layer).

Подключите ИИ к своим метрикам

Инструменты ИИ, такие как Claude и ChatGPT, могут подключаться к Semantic Layer через [сервер dbt MCP](https://docs.getdbt.tech/docs/dbt-ai/about-mcp.md?section=sl-connect-ai), чтобы использовать в ответах ваши централизованно управляемые метрики, а не строить догадки на основе необработанных таблиц.

Это краткое руководство предназначено для пользователей dbt на платформе dbt platform. Вы создадите и определите метрики, настроите Semantic Layer в проекте dbt и выполните запросы к этим метрикам в Google Sheets.

Руководство подходит для любой поддерживаемой платформы данных. Используйте вкладки в разделе [Настройка хранилища](#set-up-your-warehouse), чтобы создать учетную запись, загрузить демонстрационные данные и подключить dbt. На последующих шагах предусмотрены отдельные вкладки для случаев, когда SQL или YAML отличается для вашей платформы.

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

* Для всех развертываний необходима учетная запись [dbt](https://www.getdbt.com/signup/) с тарифным планом Trial, Starter или Enterprise.

* У вас должны быть соответствующие [лицензия dbt](https://docs.getdbt.tech/docs/platform/manage-access/seats-and-users.md) и [разрешения](https://docs.getdbt.tech/docs/platform/manage-access/enterprise-permissions.md) в зависимости от вашего тарифного плана:

   Подробнее о лицензии и разрешениях

  * Enterprise: лицензия Developer с разрешениями Account Admin. Или доступ «Owner» с лицензией Developer и назначенными разрешениями Project Creator, Database Admin или Admin.
  * Starter: доступ «Owner» с лицензией Developer.
  * Trial: автоматический доступ «Owner» в рамках пробного периода тарифного плана Starter.

* Учетная запись в хранилище данных и образец данных Jaffle Shop. Следуйте инструкциям на вкладке вашей платформы в разделе [Настройка хранилища данных](#set-up-your-warehouse).

* Базовое понимание SQL и dbt. Например, вы уже использовали dbt или прошли курс [dbt Fundamentals](https://learn.getdbt.com/courses/dbt-fundamentals).

## Настройка хранилища

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

Semantic Layer в настоящее время поддерживает Snowflake, BigQuery, Databricks, Redshift, Postgres и Trino (включая Starburst Galaxy). Microsoft Fabric не поддерживается. Полный список приведен в разделе [Какие платформы данных поддерживаются](https://docs.getdbt.tech/docs/use-dbt-semantic-layer/setup-sl.md).

### Snowflake

Создайте [пробный аккаунт Snowflake](https://signup.snowflake.com/):

* Выберите редакцию Enterprise Snowflake с правами доступа ACCOUNTADMIN. При выборе облачного провайдера учитывайте потребности вашей организации и ознакомьтесь с разделом [Введение в облачные платформы](https://docs.snowflake.com/en/user-guide/intro-cloud-platforms) в документации Snowflake.
* Выберите облачного провайдера и регион. Подойдут любые облачные провайдеры и регионы, поэтому выбирайте те, которые вам удобнее.

Вы также можете сначала пройти [руководство по быстрому старту с dbt и Snowflake](https://docs.getdbt.tech/guides/snowflake.md), если предпочитаете более подробное пошаговое руководство, посвящённое только Snowflake.

### Создание SQL-файла Snowflake

1. Войдите в свою [пробную учетную запись Snowflake](https://app.snowflake.com).
2. В интерфейсе Snowflake нажмите значок создания **+** в левом верхнем углу (под логотипом Snowflake), чтобы открыть раскрывающееся меню.
3. Выберите первый пункт — **SQL File**.

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

Данные хранятся в CSV-файлах в публичном бакете S3. Подготовьте аккаунт Snowflake и загрузите данные по инструкции ниже.

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

   Введите следующие SQL-команды в редакторе нового SQL-файла Snowflake и нажмите **Run**:

   ```sql
   create warehouse transforming;
   create database raw;
   create database analytics;
   create schema raw.jaffle_shop;
   create schema raw.stripe;
   ```

2. В базе данных `raw` и схемах `jaffle_shop` и `stripe` создайте три таблицы и загрузите в них данные:

   * Очистите редактор SQL-файла Snowflake и выполните команду создания таблицы `customers`:

     ```sql
     create table raw.jaffle_shop.customers
     ( id integer,
       first_name varchar,
       last_name varchar
     );
     ```

   * Очистите редактор и выполните команду загрузки данных в таблицу `customers`:

     ```sql
     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
         );
     ```

   * Очистите редактор и выполните команду создания таблицы `orders`:

     ```sql
     create table raw.jaffle_shop.orders
     ( id integer,
       user_id integer,
       order_date date,
       status varchar,
       _etl_loaded_at timestamp default current_timestamp
     );
     ```

   * Очистите редактор и выполните команду загрузки данных в таблицу `orders`:

     ```sql
     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
         );
     ```

   * Очистите редактор и выполните команду создания таблицы `payment`:

     ```sql
     create table raw.stripe.payment
     ( id integer,
       orderid integer,
       paymentmethod varchar,
       status varchar,
       amount integer,
       created date,
       _batched_at timestamp default current_timestamp
     );
     ```

   * Очистите редактор и выполните команду загрузки данных в таблицу `payment`:

     ```sql
     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 об успешной загрузке данных в редакторе.](/img/docs/dbt-platform/semantic-layer/sl-snowflake-confirm.jpg?v=2 "На изображении показано подтверждение Snowflake об успешной загрузке данных в редакторе.")](#)На изображении показано подтверждение Snowflake об успешной загрузке данных в редакторе.

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

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

### Использовать Partner Connect

С помощью Partner Connect вы можете создать полноценный аккаунт dbt с [подключением к Snowflake](https://docs.getdbt.tech/docs/platform/connect-data-platform/connect-snowflake.md), [управляемым репозиторием](https://docs.getdbt.tech/docs/platform/git/managed-repository.md), [окружениями](https://docs.getdbt.tech/docs/build/custom-schemas.md#managing-environments) и учетными данными.

1. На левой боковой панели интерфейса Snowflake перейдите в **Admin > Partner Connect**. Найдите плитку dbt в разделе **Data Integration** или воспользуйтесь строкой поиска, чтобы найти dbt. Нажмите на плитку, чтобы подключиться к dbt.

   [![Окно Snowflake Partner Connect](/img/snowflake_tutorial/snowflake_partner_connect_box.png?v=2 "Окно Snowflake Partner Connect")](#)Окно Snowflake Partner Connect

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

   [![Классический интерфейс Snowflake — Partner Connect](/img/snowflake_tutorial/snowflake_classic_ui_partner_connect.png?v=2 "Классический интерфейс Snowflake — Partner Connect")](#)Классический интерфейс Snowflake — Partner Connect

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

[![Классический интерфейс Snowflake — окно подключения](/img/snowflake_tutorial/snowflake_classic_ui_connection_box.png?v=2 "Классический интерфейс Snowflake — окно подключения")](#)Классический интерфейс Snowflake — окно подключения

[![Новый интерфейс Snowflake — окно подключения](/img/snowflake_tutorial/snowflake_new_ui_connection_box.png?v=2 "Новый интерфейс Snowflake — окно подключения")](#)Новый интерфейс Snowflake — окно подключения

3. Нажмите **Activate**, когда появится всплывающее окно:

[![Классический интерфейс Snowflake — окно активации](/img/snowflake_tutorial/snowflake_classic_ui_activation_window.png?v=2 "Классический интерфейс Snowflake — окно активации")](#)Классический интерфейс Snowflake — окно активации

[![Новый интерфейс Snowflake — окно активации](/img/snowflake_tutorial/snowflake_new_ui_activation_window.png?v=2 "Новый интерфейс Snowflake — окно активации")](#)Новый интерфейс Snowflake — окно активации

4. После загрузки новой вкладки вы увидите форму. Если вы уже создали учетную запись dbt, вам будет предложено указать имя учетной записи. Если вы еще не создали учетную запись, вам будет предложено указать имя учетной записи и пароль.

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

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

[![dbt — обзор проекта Snowflake](/img/snowflake_tutorial/dbt_cloud_snowflake_project_overview.png?v=2 "dbt — обзор проекта Snowflake")](#)dbt — обзор проекта Snowflake

[![dbt — Обновление базы данных и warehouse](/img/snowflake_tutorial/dbt_cloud_update_database_and_warehouse.png?v=2 "dbt — Обновление базы данных и warehouse")](#)dbt — Обновление базы данных и warehouse

### Подключить вручную

1. Создайте новый проект в dbt. Перейдите в **Account settings** (нажав на название своего аккаунта в меню слева) и нажмите **+ New Project**.

2. Введите название проекта и нажмите **Continue**.

3. В разделе **Configure your development environment** откройте раскрывающееся меню **Connection** и выберите **Add new connection**. Вы перейдёте к настройкам подключения.

4. В разделе **Type** выберите **Snowflake**.

   [![dbt — Выбор подключения Snowflake](/img/snowflake_tutorial/dbt_cloud_setup_snowflake_connection_start.png?v=2 "dbt — Выбор подключения Snowflake")](#)dbt — Выбор подключения Snowflake

5. Укажите параметры подключения к Snowflake в разделе **Settings**:

   * **Account:** Определите идентификатор аккаунта по URL пробного аккаунта Snowflake, удалив `snowflakecomputing.com`. Порядок компонентов идентификатора аккаунта зависит от версии Snowflake. Например, URL классической консоли Snowflake может выглядеть так: `oq65696.west-us-2.azure.snowflakecomputing.com`. URL AppUI или Snowsight может выглядеть так: `snowflakecomputing.com/west-us-2.azure/oq65696`. В обоих примерах идентификатор вашего аккаунта будет таким: `oq65696.west-us-2.azure`. Подробнее см. в разделе [Идентификаторы аккаунтов](https://docs.snowflake.com/en/user-guide/admin-account-identifier.html) документации Snowflake.

       ✅ `db5261993` или `db5261993.east-us-2.azure`<br />  ❌ `db5261993.eu-central-1.snowflakecomputing.com`

   * **Role:** Пока оставьте поле пустым. Позже вы сможете указать здесь роль Snowflake по умолчанию.

   * **Database:** `analytics`. Этот параметр указывает dbt создавать новые модели в базе данных analytics.

   * **Warehouse:** `transforming`. Этот параметр указывает dbt использовать виртуальный склад transforming, созданный ранее.

   [![dbt — Настройки аккаунта Snowflake](/img/snowflake_tutorial/dbt_cloud_snowflake_account_settings.png?v=2 "dbt — Настройки аккаунта Snowflake")](#)dbt — Настройки аккаунта Snowflake

6. Нажмите **Save**.

7. Настройте свои личные учетные данные пользователя, перейдя в **Your profile** > **Credentials**.

8. Выберите проект, использующий подключение к Snowflake.

9. Нажмите ссылку **configure your development environment and add a connection**. Откроется страница, на которой можно ввести свои личные учетные данные пользователя.

10. Введите свои учетные данные для Snowflake в разделе **User credentials**:

    * **Username:** Имя пользователя, которое вы создали для Snowflake. Это не ваш адрес электронной почты; обычно оно состоит из вашего имени и фамилии, записанных слитно.
    * **Password:** Пароль, который вы задали при создании учетной записи Snowflake.
    * **Schema:** Обратите внимание, что имя схемы уже создано автоматически. По принятому соглашению оно имеет вид `dbt_<first-initial><last-name>`. Эта схема напрямую связана с вашей средой разработки, и именно в ней будут создаваться ваши модели при запуске dbt в Studio IDE.
    * **Target name:** Оставьте значение по умолчанию.
    * **Threads:** Оставьте значение 4. Это количество одновременных подключений, которые dbt будет устанавливать для параллельного построения моделей.

    [![dbt — учетные данные пользователя Snowflake](/img/snowflake_tutorial/dbt_cloud_snowflake_development_credentials.png?v=2 "dbt — учетные данные пользователя Snowflake")](#)dbt — учетные данные пользователя Snowflake

11. Нажмите **Test connection**. Это позволит проверить, что dbt может получить доступ к вашей учетной записи Snowflake.

12. Если проверка прошла успешно, нажмите **Save**, чтобы завершить настройку. Если проверка завершилась ошибкой, вам может потребоваться проверить настройки Snowflake и учетные данные.

### BigQuery

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

* [Шаг 2: Создание нового проекта GCP](https://docs.getdbt.tech/guides/bigquery.md?step=2)
* [Шаг 3: Создание наборов данных BigQuery](https://docs.getdbt.tech/guides/bigquery.md?step=3)
* [Шаг 4: Создание учетных данных BigQuery](https://docs.getdbt.tech/guides/bigquery.md?step=4)
* [Шаг 5: Подключение dbt к BigQuery](https://docs.getdbt.tech/guides/bigquery.md?step=5)

На шаге 3 создайте в своем проекте оба набора данных: `jaffle_shop` и `stripe`. Таблицы с примерами данных, к которым вы будете обращаться в запросах, находятся в общедоступном проекте `dbt-tutorial`.

### Databricks

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

* [Шаг 2: Создание рабочего пространства Databricks](https://docs.getdbt.tech/guides/databricks.md?step=2)
* [Шаг 3: Загрузка данных](https://docs.getdbt.tech/guides/databricks.md?step=3)
* [Шаг 4: Подключение dbt к Databricks](https://docs.getdbt.tech/guides/databricks.md?step=4)
* [Шаг 5: Настройка интеграции через Partner Connect](https://docs.getdbt.tech/guides/databricks.md?step=5)

На шаге 4 объясняются различия между подключением через Partner Connect и подключением вручную. Шаг 5 посвящен Partner Connect. Если вы подключаетесь вручную, воспользуйтесь документацией Databricks, ссылка на которую приведена на этом шаге.

### Redshift

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

* [Шаг 2: Создание кластера Redshift](https://docs.getdbt.tech/guides/redshift.md?step=2)
* [Шаг 3: Загрузка данных](https://docs.getdbt.tech/guides/redshift.md?step=3)
* [Шаг 4: Подключение dbt к Redshift](https://docs.getdbt.tech/guides/redshift.md?step=4)

### Starburst Galaxy

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

* [Шаг 2: Загрузка данных в бакет Amazon S3](https://docs.getdbt.tech/guides/starburst-galaxy.md?step=2)
* [Шаг 3: Подключение Starburst Galaxy к бакету Amazon S3](https://docs.getdbt.tech/guides/starburst-galaxy.md?step=3)
* [Шаг 4: Создание таблиц с помощью Starburst Galaxy](https://docs.getdbt.tech/guides/starburst-galaxy.md?step=4)
* [Шаг 5: Подключение dbt к Starburst Galaxy](https://docs.getdbt.tech/guides/starburst-galaxy.md?step=5)

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

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

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

Если вы использовали Partner Connect в Snowflake или Databricks, можете перейти к [инициализации проекта dbt](#build-your-dbt-project). Partner Connect предоставляет [управляемый репозиторий](https://docs.getdbt.tech/docs/platform/git/managed-repository.md). В противном случае вам потребуется настроить подключение к репозиторию.

При разработке в dbt вы можете использовать [Git](https://docs.getdbt.tech/docs/platform/git/git-version-control.md) для управления версиями кода.

Чтобы подключиться к репозиторию, вы можете настроить [управляемый репозиторий](https://docs.getdbt.tech/docs/platform/git/managed-repository.md), размещённый на стороне dbt, или напрямую подключиться к [поддерживаемому Git-провайдеру](https://docs.getdbt.tech/docs/platform/git/connect-github.md). Управляемые репозитории — отличный способ попробовать dbt без необходимости создавать новый репозиторий. В долгосрочной перспективе лучше подключиться к поддерживаемому Git-провайдеру, чтобы использовать такие возможности, как автоматизация и [непрерывная интеграция](https://docs.getdbt.tech/docs/deploy/continuous-integration.md).

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

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

### Инициализация проекта dbt

В этом руководстве предполагается, что вы используете [Studio IDE](https://docs.getdbt.tech/docs/platform/studio-ide/develop-in-studio.md) для разработки проекта dbt, определения метрик, а также выполнения запросов к метрикам и предварительного просмотра результатов с помощью [команд MetricFlow](https://docs.getdbt.tech/docs/build/metricflow-commands.md).

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

1. Нажмите **Start developing in the Studio IDE**. Первый запуск проекта может занять несколько минут: за это время устанавливается подключение к git, клонируется репозиторий и проверяется подключение к хранилищу данных.

2. Над деревом файлов слева нажмите **Initialize your project**. Это создаст структуру папок с примерами моделей.

3. Создайте первый коммит, нажав **Commit and sync**. Используйте сообщение коммита `initial commit`. Это создаст первый коммит в управляемом репозитории и позволит создать ветку, в которой вы сможете добавлять новый код dbt.

4. Теперь вы можете напрямую выполнять запросы к данным в хранилище и запускать `dbt run`. Попробуйте сделать это сейчас:

   * Удалите папку models/examples в **File Catalog**.
   * Нажмите **+ Create new file**, добавьте в новый файл запрос для своего хранилища данных и нажмите **Save as**, чтобы сохранить новый файл:

### Snowflake

```sql
select * from raw.jaffle_shop.customers
```

### BigQuery

```sql
select * from `dbt-tutorial.jaffle_shop.customers`
```

### Databricks

```sql
select * from default.jaffle_shop_customers
```

### Redshift

```sql
select * from jaffle_shop.customers
```

### Starburst Galaxy

```sql
select * from dbt_quickstart.jaffle_shop.jaffle_shop_customers
```

* В строке команд внизу введите dbt run и нажмите Enter. Должно появиться сообщение dbt run succeeded.

## Сборка dbt-проекта

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

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

[Sources](https://docs.getdbt.tech/docs/build/sources.md) в dbt — это таблицы с сырыми данными, которые вы будете преобразовывать. Организуя определения sources, вы документируете происхождение данных. Это также делает проект и трансформации более надежными, структурированными и понятными.

В Studio IDE есть два варианта работы с файлами:

* **Создать новую ветку (рекомендуется):** Создайте новую ветку для редактирования файлов и фиксации изменений. Перейдите в раздел **Version Control** на левой боковой панели и нажмите **Create branch**.
* **Редактировать файлы в защищённой основной ветке:** Выберите этот вариант, если предпочитаете редактировать, форматировать файлы, проверять их линтером и выполнять команды dbt непосредственно в основной ветке git. Studio IDE не позволяет фиксировать изменения в защищённой ветке, поэтому вам будет предложено зафиксировать изменения в новой ветке.

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

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

### Snowflake

models/staging/jaffle\_shop/src\_jaffle\_shop.yml

```yaml
sources:
  - name: jaffle_shop
    database: raw
    schema: jaffle_shop
    tables:
      - name: customers
      - name: orders
```

### BigQuery

models/staging/jaffle\_shop/src\_jaffle\_shop.yml

```yaml
sources:
  - name: jaffle_shop
    database: dbt-tutorial
    schema: jaffle_shop
    tables:
      - name: customers
      - name: orders
```

### Redshift

models/staging/jaffle\_shop/src\_jaffle\_shop.yml

```yaml
sources:
  - name: jaffle_shop
    schema: jaffle_shop
    tables:
      - name: customers
      - name: orders
```

### Databricks

models/staging/jaffle\_shop/src\_jaffle\_shop.yml

```yaml
sources:
  - name: jaffle_shop
    schema: default
    tables:
      - name: customers
        identifier: jaffle_shop_customers
      - name: orders
        identifier: jaffle_shop_orders
```

### Starburst Galaxy

models/staging/jaffle\_shop/src\_jaffle\_shop.yml

```yaml
sources:
  - name: jaffle_shop
    database: dbt_quickstart
    schema: jaffle_shop
    tables:
      - name: customers
        identifier: jaffle_shop_customers
      - name: orders
        identifier: jaffle_shop_orders
```

подсказка

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

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

### Snowflake

models/staging/stripe/src\_stripe.yml

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

### BigQuery

models/staging/stripe/src\_stripe.yml

```yaml
sources:
  - name: stripe
    database: dbt-tutorial
    schema: stripe
    tables:
      - name: payment
```

### Redshift

models/staging/stripe/src\_stripe.yml

```yaml
sources:
  - name: stripe
    schema: stripe
    tables:
      - name: payment
```

### Databricks

models/staging/stripe/src\_stripe.yml

```yaml
sources:
  - name: stripe
    schema: default
    tables:
      - name: payment
        identifier: stripe_payments
```

### Starburst Galaxy

models/staging/stripe/src\_stripe.yml

```yaml
sources:
  - name: stripe
    database: dbt_quickstart
    schema: jaffle_shop
    tables:
      - name: payment
        identifier: stripe_payments
```

### Добавьте модели слоя staging

[Модели слоя staging](https://docs.getdbt.tech/best-practices/how-we-structure/2-staging.md) — это первый этап преобразования данных в dbt. Они очищают и подготавливают исходные данные для более сложных преобразований и анализа.

SQL-код моделей слоя staging использует `source()`, поэтому в нём используются имена из только что добавленного YAML-файла. Например, в BigQuery это указывает на `dbt-tutorial.jaffle_shop.customers`. В Snowflake — на `raw.jaffle_shop.customers`. Если на вашей платформе используется другое имя таблицы, оно уже указано в YAML-файле.

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

1. В подкаталоге `jaffle_shop` создайте файл `stg_customers.sql`. Либо вы можете использовать кнопку **Generate model**, чтобы создать отдельный файл модели для каждого source.
2. Скопируйте следующий запрос в файл и нажмите **Save**.

models/staging/jaffle\_shop/stg\_customers.sql

```sql
  select
   id as customer_id,
   first_name,
   last_name
  from {{ source('jaffle_shop', 'customers') }}
```

3. В том же подкаталоге `jaffle_shop` создайте файл `stg_orders.sql`.
4. Скопируйте следующий запрос в файл и нажмите **Save**.

models/staging/jaffle\_shop/stg\_orders.sql

```sql
  select
    id as order_id,
    user_id as customer_id,
    order_date,
    status
  from {{ source('jaffle_shop', 'orders') }}
```

5. В подкаталоге `stripe` создайте файл `stg_payments.sql`.
6. Скопируйте следующий запрос в файл и нажмите **Save**.

### Snowflake

models/staging/stripe/stg\_payments.sql

```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') }}
```

### BigQuery

models/staging/stripe/stg\_payments.sql

```sql
select
   id as payment_id,
   orderid as order_id,
   paymentmethod as payment_method,
   status,
   -- сумма хранится в центах, преобразуем её в доллары
   amount / 100 as amount,
   created as created_at
from {{ source('stripe', 'payment') }}
```

### Redshift

models/staging/stripe/stg\_payments.sql

```sql
select
   id as payment_id,
   orderid as order_id,
   paymentmethod as payment_method,
   status,
   -- сумма хранится в центах, преобразуем её в доллары
   amount / 100 as amount,
   created as created_at
from {{ source('stripe', 'payment') }}
```

### Databricks

models/staging/stripe/stg\_payments.sql

```sql
select
   id as payment_id,
   orderid as order_id,
   paymentmethod as payment_method,
   status,
   -- сумма хранится в центах, преобразуем её в доллары
   amount / 100 as amount,
   created as created_at
from {{ source('stripe', 'payment') }}
```

### Starburst Galaxy

models/staging/stripe/stg\_payments.sql

```sql
select
   id as payment_id,
   order_id,
   paymentmethod as payment_method,
   status,
   -- сумма хранится в центах, преобразуем её в доллары
   amount / 100 as amount,
   created as created_at
from {{ source('stripe', 'payment') }}
```

7. Введите `dbt run` в командной строке в нижней части экрана. Команда должна выполниться успешно, и вы увидите три модели.

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

Этот этап включает создание [моделей, которые служат entity layer (слоем сущностей) или concept layer (концептуальным слоем) вашего dbt-проекта](https://docs.getdbt.tech/best-practices/how-we-structure/4-marts.md), подготавливая данные для отчетности и анализа. Также он включает добавление [пакетов](https://docs.getdbt.tech/docs/build/packages.md) и [time spine MetricFlow](https://docs.getdbt.tech/docs/build/metricflow-time-spine.md), которые расширяют функциональность dbt.

Этот этап — [слой marts](https://docs.getdbt.tech/best-practices/how-we-structure/1-guide-overview.md#guide-structure-overview), который объединяет модульные части в широкое, насыщенное представление сущностей, важных для организации.

1. Создайте файл `models/marts/fct_orders.sql`.
2. Скопируйте следующий запрос в файл и нажмите **Save**.

models/marts/fct\_orders.sql

```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
```

3. В директории `models/marts` создайте файл `dim_customers.sql`.
4. Скопируйте следующий запрос в файл и нажмите **Save**.

models/marts/dim\_customers.sql

```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
```

5. Создайте модель time spine для MetricFlow, следуя руководству [MetricFlow time spine guide](https://docs.getdbt.tech/guides/mf-time-spine.md?step=1). В этом руководстве показано, как создать и SQL-модель, и YAML-конфигурацию, необходимые для вычисления метрик на основе времени.

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

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

В этом разделе вы узнаете о [семантических моделях](https://docs.getdbt.tech/guides/sl-qs.md?step=5#about-semantic-models), [их компонентах](https://docs.getdbt.tech/guides/sl-qs.md?step=5#semantic-model-components) и [о том, как настроить временную шкалу (time spine)](https://docs.getdbt.tech/guides/sl-qs.md?step=5#configure-a-time-spine).

### О семантических моделях

(Версии dbt: v1.12 и новее)

[Семантические модели](https://docs.getdbt.tech/docs/build/semantic-models.md) содержат множество типов объектов (таких как сущности, простые метрики и измерения), которые позволяют MetricFlow формировать запросы на основе определений метрик.

* Каждая семантическая модель соответствует одной SQL-модели dbt (связь 1:1).
* Каждая семантическая модель содержит не более одной первичной или естественной сущности.
* Каждая семантическая модель содержит ноль, одну или несколько внешних или уникальных сущностей, используемых для связи с другими сущностями.
* Каждая семантическая модель также может содержать измерения, простые метрики и метрики. Именно эти объекты передаются в ваш BI-инструмент и используются им для выполнения запросов.

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

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

подсказка

Обязательно сохраняйте все семантические модели и метрики в каталоге, указанном в [`model-paths`](https://docs.getdbt.tech/reference/project-configs/model-paths.md) (или в его подкаталоге, например `models/semantic_models/`). Если сохранить их за пределами этого пути, файл `semantic_manifest.json` окажется пустым, а ваши семантические модели или метрики не будут распознаны.

2. Добавьте следующий код в только что созданный файл:

models/fct\_orders.yml

```yaml
models:
  - name: fct_orders
    description: |
      Таблица фактов заказов. Уровень детализации этой таблицы — одна строка на заказ.
    semantic_model:
      enabled: true
      name: orders
      
    agg_time_dimension: order_date
```

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

(Версии dbt: v1.12 и новее)

В следующих разделах объясняется роль [измерений](https://docs.getdbt.tech/docs/build/dimensions.md), [сущностей](https://docs.getdbt.tech/docs/build/entities.md) и [простых метрик](https://docs.getdbt.tech/docs/build/metrics-overview.md#simple-metrics) в семантических моделях.

* [Сущности](#entities) служат уникальными идентификаторами, например столбцами ID, и связывают данные из разных таблиц.
* [Измерения](#dimensions) позволяют группировать и фильтровать данные.
* [Простые метрики](#simple-metrics) вычисляют значения с помощью функций агрегирования.

### Сущности

[Сущности](https://docs.getdbt.tech/docs/build/semantic-models.md#entities) — это понятия реального бизнеса, которые служат основой вашей семантической модели. В наших semantic models это будут ID-колонки (например, `order_id`). Они будут выступать ключами для join с другими semantic models.

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

(Версии dbt: v1.12 и новее)

models/fct\_orders.yml

```yaml
models:
  - name: fct_orders
    semantic_model:
      enabled: true
      name: orders
      
    agg_time_dimension: order_date
    
    columns:
      # Сущности
      - name: order_id
        entity:
          type: primary
          name: order_id
      - name: customer_id
        entity:
          name: customer
          type: foreign
```

### Измерения

[Измерения](https://docs.getdbt.tech/docs/build/semantic-models.md#dimensions) — это способ группировать или фильтровать информацию по категориям или времени.

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

(Версии dbt: v1.12 и новее)

models/fct\_orders.yml

```yaml
models:
  - name: fct_orders
    semantic_model:
      enabled: true
      name: orders
      
    agg_time_dimension: order_date
    
    columns:
      # Сущности
      - name: order_id
        entity:
          type: primary
          name: order_id
      - name: customer_id
        entity:
          name: customer
          type: foreign
      # Недавно добавлено — измерения      
      - name: order_date
        granularity: day
        dimension:
          type: time
```

(Версии dbt: v1.12 и новее)

### Простые метрики

[Простые метрики](https://docs.getdbt.tech/docs/build/simple.md) выполняют агрегацию (например, `sum`, `count`, `average` и т. д.) по одному полю вашей модели. Они заменяют понятие «меры» из предыдущих версий. Чтобы определить более сложные метрики, обратитесь к разделу [Определение метрик и добавление второй семантической модели](https://docs.getdbt.tech/guides/sl-qs.md?step=6).

Добавьте простые метрики в файл модели `fct_orders.yml`:

models/fct\_orders.yml

```yaml
models:
  - name: fct_orders
    semantic_model:
      enabled: true
      name: orders
      
    agg_time_dimension: order_date
    
    columns:
      # Сущности
      - name: order_id
        entity:
          type: primary
          name: order_id
      - name: customer_id
        entity:
          name: customer
          type: foreign
      # Измерения      
      - name: order_date
        granularity: day
        dimension:
          type: time
      - name: amount
        dimension:
          type: categorical
          
    # Добавлено — простые метрики
    metrics:
      - name: order_total
        description: Общая сумма каждого заказа с учётом налогов
        type: simple
        label: Общая сумма заказа
        agg: sum
        expr: amount
      - name: order_count
        type: simple
        label: Количество заказов
        agg: sum
        expr: 1
      - name: customers_with_orders
        description: Количество уникальных клиентов, размещающих заказы
        type: simple
        label: Клиенты с заказами
        agg: count_distinct
        expr: customer_id
      - name: order_value_p99
        type: simple
        label: 99-й процентиль стоимости заказа
        agg: percentile
        expr: amount
        percentile: 99.0
        percentile_type: discrete
```

### Настройка временной оси

Чтобы обеспечить точные агрегации по времени, необходимо настроить [time spine](https://docs.getdbt.tech/docs/build/metricflow-time-spine.md). Time spine позволяет корректно рассчитывать метрики на разных временных гранулярностях.

Следуйте руководству [MetricFlow time spine guide](https://docs.getdbt.tech/guides/mf-time-spine.md?step=1) с полными пошаговыми инструкциями по созданию и настройке модели time spine. В этом руководстве приведены актуальные best practices и исключены устаревшие конфигурации.

## Определите метрики и добавьте вторую семантическую модель

В этом разделе вы [определите метрики](#define-metrics) и [добавите в проект вторую семантическую модель](#add-second-semantic-model-to-your-project).

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

[Метрики](https://docs.getdbt.tech/docs/build/metrics-overview.md) — это язык, на котором говорят бизнес-пользователи, и способ измерять эффективность бизнеса. Метрика — это агрегация над колонкой в вашем warehouse, которую вы обогащаете измерениями (dimensional cuts).

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

* [Метрики конверсии](https://docs.getdbt.tech/docs/build/conversion.md) — Отслеживают, когда для сущности происходят базовое событие и последующее событие конверсии в пределах заданного периода времени.
* [Накопительные метрики](https://docs.getdbt.tech/docs/build/cumulative.md) — Агрегируют меру в пределах заданного окна. Если окно не указано, мера накапливается за весь период, за который записаны данные. Обратите внимание: перед добавлением накопительных метрик необходимо создать модель временной оси (time spine).
* [Производные метрики](https://docs.getdbt.tech/docs/build/metrics-overview.md#derived-metrics) — Позволяют выполнять вычисления на основе метрик.
* [Простые метрики](https://docs.getdbt.tech/docs/build/metrics-overview.md#simple-metrics) — Напрямую ссылаются на выражение для одного столбца в семантической модели, без участия дополнительных столбцов. Они представляют собой агрегации по столбцу в вашей платформе данных и могут фильтроваться по одному или нескольким измерениям.
* [Метрики отношений](https://docs.getdbt.tech/docs/build/metrics-overview.md#ratio-metrics) — Используют метрику в числителе и метрику в знаменателе. Строку ограничения можно применить как к числителю и знаменателю одновременно, так и отдельно к числителю или знаменателю.

После создания семантических моделей можно приступить к созданию метрик, ссылаясь на уже созданные (Версии dbt: v1.12 и новее) простые метрики:

1. Добавьте метрики в файл `fct_orders.yml`:

подсказка

Убедитесь, что вы сохраняете все semantic models и метрики в директории, указанной в [`model-paths`](https://docs.getdbt.tech/reference/project-configs/model-paths.md) (или в её поддиректории, например `models/semantic_models/`). Если сохранить их вне этого пути, файл `semantic_manifest.json` окажется пустым, и ваши semantic models или метрики не будут распознаны.

(Версии dbt: v1.12 и новее)

models/fct\_orders.yml

```yaml
models:
  - name: fct_orders
    semantic_model:
      enabled: true
      name: orders
      
    agg_time_dimension: order_date
    
    columns:
      - name: order_id
        entity:
          type: primary
          name: order_id
      - name: customer_id
        entity:
          name: customer
          type: foreign
      - name: order_date
        granularity: day
        dimension:
          type: time
      - name: amount
        dimension:
          type: categorical
          
    metrics:
      # Метрики типа simple
      - name: order_total
        description: Суммарная стоимость заказов
        type: simple
        label: Общая стоимость заказов
        agg: sum
        expr: amount
      - name: order_count
        description: Количество заказов
        type: simple
        label: Количество заказов
        agg: sum
        expr: 1
      - name: customers_with_orders
        description: Количество уникальных клиентов, разместивших заказы
        type: simple
        label: Клиенты с заказами
        agg: count_distinct
        expr: customer_id
      - name: large_orders
        description: Количество заказов с общей стоимостью более 20
        type: simple
        label: Крупные заказы
        agg: sum
        expr: 1
        filter: |
          {{ Dimension('order_id__amount') }} >= 20
      # Метрика типа ratio
      - name: avg_order_value
        label: Средняя стоимость заказа
        description: Средняя стоимость одного заказа
        type: ratio
        numerator: order_total
        denominator: order_count
      # Метрики типа cumulative
      - name: cumulative_order_amount_mtd
        label: Накопленная сумма заказов с начала месяца
        description: Стоимость всех заказов с начала текущего месяца
        type: cumulative
        grain_to_date: month
        input_metric: order_total
      # Производная метрика
      - name: pct_of_orders_that_are_large
        label: Процент крупных заказов
        description: Процент заказов, относящихся к крупным
        type: derived
        expr: large_orders / order_count
        input_metrics:
          - name: large_orders
          - name: order_count
```

### Добавьте вторую семантическую модель в свой проект

(Версии dbt: v1.12 и новее)

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

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

После настройки модели orders:

1. Создайте файл `dim_customers.yml`.
2. Скопируйте следующий код в файл и нажмите **Сохранить**.

(Версии dbt: v1.12 и новее)

models/dim\_customers.yml

```yaml
models:
  - name: dim_customers
    semantic_model:
      enabled: true
      name: customers
      
    agg_time_dimension: most_recent_order_date
    
    columns:
      # Entities
      - name: customer_id
        entity:
          name: customer
          type: primary
      # Dimensions
      - name: first_name
        dimension:
          name: customer_name
          type: categorical
      - name: first_order_date
        granularity: day
        dimension:
          type: time
      - name: most_recent_order_date
        granularity: day
        dimension:
          type: time
      - name: number_of_orders
        dimension:
          type: categorical
      - name: lifetime_value
        dimension:
          type: categorical
          
    # Metrics
    metrics:
      - name: customers_with_orders
        label: Customers with orders
        description: Unique count of customers placing orders
        type: simple
        agg: count_distinct
        expr: customer_id
      - name: count_lifetime_orders
        description: Total count of orders per customer
        type: simple
        label: Lifetime orders
        agg: sum
        expr: number_of_orders
      - name: lifetime_spend
        description: Gross customer lifetime spend inclusive of taxes
        type: simple
        label: Lifetime spend
        agg: sum
        expr: lifetime_value
```

Эта семантическая модель использует простые метрики для анализа показателей клиентов и делает акцент на таких измерениях клиентов, как имя, тип и даты заказов. Её особенность — анализ поведения клиентов, их пожизненной ценности и закономерностей оформления заказов.

## Тестируйте и запрашивайте метрики

Для работы с метриками в dbt у вас есть несколько инструментов для валидации или выполнения команд. Вот как вы можете тестировать и запрашивать метрики в зависимости от вашей настройки:

* [**Пользователи Studio IDE**](#studio-ide-users) — Выполняйте [команды MetricFlow](https://docs.getdbt.tech/docs/build/metricflow-commands.md#metricflow-commands) непосредственно в [Studio IDE](https://docs.getdbt.tech/docs/platform/studio-ide/develop-in-studio.md), чтобы запрашивать и просматривать метрики. Просматривайте визуальное представление метрик на вкладке **Lineage**.
* [**Пользователи dbt platform CLI**](#dbt-cli-users) — [dbt platform CLI](https://docs.getdbt.tech/docs/platform/dbt-cli-installation.md) позволяет выполнять [команды MetricFlow](https://docs.getdbt.tech/docs/build/metricflow-commands.md#metricflow-commands) для запроса и предварительного просмотра метрик непосредственно в интерфейсе командной строки.
* **Пользователи dbt v1** — Используйте MetricFlow CLI для выполнения команд. Хотя это руководство предназначено прежде всего для пользователей dbt, пользователи dbt v1 могут найти подробные инструкции по настройке MetricFlow CLI на странице [«Команды MetricFlow»](https://docs.getdbt.tech/docs/build/metricflow-commands.md#metricflow-commands). Обратите внимание: для использования Semantic Layer необходима [учётная запись с тарифом Starter или Enterprise](https://www.getdbt.com/).

Кроме того, вы можете выполнять команды с помощью SQL-клиентов, таких как DataGrip, DBeaver или RazorSQL.

### Пользователи Studio IDE

Вы можете использовать префикс `dbt sl` перед именем команды, чтобы выполнять команды в dbt. Например, чтобы вывести список всех метрик, выполните `dbt sl list metrics`. Полный список команд MetricFlow, доступных в Studio IDE, приведён на странице [Команды MetricFlow](https://docs.getdbt.tech/docs/build/metricflow-commands.md#metricflow-commands).

**Кнопка статуса** в Studio IDE (расположенная в правом нижнем углу редактора) отображает статус **Error**, если в определении метрики или семантической модели есть ошибка. Нажмите эту кнопку, чтобы узнать, в чём именно заключается проблема, и устранить её.

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

### Пользователи dbt platform CLI

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

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

1. Установите [dbt platform CLI](https://docs.getdbt.tech/docs/platform/dbt-cli-installation.md) (если вы ещё этого не сделали). Затем перейдите в каталог вашего проекта dbt.
2. Выполните команду dbt, например `dbt parse`, `dbt run`, `dbt compile` или `dbt build`. Если этого не сделать, вы получите сообщение об ошибке, которое начинается с: "ensure that you've ran an artifacts....".
3. MetricFlow строит семантический граф и создаёт в dbt файл `semantic_manifest.json`, который сохраняется в каталоге `/target`. (Версии dbt: v1.12 и новее) Начиная с dbt v1.12, dbt также записывает файл `osi_document.json` в каталог `target/` на этапе разбора. Подробнее см. в разделе [Семантический манифест](https://docs.getdbt.tech/reference/artifacts/sl-manifest.md#apache-ossie-document). Если вы используете пример Jaffle Shop, выполните `dbt seed && dbt run`, чтобы перед продолжением убедиться, что необходимые данные есть на вашей платформе данных.

Выполняйте dbt parse, чтобы отразить изменения метрик

При изменении метрик обязательно выполняйте как минимум `dbt parse`, чтобы обновить Semantic Layer. Эта команда обновляет файл `semantic_manifest.json`(Версии dbt: v1.12 и новее) и `osi_document.json`, чтобы ваши изменения учитывались при запросах к метрикам. Выполняя `dbt parse`, вы избавляетесь от необходимости заново собирать все модели.

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

5. Выполните `dbt sl query --metrics <metric_name> --group-by <dimension_name>`, чтобы запросить метрики и измерения. Например, чтобы запросить `order_total` и `order_count` (обе метрики), а затем сгруппировать их по `order_date` (измерение), выполните:

   ```sql
   dbt sl query --metrics order_total,order_count --group-by order_id__order_date
   ```

6. Убедитесь, что значения метрик соответствуют вашим ожиданиям. Чтобы лучше понять, как генерируется метрика, вы можете просмотреть сгенерированный SQL, если введете `--compile` в командной строке.

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

## Запустите production job

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

1. После того как вы [определили семантические модели и метрики](https://docs.getdbt.tech/guides/sl-qs.md?step=6), создайте коммит с изменениями метрик и выполните слияние в своем проекте dbt.

2. В dbt создайте новую [среду развертывания](https://docs.getdbt.tech/docs/deploy/deploy-environments.md#create-a-deployment-environment) или используйте существующую среду с dbt версии 1.6 или выше.

   * Примечание: в настоящее время поддерживается среда развертывания (*поддержка среды разработки появится в ближайшее время*)

3. Чтобы создать новую среду, перейдите в раздел **Orchestration** в меню навигации, выберите **Environments**, а затем — **Create new environment**.

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

5. [Создайте новое задание развертывания](https://docs.getdbt.tech/docs/deploy/deploy-jobs.md#create-and-schedule-jobs), которое будет выполняться в только что созданной среде. Вернитесь в меню **Orchestration**, выберите **Jobs**, затем **Create job** и нажмите **Deploy job**.

6. Настройте задание на выполнение команды `dbt parse`, чтобы разобрать ваши проекты и сформировать файл [артефакта `semantic_manifest.json`](https://docs.getdbt.tech/reference/artifacts/sl-manifest.md)(Версии dbt: v1.12 и новее) и [артефакт `osi_document.json`](https://docs.getdbt.tech/reference/artifacts/sl-manifest.md#apache-ossie-document). Хотя выполнение `dbt build` не требуется, при необходимости вы можете запустить эту команду.

   примечание

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

7. Запустите job, нажав кнопку **Run now**. Отслеживайте прогресс выполнения в реальном времени на вкладке **Run summary**.

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

Что происходит внутри?

* Слияние кода с вашей основной веткой позволяет dbt получить эти изменения и сформировать определение в манифесте, созданном в результате запуска.
  <br />
* Повторный запуск задания в среде развертывания помогает материализовать модели, от которых зависят метрики, на платформе данных. Это также обеспечивает актуальность манифеста.
  <br />
* API семантического слоя получают самый свежий манифест и позволяют вашей интеграции извлекать из него метаданные.

## Администрирование Semantic Layer

В этом разделе вы узнаете, как добавить учетные данные и создать service tokens, чтобы начать выполнять запросы к dbt Semantic Layer. Раздел охватывает следующие темы:

* [Выбор окружения](#1-select-environment)
* [Настройка учетных данных и создание токенов](#2-configure-credentials-and-create-tokens)
* [Просмотр деталей подключения](#3-view-connection-detail)
* [Добавление дополнительных учетных данных](#2-configure-credentials-and-create-tokens)
* [Удаление конфигурации](#delete-configuration)

Вы должны входить в группу Owner и иметь соответствующую [лицензию](https://docs.getdbt.tech/docs/platform/manage-access/seats-and-users.md) и [права доступа](https://docs.getdbt.tech/docs/platform/manage-access/enterprise-permissions.md), чтобы администрировать Semantic Layer на уровне среды и проекта.

* Тарифные планы Enterprise+ и Enterprise:

  * Лицензия Developer с правами Account Admin или
  * Роль Owner с лицензией Developer и назначенными правами Project Creator, Database Admin или Admin.

* Тарифный план Starter: роль Owner с лицензией Developer.

* Бесплатный пробный период: вы используете бесплатную пробную версию тарифного плана Starter в роли Owner, а значит, у вас есть доступ к dbt Semantic Layer.

### 1. Выберите окружение

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

1. Откройте **Account settings** в меню навигации.
2. В разделе **Settings** нажмите **Projects** и выберите проект.
3. На странице **Project details** найдите раздел **Semantic Layer** и нажмите **Configure Semantic Layer**.

[![Раздел Semantic Layer на странице «Сведения о проекте»](/img/docs/dbt-platform/semantic-layer/new-sl-configure.png?v=2 "Раздел Semantic Layer на странице «Сведения о проекте»")](#)Раздел Semantic Layer на странице «Сведения о проекте»

4. На странице **Set Up Semantic Layer Configuration** выберите окружение развёртывания для Semantic Layer и нажмите **Save**.

[![Выберите среду развертывания, в которой будет работать ваш семантический слой.](/img/docs/dbt-platform/semantic-layer/sl-select-env.png?v=2 "Выберите среду развертывания, в которой будет работать ваш семантический слой.")](#)Выберите среду развертывания, в которой будет работать ваш семантический слой.

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

Для настройки Semantic Layer с токенами API есть два варианта:

* [Добавить учетные данные и создать сервисные токены](#add-a-credential-and-create-service-tokens)
* [Настроить учетные данные для разработки и создать персональные токены](#configure-development-credentials-and-create-a-personal-token)

#### Добавление учётных данных и создание сервисных токенов

Первый вариант — использовать [сервисные токены](https://docs.getdbt.tech/docs/dbt-apis/service-tokens.md) для аутентификации. Эти токены связаны с учетными данными платформы данных, которые вы предварительно настраиваете. Настроенные учетные данные используются для выполнения запросов, которые Semantic Layer отправляет к вашей платформе данных.

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

| Возможность                                                  | Тариф Starter                                                                            | Тарифы Enterprise+ и Enterprise                                                                                                                                                           |
| ------------------------------------------------------------ | ---------------------------------------------------------------------------------------- | ----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------- |
| Service tokens                                               | Можно создать несколько service token, связанных с одними учётными данными (credential). | Можно использовать несколько credential и привязывать к каждому из них несколько service token. Обратите внимание, что один service token нельзя привязать более чем к одному credential. |
| Credentials per project                                      | Один credential на проект.                                                               | Можно [добавить несколько](#4-add-more-credentials) credential на проект.                                                                                                                 |
| Привязка нескольких сервисных токенов к одним учётным данным | ✅                                                                                       | ✅                                                                                                                                                                                        |

*Если вы используете тариф Starter и вам нужно добавить больше credential, рассмотрите возможность перехода на [Enterprise+ или Enterprise plan](https://www.getdbt.com/contact). Все пользователи Enterprise могут обратиться к разделу [Add more credentials](#4-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‑приложений.

* Используйте [расширенные атрибуты](https://docs.getdbt.tech/docs/dbt-platform-environments.md#extended-attributes) и [переменные окружения](https://docs.getdbt.tech/docs/build/environment-variables.md) при подключении к семантическому слою. Если задать значение непосредственно в учетных данных семантического слоя, оно будет иметь более высокий приоритет, чем значение в расширенных атрибутах. При использовании переменных окружения будет использоваться значение по умолчанию для данного окружения.

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

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

[![Добавьте учетные данные и свяжите их с сервисным токеном. ](/img/docs/dbt-platform/semantic-layer/sl-add-credential.png?v=2 "Добавьте учетные данные и свяжите их с сервисным токеном. ")](#)Добавьте учетные данные и свяжите их с сервисным токеном.

##### 3. Создайте или привяжите сервисные токены

* Если у вас есть разрешение на создание сервисных токенов, после добавления учетных данных вы увидите [опцию **Map new service token**](https://docs.getdbt.tech/docs/use-dbt-semantic-layer/setup-sl.md#manage-from-service-token-page). Укажите имя токена, задайте разрешения 'Semantic Layer Only' и 'Metadata Only' и нажмите **Save**.
* После создания токена вы больше не сможете его просмотреть, поэтому обязательно сохраните его в надежном месте.
* Если у вас нет прав на создание сервисных токенов, вы увидите сообщение с предложением обратиться к администратору, чтобы он создал токен для вас. Администраторы могут создавать и привязывать токены по мере необходимости.

[![Если у вас нет прав на создание сервисных токенов, вы можете создать учетные данные и обратиться к администратору, чтобы он создал для вас токен.](/img/docs/dbt-platform/semantic-layer/sl-credential-no-service-token.png?v=2 "Если у вас нет прав на создание сервисных токенов, вы можете создать учетные данные и обратиться к администратору, чтобы он создал для вас токен.")](#)Если у вас нет прав на создание сервисных токенов, вы можете создать учетные данные и обратиться к администратору, чтобы он создал для вас токен.

к сведению

* Тариф Starter позволяет создавать несколько service token, привязанных к одному базовому credential, однако в каждом проекте может быть только один credential.
* Все тарифы Enterprise позволяют [добавлять несколько credential](#4-add-more-credentials) и связывать их с service token для более гибкого управления доступом.

[Запишитесь на бесплатную демонстрацию в реальном времени](https://www.getdbt.com/contact), чтобы узнать обо всех возможностях тарифных планов dbt Enterprise и выше.

#### Настройте учетные данные для разработки и создайте персональный токен

Использование [персональных токенов доступа (PAT)](https://docs.getdbt.tech/docs/dbt-apis/user-tokens.md) также поддерживается в качестве метода аутентификации в dbt Semantic Layer. Это обеспечивает аутентификацию на уровне пользователя, снижая необходимость совместного использования токенов несколькими пользователями. При аутентификации с помощью PAT запросы выполняются с использованием ваших личных учетных данных.

Чтобы использовать PAT в Semantic Layer:

1. Настройте свои учетные данные.

   1. Нажмите на имя своей учетной записи в нижней части меню слева и перейдите в **Account settings** > **Credentials**.
   2. Выберите свой проект.
   3. Нажмите **Edit**.
   4. Перейдите в **User credentials** и введите свои данные.
   5. Нажмите **Save**.

2. [Создайте персональный токен доступа](https://docs.getdbt.tech/docs/dbt-apis/user-tokens.md). Обязательно скопируйте токен.

Вы можете использовать созданный персональный токен доступа (PAT) для аутентификации при работе с [API](https://docs.getdbt.tech/docs/dbt-apis/sl-api-overview.md) и [интеграциями](https://docs.getdbt.tech/docs/platform-integrations/avail-sl-integrations.md) Semantic Layer.

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

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

Информацию о подключении к другим интеграциям см. в разделе [Доступные интеграции](https://docs.getdbt.tech/docs/platform-integrations/avail-sl-integrations.md).

[![После настройки вы получите параметры подключения к инструментам, использующим данные семантического слоя.](/img/docs/dbt-platform/semantic-layer/sl-configure-example.png?v=2 "После настройки вы получите параметры подключения к инструментам, использующим данные семантического слоя.")](#)После настройки вы получите параметры подключения к инструментам, использующим данные семантического слоя.

### 4. Добавьте дополнительные учетные данные [Enterprise +](https://www.getdbt.com/pricing "Подробнее о статусе или тарифе")[Enterprise](https://www.getdbt.com/pricing "Подробнее о статусе или тарифе")

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

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

 Соображения по связыванию учетных данных

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

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

* Используйте [расширенные атрибуты](https://docs.getdbt.tech/docs/dbt-platform-environments.md#extended-attributes) и [переменные окружения](https://docs.getdbt.tech/docs/build/environment-variables.md) при подключении к семантическому слою. Если задать значение непосредственно в учетных данных семантического слоя, оно будет иметь более высокий приоритет, чем значение в расширенных атрибутах. При использовании переменных окружения будет использоваться значение по умолчанию для данного окружения.

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

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

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

* После настройки окружения на странице **Credentials & service tokens** нажмите кнопку **Add Semantic Layer credential**, чтобы создать несколько наборов учетных данных и сопоставить их с сервисным токеном.
  <br />
* В разделе **1. Add credentials** заполните поля учетных данных платформы данных. Рекомендуем использовать учетные данные с доступом «только для чтения».

  [![Добавьте учетные данные и сопоставьте их с сервисным токеном. ](/img/docs/dbt-platform/semantic-layer/sl-add-credential.png?v=2 "Добавьте учетные данные и сопоставьте их с сервисным токеном. ")](#)Добавьте учетные данные и сопоставьте их с сервисным токеном.

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

* В разделе **2. Map new service token** [сопоставьте сервисный токен с учетными данными](https://docs.getdbt.tech/docs/use-dbt-semantic-layer/setup-sl.md#manage-from-service-token-page), настроенными на предыдущем шаге. dbt автоматически выбирает необходимый набор разрешений для сервисного токена (Semantic Layer Only и Metadata Only).
* Чтобы добавить еще один сервисный токен во время настройки, нажмите **Add Service Token**.
* Позже вы сможете связать дополнительные сервисные токены с теми же учетными данными на странице **Semantic Layer Configuration Details**. Чтобы добавить еще один сервисный токен в существующую конфигурацию Semantic Layer, нажмите **Add service token** в разделе **Linked service tokens**.
* Нажмите **Save**, чтобы связать сервисный токен с учетными данными. Не забудьте скопировать сервисный токен и сохранить его в безопасном месте: после создания просмотреть его повторно будет невозможно.

[![Используйте страницу настройки для управления несколькими наборами учетных данных, привязки и отвязки сервисных токенов, чтобы более точно управлять доступом.](/img/docs/dbt-platform/semantic-layer/sl-credentials-service-token.png?v=2 "Используйте страницу настройки для управления несколькими наборами учетных данных, привязки и отвязки сервисных токенов, чтобы более точно управлять доступом.")](#)Используйте страницу настройки для управления несколькими наборами учетных данных, привязки и отвязки сервисных токенов, чтобы более точно управлять доступом.

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

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

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

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

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

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

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

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

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

[![Удаление конфигурации Semantic Layer для проекта.](/img/docs/dbt-platform/semantic-layer/sl-delete-config.png?v=2 "Удаление конфигурации Semantic Layer для проекта.")](#)Удаление конфигурации Semantic Layer для проекта.

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

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

### Сопоставление сервисных токенов с учётными данными

* После настройки окружения вы можете сопоставить дополнительные сервисные токены с теми же учётными данными, если у вас есть необходимые [разрешения](https://docs.getdbt.tech/docs/platform/manage-access/enterprise-permissions.md#permission-sets).
* Перейдите на страницу **Credentials & service tokens** и нажмите кнопку **+Add Service Token** в разделе **Linked Service Tokens**.
* Введите имя сервисного токена и выберите нужный набор разрешений (Semantic Layer Only и Metadata Only).
* Нажмите **Save**, чтобы связать сервисный токен с учётными данными.
* Не забудьте скопировать сервисный токен и сохранить его в безопасном месте, поскольку после создания он больше не будет доступен для просмотра.

[![Сопоставление дополнительных сервисных токенов с учётными данными.](/img/docs/dbt-platform/semantic-layer/sl-add-service-token.gif?v=2 "Сопоставление дополнительных сервисных токенов с учётными данными.")](#)Сопоставление дополнительных сервисных токенов с учётными данными.

### Отвяжите сервисные токены

* Отвяжите сервисный токен от учетных данных, нажав **Отвязать** в разделе **Связанные сервисные токены**. Если вы попытаетесь выполнить запрос к Семантическому слою с отвязанными учетными данными, вы столкнетесь с ошибкой в вашем BI-инструменте, так как не будет сопоставлен действительный токен.

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

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

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

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

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

[![Создайте новый сервисный токен и привяжите учётные данные непосредственно на отдельной странице «Сервисные токены».](/img/docs/dbt-platform/semantic-layer/sl-create-service-token-page.png?v=2 "Создайте новый сервисный токен и привяжите учётные данные непосредственно на отдельной странице «Сервисные токены».")](#)Создайте новый сервисный токен и привяжите учётные данные непосредственно на отдельной странице «Сервисные токены».

## Запросы к Semantic Layer

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

* [Подключение и запросы через Google Sheets](#connect-and-query-with-google-sheets)
* [Подключение и запросы через Hex](#connect-and-query-with-hex)
* [Подключение и запросы через Sigma](#connect-and-query-with-sigma)

Semantic Layer позволяет подключаться к вашим метрикам и запрашивать их с помощью различных доступных инструментов, таких как [PowerBI](https://docs.getdbt.tech/docs/platform-integrations/semantic-layer/power-bi.md), [Google Sheets](https://docs.getdbt.tech/docs/platform-integrations/semantic-layer/gsheets.md), [Hex](https://learn.hex.tech/docs/connect-to-data/data-connections/dbt-integration#dbt-semantic-layer-integration), [Microsoft Excel](https://docs.getdbt.tech/docs/platform-integrations/semantic-layer/excel.md), [Tableau](https://docs.getdbt.tech/docs/platform-integrations/semantic-layer/tableau.md) и других.

Запрашивайте метрики с помощью других инструментов, таких как [встроенные интеграции](https://docs.getdbt.tech/docs/platform-integrations/avail-sl-integrations.md), [API Semantic Layer](https://docs.getdbt.tech/docs/dbt-apis/sl-api-overview.md) и [экспорт](https://docs.getdbt.tech/docs/use-dbt-semantic-layer/exports.md), чтобы предоставлять доступ к таблицам метрик и измерений на вашей платформе данных и создавать собственные интеграции.

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

Интеграция с Google Sheets позволяет выполнять запросы к вашим метрикам с использованием Google Sheets. Этот раздел поможет вам подключиться и использовать интеграцию с Google Sheets.

Чтобы запрашивать метрики с помощью Google Sheets:

1. Убедитесь, что у вас есть аккаунт [Gmail](http://gmail.com/).

2. Чтобы настроить Google Sheets и запрашивать метрики, следуйте подробным инструкциям в разделе [Интеграция с Google Sheets](https://docs.getdbt.tech/docs/platform-integrations/semantic-layer/gsheets.md).

3. Начните исследовать метрики и выполнять запросы!

   * Запросите метрику, например `order_total`, и отфильтруйте её по измерению, например `order_date`.
   * Вы также можете использовать параметр `group_by`, чтобы группировать метрики по определённому измерению.

[![Используйте интеграцию dbt Semantic Layer с Google Sheets для запроса метрик через меню конструктора запросов.](/img/docs/dbt-platform/semantic-layer/sl-gsheets.jpg?v=2 "Используйте интеграцию dbt Semantic Layer с Google Sheets для запроса метрик через меню конструктора запросов.")](#)Используйте интеграцию dbt Semantic Layer с Google Sheets для запроса метрик через меню конструктора запросов.

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

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

### Запросы к Semantic Layer через Hex

1. Перейдите на [страницу входа в Hex](https://app.hex.tech/login).
2. Войдите в аккаунт или создайте его (если у вас его ещё нет).

* Вы можете создать аккаунт для бесплатного пробного использования Hex с рабочим адресом электронной почты или адресом в домене .edu.

3. В левом верхнем углу страницы нажмите на значок **HEX**, чтобы перейти на главную страницу.
4. Затем нажмите кнопку **+ New project** в правом верхнем углу.

[![Нажмите кнопку '+ New project' в правом верхнем углу](/img/docs/dbt-platform/semantic-layer/hex_new.png?v=2 "Нажмите кнопку '+ New project' в правом верхнем углу")](#)Нажмите кнопку '+ New project' в правом верхнем углу

5. В меню слева выберите **Data browser**. Затем выберите **Add a data connection**.
6. Выберите платформу данных, соответствующую вашему проекту dbt (Snowflake, BigQuery, Redshift или Databricks). Укажите название и описание подключения. Для этого подключения также нужно включить dbt Semantic Layer. Запросы к метрикам выполняются через dbt, а не с использованием имени пользователя и пароля базы данных. В настоящее время Hex поддерживает Semantic Layer для этих четырёх типов подключений. Подробнее см. в разделе [Интеграция Hex с dbt](https://learn.hex.tech/docs/connect-to-data/data-connections/dbt-integration).

[![Выберите 'Data browser', затем 'Add a data connection'. Выберите тип хранилища, соответствующий вашему проекту dbt.](/img/docs/dbt-platform/semantic-layer/hex_new_data_connection.png?v=2 "Выберите 'Data browser', затем 'Add a data connection'. Выберите тип хранилища, соответствующий вашему проекту dbt.")](#)Выберите 'Data browser', затем 'Add a data connection'. Выберите тип хранилища, соответствующий вашему проекту dbt.

7. В разделе **Integrations** переведите переключатель dbt вправо, чтобы включить интеграцию с dbt.

[![Нажмите на переключатель dbt, чтобы включить интеграцию. ](/img/docs/dbt-platform/semantic-layer/hex_dbt_toggle.png?v=2 "Нажмите на переключатель dbt, чтобы включить интеграцию. ")](#)Нажмите на переключатель dbt, чтобы включить интеграцию.

8. Укажите следующие сведения:

   * Выберите версию dbt 1.6 или выше
   * Введите идентификатор среды (Environment ID)
   * Введите сервисный или персональный токен
   * Обязательно включите переключатель **Use Semantic Layer**. Благодаря этому все запросы будут направляться через dbt.
   * Нажмите **Create connection** в правом нижнем углу.

9. Наведите указатель на **More** в меню, показанном на следующем изображении, и выберите **Semantic Layer**.

[![Наведите указатель на 'More' в меню и выберите 'dbt Semantic Layer'.](/img/docs/dbt-platform/semantic-layer/hex_make_sl_cell.png?v=2 "Наведите указатель на 'More' в меню и выберите 'dbt Semantic Layer'.")](#)Наведите указатель на 'More' в меню и выберите 'dbt Semantic Layer'.

10. Теперь вы можете выполнять запросы к метрикам в Hex! Попробуйте:

    * Создайте новую ячейку и выберите метрику.
    * Отфильтруйте ее по одному или нескольким измерениям.
    * Создайте визуализацию.

### Воркшоп Getting started with the Semantic Layer

1. Нажмите на ссылку, опубликованную в чате практического занятия.
   * Если вы не видите её сразу, посмотрите раздел **Закреплённые сообщения** в чате.
2. Введите свой адрес электронной почты в соответствующее текстовое поле. Затем выберите **SQL and Python**, чтобы перейти на главный экран Hex.

[![Главная страница «Welcome to Hex».](/img/docs/dbt-platform/semantic-layer/welcome_to_hex.png?v=2 "Главная страница «Welcome to Hex».")](#)Главная страница «Welcome to Hex».

3. Затем нажмите фиолетовую кнопку Hex в левом верхнем углу.
4. В меню слева нажмите **Collections**.
5. Выберите коллекцию **Semantic Layer Workshop**.
6. Откройте коллекцию проектов **Getting started with the Semantic Layer**.

[![Нажмите «Collections», чтобы выбрать коллекцию «Semantic Layer Workshop».](/img/docs/dbt-platform/semantic-layer/hex_collections.png?v=2 "Нажмите «Collections», чтобы выбрать коллекцию «Semantic Layer Workshop».")](#)Нажмите «Collections», чтобы выбрать коллекцию «Semantic Layer Workshop».

7. Чтобы редактировать этот ноутбук Hex, нажмите **Duplicate** в выпадающем меню проекта (как показано на изображении). Это создаст новую копию ноутбука Hex, которой вы будете владеть.

[![Нажмите кнопку «Duplicate» в раскрывающемся меню проекта, чтобы создать копию блокнота Hex.](/img/docs/dbt-platform/semantic-layer/hex_duplicate.png?v=2 "Нажмите кнопку «Duplicate» в раскрывающемся меню проекта, чтобы создать копию блокнота Hex.")](#)Нажмите кнопку «Duplicate» в раскрывающемся меню проекта, чтобы создать копию блокнота Hex.

8. Чтобы вашу копию проекта Hex было проще найти, переименуйте её, добавив своё имя.

[![Переименуйте свой проект Hex, добавив своё имя.](/img/docs/dbt-platform/semantic-layer/hex_rename.png?v=2 "Переименуйте свой проект Hex, добавив своё имя.")](#)Переименуйте свой проект Hex, добавив своё имя.

9. Теперь вы можете выполнять запросы к метрикам в Hex! Попробуйте на примерах:

   * В первой ячейке показана таблица метрики `order_total` по времени. Добавьте в эту таблицу метрику `order_count`.
   * Во второй ячейке показан линейный график метрики `order_total` по времени. Поэкспериментируйте с графиком — попробуйте изменить time grain с помощью выпадающего меню **Time unit**.
   * Следующая таблица в ноутбуке с названием “Example\_query\_2” показывает количество клиентов, сделавших свой первый заказ в определенный день. Создайте новую chart-ячейку. Постройте линейный график `first_ordered_at` vs `customers`, чтобы увидеть, как меняется число новых клиентов по дням.
   * Создайте новую ячейку semantic layer и выберите одну или несколько метрик. Отфильтруйте метрику(и) по одному или нескольким измерениям.

[![Запрос метрик с помощью Hex ](/img/docs/dbt-platform/semantic-layer/hex_make_sl_cell.png?v=2 "Запрос метрик с помощью Hex ")](#)Запрос метрик с помощью Hex

### Подключение и выполнение запросов с помощью Sigma

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

Выполняйте шаги с 1 по 5, только если вы используете Snowflake. Для Databricks предусмотрена отдельная процедура [Sigma Partner Connect](https://docs.databricks.com/aws/en/partners/bi/sigma). Если вы используете другую платформу данных, войдите в существующую учетную запись Sigma и продолжите с шага 6 или обратитесь к руководству Sigma [Выполнение запросов через интеграцию с dbt Semantic Layer](https://help.sigmacomputing.com/docs/query-a-dbt-semantic-layer-integration).

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

[![Нажмите кнопку '+ New project' в правом верхнем углу](/img/docs/dbt-platform/semantic-layer/sl-sigma-partner-connect.png?v=2 "Нажмите кнопку '+ New project' в правом верхнем углу")](#)Нажмите кнопку '+ New project' в правом верхнем углу

2. Выберите плитку Sigma из списка. Откройте раскрывающееся меню **Optional Grant**. Введите **RAW** и **ANALYTICS** в текстовое поле, затем нажмите **Connect**.

[![Нажмите кнопку '+ New project' в правом верхнем углу](/img/docs/dbt-platform/semantic-layer/sl-sigma-optional-grant.png?v=2 "Нажмите кнопку '+ New project' в правом верхнем углу")](#)Нажмите кнопку '+ New project' в правом верхнем углу

3. Придумайте название компании и URL для использования. Неважно, какой URL вы укажете, главное, чтобы он был уникальным.

[![Нажмите кнопку '+ New project' в правом верхнем углу](/img/docs/dbt-platform/semantic-layer/sl-sigma-company-name.png?v=2 "Нажмите кнопку '+ New project' в правом верхнем углу")](#)Нажмите кнопку '+ New project' в правом верхнем углу

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

[![Нажмите кнопку '+ New project' в правом верхнем углу](/img/docs/dbt-platform/semantic-layer/sl-sigma-create-profile.png?v=2 "Нажмите кнопку '+ New project' в правом верхнем углу")](#)Нажмите кнопку '+ New project' в правом верхнем углу

5. Отлично! Теперь у вас есть учетная запись Sigma. Прежде чем начать, вернитесь в Snowflake и откройте пустой файл. Выполните следующие команды.

* `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;`

6. Нажмите значок своего профиля в правом верхнем углу. В раскрывающемся меню нажмите кнопку **Administration**.

[![Нажмите кнопку '+ New project' в правом верхнем углу](/img/docs/dbt-platform/semantic-layer/sl-sigma-admin.png?v=2 "Нажмите кнопку '+ New project' в правом верхнем углу")](#)Нажмите кнопку '+ New project' в правом верхнем углу

7. Прокрутите страницу вниз до раздела интеграций, затем выберите **Add** рядом с интеграцией dbt.

[![Нажмите кнопку '+ New project' в правом верхнем углу](/img/docs/dbt-platform/semantic-layer/sl-sigma-add-integration.png?v=2 "Нажмите кнопку '+ New project' в правом верхнем углу")](#)Нажмите кнопку '+ New project' в правом верхнем углу

8. В разделе **dbt Integration** заполните обязательные поля, затем сохраните изменения:

* Ваш [токен служебной учетной записи](https://docs.getdbt.tech/docs/dbt-apis/service-tokens.md) или [персональные токены доступа](https://docs.getdbt.tech/docs/dbt-apis/user-tokens.md) dbt.
* URL доступа для вашей существующей интеграции Sigma с dbt. Используйте `cloud.getdbt.com` в качестве URL доступа.
* Идентификатор вашей среды dbt.

[![Нажмите кнопку '+ New project' в правом верхнем углу](/img/docs/dbt-platform/semantic-layer/sl-sigma-add-info.png?v=2 "Нажмите кнопку '+ New project' в правом верхнем углу")](#)Нажмите кнопку '+ New project' в правом верхнем углу

9. Вернитесь на главную страницу Sigma. Создайте новую рабочую книгу.

[![Нажмите кнопку '+ New project' в правом верхнем углу](/img/docs/dbt-platform/semantic-layer/sl-sigma-make-workbook.png?v=2 "Нажмите кнопку '+ New project' в правом верхнем углу")](#)Нажмите кнопку '+ New project' в правом верхнем углу

10. Нажмите **Table**, затем **SQL**. Выберите подключение к данным, соответствующее вашему проекту dbt (Snowflake, BigQuery, Redshift или Databricks). Если вы создали эту учетную запись Sigma через Snowflake Partner Connect, это подключение называется `PC_SIGMA_WH`.

[![Нажмите кнопку '+ New project' в правом верхнем углу](/img/docs/dbt-platform/semantic-layer/sl-sigma-make-table.png?v=2 "Нажмите кнопку '+ New project' в правом верхнем углу")](#)Нажмите кнопку '+ New project' в правом верхнем углу

11. Теперь выполните запрос к рабочей метрике в вашем проекте! Например, допустим, у вас есть метрика, которая измеряет различные значения, связанные с заказами. Вот как вы могли бы выполнить запрос:

```sql
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, зачем он нужен и когда его использовать в ваших проектах.

Вы научились:

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

В качестве следующих шагов вы можете начать определять собственные метрики и изучить дополнительные опции конфигурации, такие как [exports](https://docs.getdbt.tech/docs/use-dbt-semantic-layer/exports.md), [заполнение null-значений](https://docs.getdbt.tech/docs/build/advanced-topics.md), [внедрение Mesh с помощью Semantic Layer](https://docs.getdbt.tech/docs/use-dbt-semantic-layer/setup-sl.md) и другие.

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

* [Часто задаваемые вопросы о Semantic Layer](https://docs.getdbt.tech/docs/use-dbt-semantic-layer/sl-faqs.md)
* [Доступные интеграции](https://docs.getdbt.tech/docs/platform-integrations/avail-sl-integrations.md)
* Демонстрация того, [как определять метрики и выполнять запросы к ним с помощью MetricFlow](https://www.loom.com/share/60a76f6034b0441788d73638808e92ac?sid=861a94ac-25eb-4fd8-a310-58e159950f5a)
* [Присоединяйтесь к нашим демонстрациям в прямом эфире](https://www.getdbt.com/resources/webinars/dbt-cloud-demos-with-experts)
