# Настройка Hybrid

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

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

Доступно в рамках публичного предварительного тестирования

Проекты Hybrid доступны в рамках публичного предварительного тестирования для [аккаунтов dbt Enterprise](https://www.getdbt.com/pricing).

## Настройка гибридных проектов

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

Для такой настройки необходимо связать проект dbt v1 с проектом dbt, а также настроить несколько переменных окружения и параметров доступа.

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

* [Сделайте модели dbt общедоступными](#make-dbt-models-public) (необязательно)
* [Создайте гибридный проект](#create-hybrid-project)
* [Создайте сервисный токен и получите значения для загрузки артефактов](#generate-service-token-and-artifact-upload-values)
* [Настройте проект dbt v1 и загрузите артефакты](#configure-dbt-project-and-upload-artifacts)
* [Просмотрите артефакты в dbt](#configure-dbt-project-and-upload-artifacts)

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

### Сделайте модели dbt общедоступными (необязательно)

Этот шаг необязателен и нужен только в том случае, если вы хотите предоставить другим проектам dbt доступ к моделям dbt v1 с помощью функции [ссылок между проектами](https://docs.getdbt.tech/docs/mesh/govern/project-dependencies.md#how-to-write-cross-project-ref).

Прежде чем связать проект dbt v1 с проектом dbt, убедитесь, что в конфигурации моделей, к которым вы хотите предоставить доступ, указано `access: public`. Эта настройка делает такие модели видимыми для других проектов dbt, упрощая совместную работу, например использование [ссылок между проектами](https://docs.getdbt.tech/docs/mesh/govern/project-dependencies.md#how-to-write-cross-project-ref).

1. Самый простой способ задать это — через файл `dbt_project.yml`, однако вы также можете указать настройку в следующих местах:

   * `dbt_project.yml` (на уровне проекта)
   * `properties.yml` (для отдельных моделей)
   * `.sql`‑файл модели с использованием блока `config`

   Ниже приведён пример `dbt_project.yml`, в котором каталог marts объявлен публичным, чтобы его могли использовать downstream‑инструменты:

   dbt\_project.yml

   ```yaml
   models:
     define_public_models: # This is my project name, remember it must be specified
       marts:
         +access: public
   ```

2. После определения `access: public` повторно выполните команду dbt в интерфейсе командной строки (CLI) dbt v1 (например, `dbt run`), чтобы применить изменение.

3. Подробнее о настройке читайте в разделах [access modifier](https://docs.getdbt.tech/docs/mesh/govern/model-access.md#access-modifiers) и [`access` config](https://docs.getdbt.tech/reference/resource-configs/access.md).

### Создайте гибридный проект

Создайте гибридный проект в dbt, чтобы загружать артефакты dbt v1 в dbt.

[Администратор аккаунта dbt](https://docs.getdbt.tech/docs/platform/manage-access/enterprise-permissions.md#permission-sets) должен выполнить следующие действия и передать пользователю dbt v1 сведения для загрузки артефактов:

1. Чтобы создать новый проект в dbt, перейдите в **Account home**.
2. Нажмите **+New project**.
3. Заполните поле **Project name**. Выберите название, по которому будет понятно, что это проект dbt v1.
   * Настраивать [хранилище данных](https://docs.getdbt.tech/docs/supported-data-platforms.md) или [подключение к Git](https://docs.getdbt.tech/docs/platform/git/configure-git.md) не требуется. Однако для преобразования гибридного проекта в полноценный проект dbt потребуется настроить хранилище данных и подключение к Git.
4. Раскройте **Advanced settings**, а затем установите флажок **Hybrid development**. Нажмите **Continue**.
   * В списке проектов гибридный проект будет отмечен индикатором **Hybrid**, чтобы его было проще найти.

[![Создание нового гибридного проекта](/img/docs/deploy/hp-new-project.jpg?v=2 "Создание нового гибридного проекта")](#)Создание нового гибридного проекта

5. После создания проекта создайте для него [производственную среду](https://docs.getdbt.tech/docs/deploy/deploy-environments.md#create-a-deployment-environment) и нажмите **Save**. Для сохранения потребуется создать временный [профиль](https://docs.getdbt.tech/docs/platform/about-profiles.md) и назначить его среде.
6. (Необязательно) Чтобы преобразовать существующий проект dbt в гибридный, перейдите в **Account settings**, а затем выберите **Project**. Нажмите **Edit** и установите флажок **Hybrid development**.

[![Преобразование существующего проекта в гибридный](/img/docs/deploy/hp-existing-project.jpg?v=2 "Преобразование существующего проекта в гибридный")](#)Преобразование существующего проекта в гибридный

### Создание служебного токена и получение значений для загрузки артефактов

Администратор dbt должен выполнить следующие действия, чтобы создать [служебный токен](https://docs.getdbt.tech/docs/dbt-apis/service-tokens.md#enterprise-plans-using-service-account-tokens) (с разрешениями **Job Runner** *и* **Job Viewer**) и скопировать значения, необходимые для настройки проекта dbt v1 для загрузки сгенерированных артефактов в dbt.

Администратор dbt должен передать эти значения пользователю dbt v1.

1. Перейдите в среду гибридного проекта, созданную на предыдущем шаге: откройте **Deploy** > **Environments** и выберите нужную среду.

2. Нажмите кнопку **Artifact upload** и скопируйте следующие значения, которые пользователю dbt v1 потребуется указать в файле конфигурации `dbt_project.yml` своего проекта dbt v1:

   * **[Tenant URL](https://docs.getdbt.tech/docs/platform/about-platform/access-regions-ip-addresses.md)**

   * **Account ID**

   * **Environment ID**

   * **Create a service token**

     * dbt создаёт служебный токен с разрешениями **Job Runner** *и* **Job Viewer**.
     * Обратите внимание: если кнопка **Create service token** не отображается, скорее всего, у вас нет необходимых разрешений для создания служебного токена. Обратитесь к администратору dbt, чтобы получить необходимые разрешения или попросить его создать служебный токен для вас.

[![Создание служебного токена для гибридного проекта](/img/docs/deploy/hp-artifact-upload.png?v=2 "Создание служебного токена для гибридного проекта")](#)Создание служебного токена для гибридного проекта

3. Обязательно скопируйте и сохраните эти значения — они понадобятся для настройки проекта dbt v1 на следующем шаге. После создания service token получить его повторно невозможно.

### Настройте проект dbt и загрузите артефакты

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

1. Проверьте версию dbt, выполнив `dbt --version`. Вы должны увидеть примерно следующее:

   ```bash
      Core:
      - installed: 1.11.0
      - latest:    1.11.0 - Up to date!
   ```

2. Если у вас не установлена [последняя поддерживаемая версия](https://docs.getdbt.tech/docs/dbt-versions.md), [обновите](https://docs.getdbt.tech/docs/local/install-dbt.md?version=1#upgrade) свой проект dbt v1, выполнив `python -m pip install --upgrade dbt-core`.

3. Задайте следующие переменные окружения в своём проекте dbt v1, выполнив следующие команды в CLI. Замените `your_account_id`, `your_environment_id` и `your_token` фактическими значениями из [предыдущего шага](#generate-service-token-and-artifact-upload-values).

   ```bash
   export DBT_CLOUD_ACCOUNT_ID=your_account_id
   export DBT_CLOUD_ENVIRONMENT_ID=your_environment_id
   export DBT_CLOUD_TOKEN=your_token
   export DBT_ENGINE_UPLOAD_TO_ARTIFACTS_INGEST_API=True
   ```

   * Задавайте переменные окружения тем способом, который используется в вашем проекте.
   * Чтобы удалить переменную окружения, выполните `unset environment_variable_name`, заменив `environment_variable_name` на имя переменной.

4. В локальном проекте dbt v1 добавьте следующие элементы, скопированные в [предыдущем разделе](https://docs.getdbt.tech/docs/deploy/hybrid-setup.md#generate-service-token-and-artifact-upload-values), в файл `dbt_project.yml` проекта dbt v1:

   * `tenant_hostname`

   ```yaml
   name: "jaffle_shop"
   version: "3.0.0"
   require-dbt-version: ">=1.5.0"
   ....rest of dbt_project.yml configuration...

   dbt-cloud:
     tenant_hostname: cloud.getdbt.com # Replace with your Tenant URL
   ```

5. После того как вы зададите переменные окружения с помощью команды `export` в том же сеансе dbt CLI, вы можете выполнить команду `dbt run` в CLI.

   ```bash
    dbt run
   ```

   Чтобы переопределить заданные переменные окружения, выполните `dbt run` с префиксом переменных окружения. Например, чтобы использовать другой Account ID и Environment ID:

   ```bash
    DBT_CLOUD_ACCOUNT_ID=1 DBT_CLOUD_ENVIRONMENT_ID=123 dbt run
   ```

6. После завершения запуска вы должны увидеть сообщение `Artifacts uploaded successfully to artifact ingestion API: command run completed successfully` и запуск в dbt в вашей производственной среде.

### Просмотр артефактов на платформе dbt

Теперь, когда вы загрузили артефакты dbt v1 на dbt platform и выполнили `dbt run`, вы можете просмотреть запуск задания по загрузке артефактов:

1. Перейдите в раздел **Deploy**
2. Нажмите **Jobs**, а затем откройте вкладку **Runs**.
3. Вы должны увидеть запуск задания со статусом **Success** и индикатором `</> Artifact ingestion`.
4. Нажмите на запуск задания, чтобы просмотреть журналы и убедиться, что в них есть сообщение об успешной загрузке артефактов. Если возникли ошибки, изучите отладочные журналы и устраните их.

[![Запуск job в hybrid‑проекте с импортом артефактов](/img/docs/deploy/hp-artifact-job.jpg?v=2 "Запуск job в hybrid‑проекте с импортом артефактов")](#)Запуск job в hybrid‑проекте с импортом артефактов

## Преимущества гибридных проектов

Теперь, когда вы интегрировали артефакты dbt v1 в свой проект dbt, вы можете:

* Сотрудничайте с пользователями dbt, предоставляя им возможность визуализировать модели dbt из проектов dbt v1 и создавать [межпроектные ссылки](https://docs.getdbt.tech/docs/mesh/govern/project-dependencies.md#how-to-write-cross-project-ref) на эти модели.
* Пользователи dbt v1 могут перейти в [Catalog](https://docs.getdbt.tech/docs/explore/explore-projects.md) и просматривать свои модели и ресурсы. Для просмотра Catalog необходимо иметь [место с доступом только для чтения](https://docs.getdbt.tech/docs/platform/manage-access/seats-and-users.md).
