Почему не работает related dax

Обновлено: 14.05.2024

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

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

Функции RELATED требуется контекст строки; поэтому ее можно использовать только в выражении вычисляемого столбца, где текущий контекст строки является однозначным, или как вложенную функцию в выражении, использующем функцию сканирования таблицы. Функция сканирования таблицы, такая как SUMX, возвращает значение текущей строки, а затем сканирует другую таблицу на предмет наличия в ней экземпляров этого значения.

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

Функции связанных значений в DAX: RELATED и RELATEDTABLE в Power BI и Power Pivot

Антон Будуев

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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

Пожалуйста, оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

[Экспресс-видеокурс] Быстрый старт в языке DAX

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

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


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

Что еще посмотреть / почитать?

DAX функции BLANK, FIXED, LEN, REPT и TRIM в Power BI

Текстовые функции в DAX: BLANK, FIXED, LEN, REPT и TRIM в Power BI (Power Pivot)

DAX функции INT, TRUNC, ROUND, ROUNDDOWN, ROUNDUP, MROUND, FLOOR, CEILING, ISO.CEILING в Power BI

Функции округления в DAX: INT, TRUNC, ROUND, ROUNDDOWN, ROUNDUP, MROUND, FLOOR, CEILING, ISO.CEILING в Power BI и Power Pivot

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

Подписывайтесь на наши социальные сети

Именно в них оперативно и каждый день Вам будут доступны наши актуальные фишки, секреты, наработки, примеры, кейсы, полезные советы, видео и статьи ​​по темам сквозной BI аналитики (Power BI, DAX, Power Pivot, Excel. )

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

Наша группа в VK

Наш YouTube канал

Наша группа в VK

Наша группа в VK

Мы в Инстаграме

Мы в Инстаграме

Наш YouTube канал

Наш YouTube канал

Последние видео на нашем YouTube канале:

Наш YouTube канал

Справочник DAX функций для Power BI и Power Pivot

Связаться с нами: support@biprosto.ru Copyright © Проект "BI - это просто" , 2017 - 2021 ИП Будуев Антон Сергеевич. ОГРНИП 315745600033176

Оставляя персональные данные (email, имя, логин) в формах на страницах данного сайта "BI - это просто", Вы автоматически подтверждаете свое согласие на обработку своих персональных данных

Данный сайт "BI - это просто" при своей работе использует файлы cookie. Продолжая использовать сайт, Вы даете свое согласие на работу с этими файлами.

Подняться наверх

Справочник DAX функций для Power BI и Power Pivot

на русском языке с подробными примерами формул на практике


  • ищете подробное описание DAX функций для Power BI или Power Pivot на русском языке
  • нуждаетесь в примерах формул и их демонстрации на практике
  • устали разбираться с функциями самостоятельно
  • тратите огромное количество времени на создание формул методом "тыка"

то, справочник DAX функций для Power BI и Power Pivot - это то, что Вам нужно!

+ БОНУС (видеокурс по DAX)

Справочник DAX функций для Power BI и Power Pivot

на русском языке с подробными примерами формул на практике

+ БОНУС: [экспресс-видеокурс] Быстрый старт в языке формул DAX для Power BI и Power Pivot

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

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

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

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

Пример формулы на основе DAX функции EARLIER.

Давайте писать соответствующую формулу постепенно, шаг за шагом.

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

Подсчет количества строк

Количество строк мы получили, но, нам нужно, чтобы в каждой строке были номера от 1 до 4, а не значения 4 во всех строках. Для этого, при расчете количества строк в исходной таблице, нам эту исходную таблицу каждый раз (для каждой строки) нужно фильтровать. Например, так:

Результатом выполнения этой функции будут следующие значения:

Применение фильтра к исходной таблице

Новое условие фильтра

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

Из того факта, который я выше описал, получается, что нам нужно для расчета ранга для каждой конкретной строки в условии фильтра столбец [Продажи] сравнивать с этим же столбцом [Продажи] в этой же конкретной строке. Давайте попробуем написать такую формулу:

Но, к сожалению, у нас ничего не получилось:

Неправильная работа формулы

