# Power BI [Предварительная версия](https://docs.getdbt.tech/docs/dbt-versions/product-lifecycles "Подробнее о статусе или тарифе")

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

Интеграция с Power BI позволяет напрямую выполнять запросы к Semantic Layer, что дает возможность строить дашборды в Power BI на основе доверенных, актуальных данных. Интеграция обеспечивает живое подключение к Semantic Layer через Power BI Desktop или Power BI Service.

к сведению

Эта интеграция в настоящее время доступна в предварительной версии. Готовность к использованию в производственной среде зависит от участия Microsoft в стандарте Apache Ossie.

Используете Power BI? Вы можете повлиять на будущее этой интеграции. Узнайте у своего представителя Microsoft о поддержке Ossie!

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

* Вы [настроили Semantic Layer](https://docs.getdbt.tech/docs/use-dbt-semantic-layer/setup-sl.md).
* Вы используете поддерживаемый [канал выпуска dbt](https://docs.getdbt.tech/docs/dbt-versions/dbt-release-tracks.md) или dbt версии 1.6 или выше.
* Вы установили [Power BI Desktop или Power BI On-premises Data Gateway](https://learn.microsoft.com/en-us/power-bi/connect-data/service-gateway-custom-connectors).
  * Power BI Service не поддерживает пользовательские коннекторы напрямую. Чтобы использовать коннектор в Power BI Service, необходимо установить и настроить его на локальном шлюзе данных (On-premises Data Gateway).
* Для входа вам понадобятся [адрес хоста dbt](https://docs.getdbt.tech/docs/use-dbt-semantic-layer/setup-sl.md#3-view-connection-detail), [идентификатор среды (Environment ID)](https://docs.getdbt.tech/docs/use-dbt-semantic-layer/setup-sl.md#administer-the-semantic-layer-1) и [сервисный токен](https://docs.getdbt.tech/docs/dbt-apis/service-tokens.md) или [персональный токен доступа](https://docs.getdbt.tech/docs/dbt-apis/user-tokens.md). Для этой учетной записи должен быть настроен Semantic Layer.
* У вас должна быть [учетная запись](https://www.getdbt.com/pricing) dbt на тарифе Starter или Enterprise. Подходит как для мультитенантного (Multi-tenant), так и для однотенантного (Single-tenant) развертывания.

📹 Узнайте о семантическом слое 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).

## Установка коннектора

версии Power BI

Коннектор Power BI может быть несовместим с более ранними версиями Power BI Desktop. Для наилучших результатов рекомендуем установить последнюю версию непосредственно из [Microsoft Store](https://apps.microsoft.com/detail/9ntxr16hnw1t?hl=en-US\&gl=US) или [Центра загрузки](https://www.microsoft.com/en-us/download/details.aspx?id=58494).

Коннектор Power BI для Semantic Layer состоит из пользовательского коннектора Power BI `.pqx` и драйвера ODBC. Установите оба компонента с помощью нашего установщика для Windows, выполнив следующие действия:

1. Скачайте и установите [установщик `.msi`](https://github.com/dbt-labs/semantic-layer-powerbi-connector/releases/download/v1.0.0/dbt.Semantic.Layer.for.Power.BI.zip)

2. Запустите установщик и следуйте инструкциям на экране, чтобы установить драйвер ODBC и коннектор для Power BI Desktop.

### Проверка установки

Обратите внимание: пользователям более ранних версий Power BI может потребоваться [настроить коннектор](#configure-the-connector), прежде чем они смогут проверить установку.

Чтобы проверить установку:

1. Откройте **ODBC Data Sources (64-bit)** на своём компьютере.
2. Перейдите на вкладку **System DSN** и убедитесь, что `dbt Labs ODBC DSN` зарегистрирован.
3. Перейдите на вкладку **Drivers** и убедитесь, что `dbt Labs ODBC Driver` установлен.
4. Откройте Power BI Desktop, перейдите в **Settings**, затем в **Data Source Settings**. Убедитесь, что коннектор `dbt Semantic Layer` загружен корректно.

Чтобы опубликованные отчеты в Power BI Service могли использовать коннектор, IT-администратор вашей организации должен установить и настроить его в On-premises Data Gateway.

## Для ИТ-администраторов

Этот раздел предназначен для IT-администраторов, которые устанавливают ODBC-драйвер и коннектор в On-premises Data Gateway.

Чтобы опубликованные отчёты могли использовать коннектор в Power BI Service, ИТ-администратор должен установить и настроить его:

1. Установите драйвер ODBC и коннектор в локальный шлюз данных (On-premises Data Gateway). Запустите тот же установщик `.msi`, который использовался для Power BI Desktop, и выполните установку на компьютере, где размещён шлюз.

2. Скопируйте файл коннектора в каталог шлюза:

   1. Найдите файл `.pqx`: `C:\Users\<YourUser>\Documents\Power BI Desktop\Custom Connectors\dbtSemanticLayer.pqx`.
   2. Скопируйте его в каталог пользовательских коннекторов локального шлюза данных Power BI: `C:\Windows\ServiceProfiles\PBIEgwService\Documents\Power BI Desktop\Custom Connectors`.

3. Проверьте установку, выполнив действия из раздела [Установка коннектора](#verify-installation).

4. Включите коннектор в Power BI Enterprise Gateway:

   1. Откройте `EnterpriseGatewayConfigurator.exe`.
   2. Перейдите в раздел **Connectors**.
   3. Убедитесь, что коннектор `dbt Semantic Layer` установлен и активен.

Для получения дополнительной информации о настройке пользовательских коннекторов в Power BI On-premises Data Gateway обратитесь к [официальной документации Power BI](https://learn.microsoft.com/en-us/power-bi/connect-data/service-gateway-custom-connectors).

## Настройка коннектора

После установки коннектора вам потребуется настроить учетные данные проекта для подключения к Semantic Layer из отчета.

После установки коннектора необходимо настроить учетные данные проекта, чтобы подключиться к Semantic Layer из отчета.

1. Создайте пустой отчет.

2. В левом верхнем углу нажмите **Get data**.

3. Найдите Semantic Layer, затем нажмите **Connect**.

4. Укажите данные подключения. Значения Host и Environment ID можно найти в настройках Semantic Layer для вашего проекта dbt.

   подсказка

   Убедитесь, что в разделе **Data Connectivity mode** выбран **DirectQuery**, так как коннектор Semantic Layer не поддерживает режим **Import**. Подробнее см. в разделе [Considerations](#considerations).

5. Нажмите **OK**, чтобы продолжить.

   [![Выберите режим DirectQuery](/img/docs/platform-integrations/sl-pbi/pbi-directquery.jpg?v=2 "Выберите режим DirectQuery")](#)Выберите режим DirectQuery

6. На следующем экране вставьте свой сервисный или персональный токен, а затем нажмите **Connect**.

7. Вы увидите боковую панель с несколькими «виртуальными» таблицами. `ALL` представляет все определённые вами объекты семантического слоя. Остальные таблицы представляют каждый из ваших сохранённых запросов. Выберите ту, которую хотите загрузить в свой дашборд. Затем нажмите **Load**.

   [![Выберите таблицы на боковой панели](/img/docs/platform-integrations/sl-pbi/pbi-sidepanel.jpg?v=2 "Выберите таблицы на боковой панели")](#)Выберите таблицы на боковой панели

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

## Настройка опубликованных отчётов

После публикации отчета и при первом нажатии **Publish** для конкретного отчета необходимо настроить Power BI Service для использования On-premises Data Gateway вашей организации для доступа к данным из Semantic Layer:

1. В правом верхнем углу нажмите **Settings > Power BI settings**.

   [![Перейдите в Settings > Power BI Settings](/img/docs/platform-integrations/sl-pbi/pbi-settings.jpg?v=2 "Перейдите в Settings > Power BI Settings")](#)Перейдите в Settings > Power BI Settings

2. Перейдите на вкладку **Semantic models** и выберите свой отчёт на боковой панели слева.

3. В разделе **Gateway and cloud connections** выберите **On-premises Data Gateway**, на котором ваш ИТ-администратор установил коннектор Semantic Layer.

   * Если в поле Status указано **Not configured correctly**, потребуется настроить подключение.

   [![Настройте подключение через шлюз](/img/docs/platform-integrations/sl-pbi/pbi-gateway-cloud-connections.jpg?v=2 "Настройте подключение через шлюз")](#)Настройте подключение через шлюз

4. Нажмите на стрелку в столбце **Actions**, затем нажмите **Manually add to gateway**.

   [![Добавьте подключение к шлюзу вручную](/img/docs/platform-integrations/sl-pbi/pbi-manual-gateway.jpg?v=2 "Добавьте подключение к шлюзу вручную")](#)Добавьте подключение к шлюзу вручную

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

   * Установите для подключения значение **Encrypted** (обязательно). В противном случае серверы Semantic Layer отклонят подключение.

   [![Установите для подключения значение Encrypted](/img/docs/platform-integrations/sl-pbi/pbi-encrypted.jpg?v=2 "Установите для подключения значение Encrypted")](#)Установите для подключения значение Encrypted

6. Нажмите **Create**. Будет выполнена проверка подключения (если вы не решите её пропустить). Если подключение установлено успешно, оно будет сохранено.

Теперь вы можете вернуться к опубликованному отчету в Power BI Service и убедиться, что данные загружаются корректно.

## Использование коннектора

В этом разделе описывается, как использовать коннектор Semantic Layer в Power BI.

Коннектор Semantic Layer создает:

* Виртуальную таблицу для каждого сохраненного запроса.
* Таблицу `METRICS.ALL`, содержащую все метрики, при этом измерения и сущности отображаются как обычные столбцы измерений.

Эти таблицы фактически не соответствуют физическим таблицам в вашем хранилище данных. Вместо этого Power BI отправляет запросы к этим таблицам, а серверы Semantic Layer (до выполнения запроса в хранилище):

* Парсят SQL.
* Извлекают все запрашиваемые столбцы, group by и фильтры.
* Генерируют SQL для запроса к существующим таблицам.
* Возвращают данные обратно в Power BI, который «не знает», что все это происходило.

[![Схема интеграции с Power BI](/img/docs/platform-integrations/sl-pbi/sl-pbi.jpg?v=2 "Схема интеграции с Power BI")](#)Схема интеграции с Power BI

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

#### Изменение временной гранулярности

При выборе временных измерений в меню **Group By** отображается список доступных уровней детализации времени. По умолчанию выбран самый низкий уровень детализации. Metric time — временное измерение по умолчанию для группировки метрик.

к сведению

Примечание: [Пользовательские уровни детализации времени](https://docs.getdbt.tech/docs/build/metricflow-time-spine.md#add-custom-granularities) (например, финансовый год) в настоящее время не поддерживаются и недоступны в этой интеграции. Доступны только [стандартные уровни детализации](https://docs.getdbt.tech/docs/build/dimensions.md?dimension=time_gran#time) (например, день, неделя, месяц и так далее). Если вам нужен доступ к пользовательским уровням детализации, рассмотрите возможность использования [API семантического слоя](https://docs.getdbt.tech/docs/dbt-apis/sl-api-overview.md).

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

 Не каждый «столбец» METRICS.ALL совместим с любым другим столбцом

* `METRICS.ALL` объединяет все существующие метрики, сущности и измерения. Запросы должны быть валидными запросами Semantic Layer, иначе они завершатся ошибками компиляции запросов MetricFlow.

* Для таблиц сохраненных запросов все «столбцы» будут совместимы друг с другом, так как по определению сохраненные запросы являются валидными и могут быть разрезаны по любым измерениям, присутствующим в запросе.

 Коннектор dbt Semantic Layer нативно не поддерживает режим Import

* Используйте режим `DirectQuery`, чтобы обеспечить совместимость.

* В режиме `Import` выполняется попытка выбрать всю таблицу для импорта в Power BI, а значит, скорее всего, будет сгенерирован SQL, который преобразуется в недопустимый запрос к Semantic Layer: он попытается запросить все метрики, измерения и сущности одновременно.

* Чтобы импортировать данные в отчёт Power BI, выберите допустимую комбинацию столбцов для импорта (такую, которая позволит сформировать допустимый запрос к Semantic Layer).

  * Для этого можно использовать `Table.SelectColumns`: `= Table.SelectColumns(Source{[Item="ALL",Schema="METRICS",Catalog=null]}[Data], {"Total Profit", "Metric Time (Day)"})`
  * Учтите, что все вычисления будут выполняться внутри Power BI, без обращения к серверам Semantic Layer. Это может привести к неверным или расходящимся результатам.
  * Например, Semantic Layer обычно отвечает за агрегацию накопительных метрик до более крупных временных интервалов. Суммирование значений за все недели года для получения годовой детализации на основе запроса к Semantic Layer с недельной детализацией, скорее всего, даст неверные результаты. Вместо этого следует запрашивать данные с нужной детализацией непосредственно у Semantic Layer, чтобы получить точные результаты.

 Коннектор dbt Semantic Layer игнорирует агрегации, определенные в Power BI

* Если вы измените тип агрегации метрики с `SUM()` на `COUNT()` или любой другой, ничего не изменится. Это связано с тем, что функции агрегации определяются в Semantic Layer, и они игнорируются при трансляции SQL, сгенерированного Power BI, в запросы Semantic Layer.
* Агрегации в Power BI, такие как `Count (Distinct)`, `Standard Deviation`, `Variance` и `Median`, могут возвращать ошибку и не работать вовсе.

 Какие действия не поддерживаются?

Не поддерживаются следующие возможности:

* Пользовательское моделирование
* Соединение таблиц
* Создание пользовательских столбцов внутри таблицы
* Пользовательские Data Analysis Expressions (DAX) или Power Query (PQ)
