Почему не работает related dax
Функция требует 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:
Пропишем данную формулу:
И у нас опять получилась ошибка:
Тут нам на помощь может прийти вторая функция работы по связям в DAX: RELATEDTABLE.
DAX функция RELATEDTABLE в Power BI и Power Pivot
Функция RELATEDTABLE, в отличие от RELATED, уже не возвращает какое-то одно скалярное значение, она возвращает именно связанную таблицу значений, с которыми мы можем что-то сделать, например посчитать количество строк:
Давайте доработаем формулу предыдущего примера и исправим там ошибку, а именно, заменим функцию RELATED на RELATEDTABLE:
Теперь у нас все хорошо, пример формулы с RELATEDTABLE отработал отлично и посчитал нам количество продаж по каждому менеджеру:
Пожалуйста, оцените статью:
- 5
- 4
- 3
- 2
- 1
Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.
Понравился материал статьи?
Добавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D
Что еще посмотреть / почитать?
Добавить комментарий
Подписывайтесь на наши социальные сети
Именно в них оперативно и каждый день Вам будут доступны наши актуальные фишки, секреты, наработки, примеры, кейсы, полезные советы, видео и статьи по темам сквозной BI аналитики (Power BI, DAX, Power Pivot, Excel. )
Наша группа в VK
Мы в Инстаграме
Наш YouTube канал
Последние видео на нашем YouTube канале:
Связаться с нами: [email protected] 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 уровень контекста строки выше.
И вот теперь, все заработало как надо:
Почему? Потому, что EARLIER возвратила значение столбца [Продажи] из контекста строки на уровень выше. И значения столбца [Продажи] на втором уровне контекста строки, созданного функцией FILTER, сравнивались с единственным значением столбца [Продажи] первого уровня контекста строки, который был создан самой исходной таблицей.
Понимаю, что сходу, прочитав эту статью, понять смысл EARLIER у Вас может сразу не получится. Попробуйте смоделировать все примеры, которые мы рассматривали в этой статье, самостоятельно. Шаг за шагом. Тогда, думаю, понимание смысла функционирования EARLIER к Вам должно прийти.
На этом, с разбором DAX функции EARLIER в Power BI и Power Pivot, в этой статье все.
Пожалуйста, оцените статью:
- 5
- 4
- 3
- 2
- 1
Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.
Понравился материал статьи?
Добавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D
Что еще посмотреть / почитать?
Возвращаемое значение
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
Вычисляет табличное выражение в контексте, измененном указанными фильтрами.
Читайте также: