# Настройка автоматических exposures в Tableau

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

Настройте автоматическое заполнение downstream exposures для поддерживаемых интеграций с BI-инструментами, такими как Tableau. Визуализируйте их и управляйте их выполнением с помощью [dbt Catalog](https://docs.getdbt.com/docs/explore/explore-projects) и [планировщика заданий dbt](https://docs.getdbt.tech/docs/deploy/job-scheduler.md), чтобы расширить возможности работы с ними.

Команде по работе с данными крайне важно понимать, как и кем используются ее продукты данных в зависимых системах. Автоматические downstream [exposures](https://docs.getdbt.tech/docs/build/exposures.md) позволяют:

* Лучше понимать, как модели используются в зависимых аналитических системах, улучшая управление данными и принятие решений.
* Сокращать количество инцидентов и оптимизировать рабочие процессы, связывая исходные модели с зависимыми от них объектами.
* Автоматизировать отслеживание exposures для поддерживаемых BI-инструментов, поддерживая актуальность графа происхождения данных.
* [Оркестрировать exposures](https://docs.getdbt.tech/docs/platform-integrations/orchestrate-exposures.md) для обновления базовых источников данных во время запланированных заданий dbt, повышая своевременность обновлений и снижая затраты. Оркестрация exposures позволяет обеспечить регулярное обновление BI-инструментов с помощью [планировщика заданий dbt](https://docs.getdbt.tech/docs/deploy/job-scheduler.md). Подробнее см. на [предыдущей странице](https://docs.getdbt.tech/docs/platform-integrations/downstream-exposures.md).

В dbt можно настроить downstream exposures двумя способами:

* Вручную — [Явно объявить](https://docs.getdbt.tech/docs/build/exposures.md#declaring-an-exposure) их в YAML-файлах проекта.
* Автоматически — dbt автоматически [создает и визуализирует downstream exposures](https://docs.getdbt.tech/docs/platform-integrations/downstream-exposures.md) для поддерживаемых интеграций, устраняя необходимость вручную описывать их в YAML. Эти downstream exposures хранятся в системе метаданных dbt, отображаются в [Catalog](https://docs.getdbt.tech/docs/explore/explore-projects.md) и работают так же, как exposures, созданные вручную. Однако в YAML-файлах их нет.

Tableau Server

Если вы используете Tableau Server, необходимо добавить [IP-адреса dbt для вашего региона](https://docs.getdbt.tech/docs/platform/about-platform/access-regions-ip-addresses.md) в список разрешенных.

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

Для настройки автоматических downstream exposures должны выполняться следующие условия:

1. Ваша среда и задания используют поддерживаемый [канал выпуска dbt](https://docs.getdbt.tech/docs/dbt-versions/dbt-release-tracks.md).
2. У вас есть учетная запись dbt с [тарифным планом Enterprise или Enterprise+](https://www.getdbt.com/pricing/).
3. Для каждого проекта, который вы хотите исследовать, настроена среда развертывания [production](https://docs.getdbt.tech/docs/deploy/deploy-environments.md#set-as-production-environment), в которой успешно выполнено хотя бы одно задание.
4. У вас есть [необходимые разрешения](https://docs.getdbt.tech/docs/platform/manage-access/enterprise-permissions.md) для изменения настроек проекта или среды production в dbt.
5. Вы используете Tableau в качестве BI-инструмента и включили разрешения на доступ к метаданным самостоятельно или с помощью администратора. Поддерживаются Tableau Cloud и Tableau Server с включенным Metadata API.
6. Вы настроили [персональный токен доступа Tableau (PAT)](https://help.tableau.com/current/server/en-us/security_personal_access_tokens.htm), создатель которого имеет разрешение на просмотр источников данных. PAT наследует разрешения своего создателя, поэтому убедитесь, что у пользователя Tableau, создавшего токен, есть [разрешения Connect](https://help.tableau.com/current/api/rest_api/en-us/REST/rest_api_concepts_permissions.htm).

### Особенности и ограничения

При настройке автоматических downstream exposures с Tableau необходимо учитывать следующее:

* Вы можете подключиться только к одному сайту Tableau на одном сервере.

* Если вы используете Tableau Server, необходимо [добавить IP-адреса dbt в список разрешённых](https://docs.getdbt.tech/docs/platform/about-platform/access-regions-ip-addresses.md) для вашего региона dbt.

* Дашборды Tableau, созданные с использованием пользовательских SQL-запросов, не поддерживаются.

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

*  Полные имена (FQN) баз данных в Tableau должны совпадать с именами в сборке dbt.

  Полные имена (FQN) баз данных в Tableau должны совпадать с именами в сборке dbt. Чтобы в вашей экспозиции отображались все ожидаемые зависимости, FQN должны совпадать, но регистр символов не учитывается. Например:

  | FQN в Tableau                      | FQN в dbt                               | Результат                                                         |
  | ---------------------------------- | --------------------------------------- | ----------------------------------------------------------------- |
  | `analytics.dbt_data_team.my_model` | `analytics.dbt_data_team.my_model`      | ✅ Совпадает, зависимости будут отображаться корректно.           |
  | `analytics.dbt_data_team.my_model` | `prod_analytics.dbt_data_team.my_model` | ❌ Не совпадает, не все ожидаемые зависимости будут отображаться. |

  Чтобы устранить эту проблему:

  1. В dbt скачайте `manifest.json` из последнего запуска в production, который включает недостающие зависимости: откройте вкладку **Artifacts** и прокрутите страницу до `manifest.json`.

  2. Выполните следующий запрос [GraphiQl](https://help.tableau.com/current/api/metadata_api/en-us/docs/meta_api_start.html#explore-the-metadata-api-schema-using-graphiql). Обязательно выполните запрос по адресу `your_tableau_server/metadata/graphiql`, где `your_tableau_server` — значение, указанное в поле Server URL при [настройке интеграции с Tableau](https://docs.getdbt.tech/docs/platform-integrations/downstream-exposures-tableau.md#set-up-in-tableau):

     ```jsx
         query {
           workbooks {
             name
             uri
             id
             luid
             projectLuid
             projectName
             upstreamTables {
               id
               name
               schema
               database {
                 name
                 connectionType
             }
           }
         }
       }
     ```

  3. Сравните полные имена объектов базы данных (FQN) в `manifest.json` и ответе GraphiQL. Убедитесь, что `{database}.{schema}.{name}` совпадает в обоих источниках. На следующих изображениях показаны примеры FQN, которые *совпадают* в `manifest.json` и ответе GraphiQL без учёта регистра:

  [![Пример manifest.json с FQN в нижнем регистре.](/img/docs/platform-integrations/auto-exposures/manifest-json-example.png?v=2 "Пример manifest.json с FQN в нижнем регистре.")](#)Пример manifest.json с FQN в нижнем регистре.

  [![Пример ответа GraphiQL с FQN в верхнем регистре.](/img/docs/platform-integrations/auto-exposures/graphiql-example.png?v=2 "Пример ответа GraphiQL с FQN в верхнем регистре.")](#)Пример ответа GraphiQL с FQN в верхнем регистре.

  4. Если FQN не совпадают, обновите FQN в Tableau так, чтобы они совпадали с FQN в dbt.
  5. Если проблема сохраняется, обратитесь в [службу поддержки dbt](mailto:support@getdbt.com) и передайте им результаты проверки.

## Настройка downstream exposures

Настройте downstream exposures в [Tableau](#set-up-in-tableau) и [dbt](#set-up-in-dbt-cloud), чтобы обеспечить автоматическое обновление экстрактов вашего BI-инструмента.

### Настройка в Tableau

В этом разделе описаны шаги настройки интеграции в Tableau. Эти шаги должен выполнить администратор сайта Tableau.

После настройки в Tableau и [dbt](#set-up-in-dbt-cloud) вы сможете [просматривать downstream exposures](#view-downstream-exposures) в Catalog.

1. Включите [персональные токены доступа (PAT)](https://help.tableau.com/current/server/en-us/security_personal_access_tokens.htm) для своей учетной записи Tableau.

   [![Включение PAT для учетной записи Tableau](/img/docs/platform-integrations/auto-exposures/tableau-enable-pat.jpg?v=2 "Включение PAT для учетной записи Tableau")](#)Включение PAT для учетной записи Tableau

2. Создайте PAT для добавления в dbt, чтобы получать метаданные Tableau для downstream exposures. При создании токена у вас должно быть разрешение на доступ к коллекциям и папкам, поскольку PAT предоставляет доступ только в пределах существующих прав его создателя.

   [![Создание PAT для учетной записи Tableau](/img/docs/platform-integrations/auto-exposures/tableau-create-pat.jpg?v=2 "Создание PAT для учетной записи Tableau")](#)Создание PAT для учетной записи Tableau

3. Скопируйте **Secret** и **Token name** для использования на одном из следующих шагов в dbt. Секрет отображается только один раз, поэтому сохраните его в безопасном месте (например, в менеджере паролей).

   [![Копирование секрета и имени токена для ввода в dbt](/img/docs/platform-integrations/auto-exposures/tableau-copy-token.jpg?v=2 "Копирование секрета и имени токена для ввода в dbt")](#)Копирование секрета и имени токена для ввода в dbt

4. Скопируйте **Server URL** и **Sitename**. Их можно найти в URL после входа в Tableau.

   [![Поиск Server URL и Sitename в Tableau](/img/docs/platform-integrations/auto-exposures/tablueau-serverurl.jpg?v=2 "Поиск Server URL и Sitename в Tableau")](#)Поиск Server URL и Sitename в Tableau

   Например, если полный URL выглядит так: `10az.online.tableau.com/#/site/dbtlabspartner/explore`:

   * **Server URL** — это полное доменное имя, в данном случае: `10az.online.tableau.com`
   * **Sitename** — это фрагмент пути сразу после `site` в URL, в данном случае: `dbtlabspartner`

5. Скопировав следующие данные, вы можете перейти к настройке downstream exposures в dbt:

   * ServerURL
   * Sitename
   * Token name
   * Secret

### Настройка в dbt

1. В dbt перейдите на **Dashboard** проекта, в который хотите добавить downstream exposure, затем выберите **Settings**.

2. В разделе **Exposures** выберите **Add lineage integration**, чтобы добавить подключение к Tableau.

   [![Выберите Add lineage integration, чтобы добавить подключение к Tableau.](/img/docs/platform-integrations/auto-exposures/cloud-add-integration.png?v=2 "Выберите Add lineage integration, чтобы добавить подключение к Tableau.")](#)Выберите Add lineage integration, чтобы добавить подключение к Tableau.

3. Введите данные подключения для exposures, полученные из Tableau на [предыдущем шаге](#set-up-in-tableau), и нажмите **Continue**. Обратите внимание: все поля чувствительны к регистру.

   [![Введите данные подключения для exposures.](/img/docs/platform-integrations/auto-exposures/cloud-integration-details.png?v=2 "Введите данные подключения для exposures.")](#)Введите данные подключения для exposures.

4. Выберите коллекции, которые хотите включить в downstream exposures, и нажмите **Save**.

   [![Выберите коллекции, которые хотите включить в downstream exposures.](/img/docs/platform-integrations/auto-exposures/cloud-select-collections.png?v=2 "Выберите коллекции, которые хотите включить в downstream exposures.")](#)Выберите коллекции, которые хотите включить в downstream exposures.

   к сведению

   dbt автоматически импортирует и синхронизирует все рабочие книги из выбранных коллекций. Новые объекты, добавленные в коллекции, появляются на графе происхождения данных в dbt раз в сутки — после ежедневной синхронизации и выполнения задания.

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

5. dbt импортирует все содержимое выбранных коллекций, после чего вы можете перейти к [его просмотру](#view-downstream-exposures) в Catalog.

   [![Отображение в dbt Catalog на графе происхождения данных проекта со значком Tableau.](/img/docs/platform-integrations/auto-exposures/explorer-lineage2.png?v=2 "Отображение в dbt Catalog на графе происхождения данных проекта со значком Tableau.")](#)Отображение в dbt Catalog на графе происхождения данных проекта со значком Tableau.

## Просмотр downstream exposures

После настройки зависимых exposures в dbt вы можете просматривать их в [Catalog](https://docs.getdbt.tech/docs/explore/explore-projects.md), где доступны расширенные возможности работы с ними.

Перейдите в Catalog, выбрав **Catalog** в верхнем меню навигации. Просматривать зависимые exposures можно в нескольких местах:

* [Меню Exposures](#exposures-menu)
* [Страница сведений об exposure](#exposure-detail-page)
* [Граф зависимостей проекта](#project-lineage)

### Меню Exposures

Просматривайте все зависимые exposures проекта на боковой панели Catalog:

1. На боковой панели выберите свой проект.
2. В разделе проекта выберите **Exposure**. Этот пункт отображается только в том случае, если вы настроили зависимые exposures в [Tableau](https://docs.getdbt.tech/docs/platform-integrations/downstream-exposures-tableau.md#set-up-in-tableau) и [dbt](https://docs.getdbt.tech/docs/platform-integrations/downstream-exposures-tableau.md#set-up-in-dbt-cloud).

В таблице **Exposures** перечислены все exposures проекта, что позволяет быстро находить их и управлять ими:

* **Name**: имя exposure.
* **Health**: [сигнал о состоянии данных](https://docs.getdbt.tech/docs/explore/data-health-signals.md) для exposure.
* **Type**: тип exposure, например `dashboard` или `notebook`.
* **Owner**: владелец exposure.
* **Owner email**: адрес электронной почты владельца exposure.
* **Integration**: BI-инструмент, с которым интегрирован exposure.
* **Exposure mode**: заданный режим создания exposure: **Auto** или **Manual**. Автоматически созданные exposures из Tableau отображаются вместе с exposures, созданными вручную

[![Просмотр таблицы Exposures через боковую панель Catalog.](/img/docs/platform-integrations/auto-exposures/explorer-view-resources.png?v=2 "Просмотр таблицы Exposures через боковую панель Catalog.")](#)Просмотр таблицы Exposures через боковую панель Catalog.

### Страница сведений об exposure

Открыв таблицу **Exposures** ([предыдущий раздел](#exposures-menu)), выберите имя exposure, чтобы открыть страницу сведений о нём.

На странице сведений об exposure можно просмотреть метаданные, [сигналы о состоянии данных](https://docs.getdbt.tech/docs/explore/data-health-signals.md), описание и граф зависимостей. Для автоматически созданных exposures из Tableau используйте **Open in Dashboard**, чтобы открыть рабочую книгу в Tableau, или **Modify integration**, чтобы изменить настройки подключения к Tableau.

[![Просмотр страницы сведений об exposure в Catalog.](/img/docs/platform-integrations/auto-exposures/explorer-view-exposure-detail.png?v=2 "Просмотр страницы сведений об exposure в Catalog.")](#)Просмотр страницы сведений об exposure в Catalog.

### Граф зависимостей проекта

Вы также можете просматривать exposures в представлении **Project lineage**, отдельно от таблицы **Exposures**:

1. На боковой панели выберите свой проект.
2. Нажмите **View lineage**.
3. Выберите узел exposure со значком Tableau, чтобы просмотреть сведения о нём на боковой панели.

Это представление визуализирует зависимости и связи в вашем проекте. Для автоматически созданных exposures из Tableau используйте **View in Tableau** или **Modify integration** на боковой панели.

[![Просмотр exposure со значком Tableau в представлении графа зависимостей проекта в dbt Catalog.](/img/docs/platform-integrations/auto-exposures/explorer-lineage2.png?v=2 "Просмотр exposure со значком Tableau в представлении графа зависимостей проекта в dbt Catalog.")](#)Просмотр exposure со значком Tableau в представлении графа зависимостей проекта в dbt Catalog.

[![Просмотр exposure со значком Tableau в представлении графа зависимостей проекта в dbt Catalog.](/img/docs/platform-integrations/auto-exposures/explorer-lineage.png?v=2 "Просмотр exposure со значком Tableau в представлении графа зависимостей проекта в dbt Catalog.")](#)Просмотр exposure со значком Tableau в представлении графа зависимостей проекта в dbt Catalog.

## Оркестрация exposures [Бета-версия](https://docs.getdbt.tech/docs/dbt-versions/product-lifecycles "Подробнее о статусе или тарифе")[Enterprise](https://www.getdbt.com/pricing "Подробнее о статусе или тарифе")[Enterprise +](https://www.getdbt.com/pricing "Подробнее о статусе или тарифе")

[Оркестрируйте exposures](https://docs.getdbt.tech/docs/platform-integrations/orchestrate-exposures.md) с помощью [планировщика заданий dbt Cloud](https://docs.getdbt.tech/docs/deploy/job-scheduler.md), чтобы заблаговременно обновлять базовые источники данных (экстракты), используемые в рабочих книгах Tableau.

Эта возможность в бета-версии требует, чтобы задания развертывания использовали [**v1 Latest**](https://docs.getdbt.tech/docs/dbt-versions/dbt-release-tracks.md) с dbt v1, и *недоступна* в [**v2 Stable**](https://docs.getdbt.tech/docs/dbt-versions/dbt-release-tracks.md). Подробности настройки см. в разделе [Оркестрация exposures](https://docs.getdbt.tech/docs/platform-integrations/orchestrate-exposures.md).

* Оркестрация exposures с помощью задания `dbt build` обеспечивает регулярное автоматическое обновление downstream exposures, таких как экстракты Tableau.
* Вы можете управлять частотой этих обновлений, настраивая переменные среды.

Инструкции по настройке и заблаговременному запуску exposures с помощью планировщика заданий dbt см. в разделе [Оркестрация exposures](https://docs.getdbt.tech/docs/platform-integrations/orchestrate-exposures.md).