Почему так? Потому что, когда формула считала значение для 1 строки (менеджер Петров), то DAX видел только одну эту строку. И в столбце [Продажи] было только одно значение 120000. Но, как только DAX спустился внутрь самой формулы до функции FILTER, то эта функция, прежде чем фильтровать, возвратила полную исходную таблицу и в условие фильтра уже был подан полный столбец [Продажи].

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

А это, как раз таки, может сделать, рассматриваемая в этой статье, функция EARLIER. Исправим нашу формулу, добавив в нее функцию EARLIER:

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

И вот теперь, все заработало как надо:

Результат работы формулы в Power BI на основе DAX функции EARLIER

Почему? Потому, что EARLIER возвратила значение столбца [Продажи] из контекста строки на уровень выше. И значения столбца [Продажи] на втором уровне контекста строки, созданного функцией FILTER, сравнивались с единственным значением столбца [Продажи] первого уровня контекста строки, который был создан самой исходной таблицей.

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

На этом, с разбором DAX функции EARLIER в Power BI и Power Pivot, в этой статье все.

Пожалуйста, оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1

[Экспресс-видеокурс] Быстрый старт в языке DAX

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

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


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

Что еще посмотреть / почитать?

Создание переменных в DAX: VAR и RETURN в Power BI

VAR и RETURN: создание переменных в DAX (Power BI)

Функции COUNT в DAX

Функции подсчета количества в DAX: COUNT, COUNTA, COUNTX, COUNTAX, COUNTBLANK, DISTINCTCOUNT и COUNTROWS (для Power BI и Power Pivot)

DAX функции FIND и SEARCH в Power BI

Как в Power BI (Power Pivot) найти текст в составе другого текста? DAX функции FIND и SEARCH

Возвращаемое значение

Remarks

Функция RELATEDTETABLE изменяет контекст, в котором выполняется фильтрация данных, и вычисляет выражение в новом контексте, который вы задаете.

Эта функция является ярлыком для функции CALCULATETABLE без логического выражения.

Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).

Пример

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

Пример

В следующем примере для создания отчета о продажах, в котором исключены данные о продажах в США, создается мера "Продажи через Интернет за пределами США". Чтобы создать меру, необходимо отфильтровать таблицу InternetSales_USD, чтобы исключить все продажи, совершенные в США, в таблице SalesTerritory. США как страна упоминаются в таблице SalesTerritory 5 раз, по одному разу для каждого из следующих регионов: Северо-Запад, Северо-Восток, Центр, Юго-Запад и Юго-Восток.

Первый способ фильтрации продаж через Интернет для создания меры заключается в добавлении выражения фильтра, как указано ниже:

Однако этот подход нелогичен, подвержен ошибкам ввода и может не работать, если в будущем любой из существующих регионов будет разделен.

В этом случае лучше всего использовать существующую связь между InternetSales_USD и SalesTerritory, а также явно указать, что страна должна отличаться от США. Для этого создайте выражение фильтра, аналогичное следующему:

Это выражение использует функцию RELATED для поиска значения страны в таблице SalesTerritory, начиная со значения ключевого столбца SalesTerritoryKey в таблице InternetSales_USD. Результат поиска используется функцией фильтра, чтобы определить, отфильтрована ли строка InternetSales_USD.

Если этот пример не работает, может потребоваться создать связь между таблицами.

В следующей таблице показаны только итоги для каждого региона, чтобы доказать, что выражение фильтра в мере ("Продажи через Интернет за пределами США") работает должным образом.

Row Labels Internet Sales Non USA Internet Sales
Австралия 4 999 021,84 долл. США 4 999 021,84 долл. США
Канада 1 343 109,10 долл. США 1 343 109,10 долл. США
Франция 2 490 944,57 долл. США 2 490 944,57 долл. США
Германия 2 775 195,60 долл. США 2 775 195,60 долл. США
Соединенное Королевство 5 057 076,55 долл. США 5 057 076,55 долл. США
США 9 389 479,79 долл. США
Grand Total 26 054 827,45 долл. США 16 665 347,67 долл. США

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

Синтаксис

Параметры

Термин Определение
tableName Имя существующей таблицы с использованием стандартного синтаксиса DAX. Этот параметр не может быть выражением.

RELATEDTABLE

Вычисляет табличное выражение в контексте, измененном указанными фильтрами.

Читайте также: