Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):


Антон БудуевПриветствую Вас, дорогие друзья, с Вами Будуев Антон. В этой статье мы поговорим про функции RELATED и RELATEDTABLE в Power BI и Power Pivot.

Именно эти функции позволяют, находясь в одной таблице, дотянуться до значений в другой таблице через внутренние связи DAX, настроенные во вкладке «Связи» в Power BI или Excel (Power Pivot).

Для Вашего удобства, рекомендую скачать «Справочник DAX функций для Power BI и Power Pivot» в PDF формате.

Если же в Ваших формулах имеются какие-то ошибки, проблемы, а результаты работы формул постоянно не те, что Вы ожидаете и Вам необходима помощь, то записывайтесь в бесплатный экспресс-курс «Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot».

А также, подписывайтесь на наши социальные сети. Потому что именно в них, Вам будут доступны оперативно и каждый день наши актуальные фишки, секреты, наработки, примеры, кейсы, полезные советы, видео и статьи по темам сквозной BI аналитики (Power BI, DAX, Power Pivot, Excel…): Вконтакте, Инстаграм, Фейсбук, YouTube.

 

DAX функция RELATED в Power BI и Power Pivot

RELATED () — находясь в одной таблице, позволяет в рамках контекста строки получить связанное значение из второй таблицы по связи «Многие к одному».

Синтаксис: RELATED ([Столбец])

Рассмотрим пример DAX формулы с участием RELATED.

В Power BI Desktop имеются 2 исходные таблицы «Менеджеры Продажи» и «Менеджеры Отделы»:

Исходные таблицы

 

Между ними настроена связь по полю «Менеджер» по типу «Многие к одному», то есть, много менеджеров может находится в одном отделе:

Связь многие к одному

 

Попробуем в таблицу «Менеджеры Продажи» через связь добавить третий столбец [Отделы]:

Столбец Отделы

 

Для этого создадим в Power BI Desktop во вкладке «Моделирование» вычисляемый столбец и постараемся в его формуле прописать столбец [Отделы] из связанной таблицы «Менеджеры Отделы»:

Отделы = 'МенеджерыОтделы'[Отдел]

И по данной формуле у нас всплывает ошибка:

Ошибка формулы создания столбца

 

На самом деле все правильно. Ведь мы, находясь в одной таблице, в формуле вычисляемого столбца попытались сослаться на столбец совершенно другой таблицы. И даже несмотря на имеющуюся между ними связь, так значение получить невозможно. Вот тут, как раз таки, и необходимо использовать DAX функцию RELATED.

Давайте перепишем формулу вычисляемого столбца с использованием RELATED:

Отделы = RELATED ('МенеджерыОтделы'[Отдел])

И вот теперь, все прошло удачно. Функция RELATED позволила нам, находясь в одной таблице, дотянуться до значения другой таблицы по связи «Многие к одному» и создать соответствующий новый столбец:

Успешная работа формулы на основе функции RELATED

 

Теперь, давайте рассмотрим противоположную ситуацию. Сейчас мы будем находиться в другой таблице «Менеджеры Отделы» и в ней нам нужно будет создать новый столбец с подсчетом количества продаж каждым менеджером.

То есть, нам нужно подсоединиться через связь к таблице «Менеджеры Продажи» и там посчитать количество продаж каждого менеджера. Это количество мы можем посчитать при помощи DAX функции COUNTWROS, которая считает количество строк. Ну а подсоединяться к другой таблице через связь мы будем с помощью RELATED.

Пропишем данную формулу:

КолПродаж = 
COUNTROWS(
    RELATED ('МенеджерыПродажи')
)

И у нас опять получилась ошибка:

Ошибка с использованием DAX функции RELATED

 

На самом деле ошибка закономерна, так как функция RELATED работает по связи «Многие к одному», что у нас было соблюдено в первом примере и что мы нарушили сейчас. Так как в данном примере у нас уже связь другая, а именно «Один ко многим» (один отдел может в себе содержать много менеджеров) и с этой связью RELATED уже не работает.

Тут нам на помощь может прийти вторая функция работы по связям в DAX: RELATEDTABLE.

 

DAX функция RELATEDTABLE в Power BI и Power Pivot

RELATEDTABLE () — находясь в одной таблице, возвращает связанную таблицу значений из второй таблицы по связи «Один ко многим», где одна строка соответствуем многим строкам.

Синтаксис: RELATEDTABLE (‘Таблица’)

Функция RELATEDTABLE, в отличие от RELATED, уже не возвращает какое-то одно скалярное значение, она возвращает именно связанную таблицу значений, с которыми мы можем что-то сделать, например посчитать количество строк:

Схема работы функции RELATEDTABLE

 

Давайте доработаем формулу предыдущего примера и исправим там ошибку, а именно, заменим функцию RELATED на RELATEDTABLE:

КолПродаж = 
COUNTROWS(
    RELATEDTABLE ('МенеджерыПродажи')
)

Теперь у нас все хорошо, пример формулы с RELATEDTABLE отработал отлично и посчитал нам количество продаж по каждому менеджеру:

Пример формулы с участием DAX функции RELATEDTABLE

 

На этом, с разбором функций связи языка DAX в Power BI и Power Pivot — RELATED и RELATEDTABLE, все. Успехов Вам, друзья!

 

Антон БудуевС уважением, Будуев Антон.
Проект «BI — это просто»

 

 

 

Присоединяйтесь к нашим социальным сетям

Именно в них оперативно и каждый день Вам будут доступны наши актуальные фишки, секреты, наработки, примеры, кейсы, полезные советы, видео и статьи 

по темам сквозной BI аналитики (Power BI, DAX, Power Pivot, Excel...)

Наша группа Вконтакте Мы в Инстаграме Наша группа в Фейсбук Наш YouTube канал
Наша группа VK
Подписаться на наш YouTube канал

 

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

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

 

Понравился материал статьи?
Избранные закладкиДобавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D


Вам это может быть интересно. Другие статьи нашего обучающего портала:


Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

* Заполняя форму отправки комментария своими персональными данными (имя, email, сайт и др.), Вы автоматически подтверждаете свое согласие на обработку своих персональных данных