В чем разница и когда их использовать.

Сегодня поговорим о функциях RELATED и RELATEDTABLE. Эти функции используются для доступа к данным из связанных таблиц в вашей модели данных. Если вы работали с какими-либо базами данных или инструментами бизнес-аналитики, вы должны были создать отношения между таблицами для формирования схемы снежинки или схемы звезды. Power BI действительно эффективен, когда вы создаете модель данных по звездообразной схеме.

Теперь давайте разберемся, что такое функции RELATED и RELATEDTABLE и как вы можете использовать их в своем следующем проекте Power BI. Вы можете использовать функцию RELATED для извлечения одного значения из связанной таблицы на основе текущего контекста строки. Если вы знакомы с ПРОСМОТР в Excel, СВЯЗАННЫЙ работает точно так же. Например, если вы хотите получить информацию о продавце, такую ​​как имя, из таблицы «Сотрудник» в таблицу «Продажи», чтобы увидеть сумму их продаж рядом. он вернет пустое значение, если в связанной таблице нет совпадающей строки или если есть несколько совпадающих строк.

Синтаксис СВЯЗАННОЙ функции:

RELATED(<column>)

где ‹столбец› — это имя столбца, который вы хотите использовать из связанной таблицы.

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

Синтаксис функции RELATEDTABLE:

RELATEDTABLE(<table>)

где ‹таблица› — это имя связанной таблицы, из которой вы хотите получить связанные поля. Функция RELATEDTABLE вернет пустую таблицу, если в связанной таблице нет соответствующей строки.

Позвольте мне привести пример, в котором мы хотели бы рассчитать скидку, предоставляемую клиенту женского пола. Наша компания предоставляет 10% скидки клиентам женского пола, а информация о поле клиента хранится в таблице DimCustomer. Чтобы рассчитать меру дисконтирования, мы будем использовать следующую формулу DAX:

RELATED DISCOUNT =
SUMX (
    FactInternetSales,
    FactInternetSales[SalesAmount]
        * IF ( RELATED ( DimCustomer[Gender] ) = "F", 0.1 )
)

Здесь мы используем функцию итератора SUMX, где первым аргументом является таблица FactInternetSales с SalesAmount, и мы хотели бы проверить, является ли пол клиента «F», и если да, то мы хотим применить к нему скидку 10%. Здесь мы использовали RELATED для получения поля пола клиента, поскольку функция итератора не будет отображать поля из какой-либо таблицы, кроме FactInternetSales.

ПОМНИТЕ! Функции RELATED требуется связь между таблицами, и она работает только в том случае, если связь является "один-ко-многим" или "один-к-одному". Это означает, что для каждой строки в текущей таблице есть не более одной соответствующей строки в связанной таблице.

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

RELATEDTABLE DISCOUNT =
MAXX (
    RELATEDTABLE ( DimCustomer ),
    FactInternetSales[SalesAmount]
        * IF ( DimCustomer[Gender] = "F", 0.1 )
)

В приведенной выше формуле мы также используем функцию итератора. Однако здесь мы используем MAXX, так как здесь я хотел объяснить контекст строки. У нас есть отношение «один ко многим» между таблицей DimCustomer и FactInternetSales. Всякий раз, когда мы используем RELATED или RELATEDTABLE, если вы приносите значение с одной стороны, оно всегда будет возвращать один элемент. В нашем случае, независимо от того, какую функцию итератора мы используем, например SUMX, AVERAGEX, MAXX или MINX, она вернет 10% для записей CustomerKey, где пол клиента — женский.

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

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

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

В заключение отметим, что функции RELATED и RELATEDTABLE — это удобные инструменты для доступа к данным из связанных таблиц в Power BI. Хотя эти функции DAX могут помочь вам создавать более сложные вычисления и обогатить вашу модель данных дополнительной информацией, их следует использовать с осторожностью и пониманием их поведения и влияния.

Эта статья была опубликована в Публикации Microsoft Power BI, не забудьте подписать ее для получения более интересных руководств, советов и рекомендаций по Power BI.

Если вы хотите повысить уровень своих навыков DAX, ознакомьтесь с моей записью в блоге о других функциях отношений! ОТНОШЕНИЯ ПОЛЬЗОВАТЕЛЕЙ и КРОССФИЛЬТР

Если вам понравился этот пост в блоге, вы узнали что-то полезное и хотели бы получать уведомления о моих новых блогах, подпишитесь на мою учетную запись Medium. Кроме того, не забудьте похлопать меня и сохранить в свой список для чтения. Следите за моими следующими записями в блоге с множеством других советов и рекомендаций по Power BI. Не стесняйтесь оставлять свои комментарии и отзывы ниже. Спасибо за визит!

Продолжайте учиться!