Зачем нужны связи между таблицами в Power BI
О продвинутых техниках в Power BI есть много статей. Однако об основах работы с этим инструментом информации гораздо меньше. Закрываем эти пробелы.
vlada_maestro / shutterstock
Антон Рыбин
эксперт
статус
Руководитель отдела маркетинга интерактивного агентства «Космос-Веб».
об авторе
Аналитик-визуализатор. Любит маму, гардемаринов и BI-системы, сторонник автоматизации процессов. Адепт систематизации и структуризации — иногда пугает неокрепшие души словами Agile и Scrum.
Опираясь на подробный разбор зарубежного портала RADACAD Blog и дополнив его собственным опытом, я хочу рассказать о о связях (Relationships) между таблицами. Мы выясним, что такое связи, зачем они нужны и как с ними работать.
Что такое связи в Power BI?
Давайте рассмотрим на примере. Предположим, у нас есть таблица с информацией о магазинах, и мы хотим проанализировать ее в Power BI. Таблица выглядит следующим образом:
Если в отчете построить визуализацию по количеству магазинов и сделать разбивку по географии, то получится следующее:
Как видим, данный отчет фильтрует таблицу и наглядно отображает количество записей для каждого штата. Вот визуализация этого фильтра в таблице:
А что, если у меня больше одной таблицы?
Что ж, давайте посмотрим, что будет в этом случае. Предположим, что у нас еще есть таблица с данными по продажам для каждого из магазинов. Таблица содержит следующие столбцы:
- ID магазина;
- номер заказа;
- дата заказа;
- количество заказанного товара;
- комментарий к платежу;
- артикул.
Чтобы изучить, как работают связи, я рекомендую вам отключить (на время!) автоопределение связей в Power BI. Делается это следующим образом (я обычно использую англоязычную версию, поэтому скрины все будут на английском):
Если мы загрузим обе таблицы, то увидим такую картину:
Между таблицами нет никаких связей. Теперь, если мы захотим отфильтровать и узнать общее количество книг, проданных в том или ином магазине, то сможем сделать это с помощью визуализации:
Данный отчет похож на предыдущий, и если теперь раскрасить нашу таблицу с учетом фильтра, то получим:
Построим визуализацию по продажам в каждом из штатов:
Наблюдаем странную картину: в каждом штате продано по 493 книги. Кажется, что-то пошло не так. Фильтр не работает так, как должен. Произошло это потому, что в таблице по продажам нет информации по штату, но есть ID магазина.
При этом в самой таблице по магазинам нет информации о проданных товарах и их количестве. Но чтобы составить полноценный отчет, нам нужны обе таблицы.
Общим полем для обеих таблиц является поле stor_id, по которому мы и можем сопоставить информацию о наших филиалах и продажах в каждом из них.
Давайте рассмотрим пример:
В другой таблице мы видим количество продаж в магазине с 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. Они позволяют нам фильтровать данные по двум и более таблицам без использования сложных функций для поиска и сопоставления значений из таблиц.