Зачем нужны связи между таблицами в Power BI

О продвинутых техниках в Power BI есть много статей. Однако об основах работы с этим инструментом информации гораздо меньше. Закрываем эти пробелы.

Антон Рыбин

эксперт

статус

Руководитель отдела маркетинга интерактивного агентства «Космос-Веб».


об авторе

Аналитик-визуализатор. Любит маму, гардемаринов и BI-системы, сторонник автоматизации процессов. Адепт систематизации и структуризации — иногда пугает неокрепшие души словами Agile и Scrum.


Ссылки


Опираясь на подробный разбор зарубежного портала RADACAD Blog и дополнив его собственным опытом, я хочу рассказать о о связях (Relationships) между таблицами. Мы выясним, что такое связи, зачем они нужны и как с ними работать.

Что такое связи в Power BI?

Давайте рассмотрим на примере. Предположим, у нас есть таблица с информацией о магазинах, и мы хотим проанализировать ее в Power BI. Таблица выглядит следующим образом:

Если в отчете построить визуализацию по количеству магазинов и сделать разбивку по географии, то получится следующее:

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

А что, если у меня больше одной таблицы?

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

  • ID магазина;
  • номер заказа;
  • дата заказа;
  • количество заказанного товара;
  • комментарий к платежу;
  • артикул.

Чтобы изучить, как работают связи, я рекомендую вам отключить (на время!) автоопределение связей в Power BI. Делается это следующим образом (я обычно использую англоязычную версию, поэтому скрины все будут на английском):

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

Если мы загрузим обе таблицы, то увидим такую картину:

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

Данный отчет похож на предыдущий, и если теперь раскрасить нашу таблицу с учетом фильтра, то получим:

Построим визуализацию по продажам в каждом из штатов:

Наблюдаем странную картину: в каждом штате продано по 493 книги. Кажется, что-то пошло не так. Фильтр не работает так, как должен. Произошло это потому, что в таблице по продажам нет информации по штату, но есть ID магазина.

При этом в самой таблице по магазинам нет информации о проданных товарах и их количестве. Но чтобы составить полноценный отчет, нам нужны обе таблицы.

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

Общее поле stor_id

Давайте рассмотрим пример:

Магазин Barnum's (ID 7066) находится в городе Tustin, штат Калифорния

В другой таблице мы видим количество продаж в магазине с ID, равным 7066.

Таким образом получается, что мы можем связать обе таблицы с помощью столбца stor_id.

Связи (Relationships)

Если вы хотите запросить данные сразу из двух таблиц и эти данные должны быть связаны между собой, то нужно создать связь между таблицами через какое-либо общее поле (если эти таблицы не связаны через другие таблицы). Для этого в окне редактирования связей надо просто наложить поле из одной таблицы в другую (при этом у них могут быть разные названия).

После этого действия должна появиться линия между обеими таблицами. Она означает связь между ними.

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

Разные названия

Как я уже написал, оба столбца могут иметь одинаковые имена, что и позволяет системе автоматически обнаруживать связи между таблицами. Ранее мы отключили данную функцию, чтобы сделать процесс нагляднее. По умолчанию в Power BI данная опция включена, и связь между таблицами по полю stor_id построилась бы без вашего участия.

Другой способ определения связей

На вкладке Home в Power BI Desktop надо кликнуть на кнопке Manage Relationships.

Появится окно редактора связей, в котором видны все существующие связи между таблицами. Можно создать новую связь вручную с помощью кнопки New... Также есть вариант автоопределения связей между всеми таблицами (кнопка Autodetect).

Для создания новой связи нужно в выпадающем меню выбрать одну из наших таблиц и выделить колонку, которую мы хотим связать. Такую же операцию надо проделать с выпадающим окном ниже, только выбрать надо вторую нашу таблицу.

Результат создания связей

Редактирование связей

Есть два варианта редактирования связей:

1. Зайти в Редактор связей (Manage Relationships) и сделать это там.

2. Дважды кликнуть по линии связи между двумя таблицами — после этого можно внести нужные изменения.

Совпадение данных

Оба поля, между которыми вы создаете связь, должны иметь один и тот же тип данных (или типы данных, сопоставляемых друг с другом). Например Текст -> Текст, иначе появится окно с ошибкой.

Поля должны быть в обеих таблицах

Оба сопоставляемых поля должны присутствовать в обеих таблицах. В нашем примере это поле stor_id.

Фильтрация

Связи между таблицами создаются, чтобы получить возможность фильтровать данные по полям из двух разных таблиц.

В итоге, когда построим визуализацию, мы увидим, что все работает как надо:

Итог

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

Курс

Профессия
Performance-маркетолог


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

Хочешь получать крутые статьи по интернет-маркетингу?
Подпишись на рассылку Skillbox