Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):
- VAR и RETURN: создание переменных в DAX (Power BI)
- Подробное ВИДЕО «Делите большие формулы в Power BI на смысловые части при помощи переменных DAX»
Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В данной статье мы разберем инструмент, появившийся в языке DAX относительно недавно — это переменные, создаваемые через специальные функции (служебные слова) VAR и RETURN. Рассмотрим их на примере разбора формулы в Power BI.
Для Вашего удобства, рекомендую скачать «Справочник DAX функций для Power BI и Power Pivot» в PDF формате.
Если же в Ваших формулах имеются какие-то ошибки, проблемы, а результаты работы формул постоянно не те, что Вы ожидаете и Вам необходима помощь, то записывайтесь в бесплатный экспресс-курс «Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot».
Да, и еще один момент, в рамках распродажи до 29 ноября 2024 г. у Вас имеется возможность приобрести большой, пошаговый видеокурс «DAX — это просто» со скидкой 50% (вместо 10000, всего за 5000 руб.)
В этом видеокурсе язык DAX преподнесен как простой конструктор, состоящий из нескольких блоков, которые имеют свое определенное, конкретное предназначение. Сочетая различными способами эти блоки, Вы, при помощи конструктора формул DAX, с легкостью сможете решать любые (простые или сложные) аналитические задачи.
Итак, пользуйтесь этой возможностью, заказывайте курс «DAX — это просто» со скидкой 50% (до 29 ноября 2024 г.): узнать подробнее
VAR и RETURN: создание переменных в DAX (Power BI)
Итак, любая переменная в DAX всегда состоит из обязательного синтаксиса, давайте разберем его.
Синтаксис:
VAR Name 1 = Код Переменной 1 VAR Name 2 = Код Переменной 2 RETURN Name 1 * Name 2
Где:
- Name — имя создаваемой переменной
- Код Переменной — любая DAX формула, характеризующая саму переменную
- VAR — служебное слово (специальная функция), всегда предшествующая объявлению имени переменной при ее создании
- RETURN — служебное слово (специальная функция), оканчивающая создание (объявление) блока переменных, после него идет основной код формулы
- Name 1 * Name 2 — основной код формулы (меры, вычисляемого столбца или таблицы)
Для чего нужны переменные в DAX (Power BI)?
Переменные:
- визуально упрощают сложный код формулы в DAX
- уменьшают время расчета сложного кода, который имеет повторяемые участки, так как переменная рассчитывается только 1 раз и ей можно заменить повторяемые участки кода в основной формуле
- «запоминают контекст строки», в котором переменная была вычислена
Рассмотрим применение переменных (VAR и RETURN) в Power BI на основе очень простого, но показательного примера DAX формулы.
В Power BI Desktop имеется исходная таблица «Товары», содержащая столбцы [Товар], [Затраты], [Количество] и [Цена]:
Необходимо в этой таблице рассчитать прибыль по каждой строчке товара. Прибыль равняется цене за вычетом затрат, помноженная на количество. Напишем эту простую формулу:
Прибыль = ([Цена] - [Затраты]) * [Количество]
Данная формула состоит из двух простейших действий:
- ([Цена] — [Затраты]), то есть, в этом действии высчитывается прибыль по одной единице товара
- * [Количество], то есть, результат первого действия (прибыль по одной единице товара) помножается на количество товара в конкретной строке таблицы
Посмотрим, как эта формула отработала в Power BI:
Теперь, давайте изменим эту формулу, применив в ней переменные.
Скажу сразу, что на самом деле, здесь переменные вовсе не нужны, но на этом простом примере очень легко понять функционирование переменных в DAX.
Итак, формула с использованием переменной в Power BI будет такая:
Прибыль = VAR p1 = [Цена] - [Затраты] RETURN p1 * [Количество]
В данной формуле мы создали одну переменную. Ее имя — p1.
Перед созданием (объявлением) самой переменной, обязательно нужно прописать функцию (служебное слово) VAR, что мы и сделали. Дословно, VAR говорит движку DAX, что далее пойдет имя и код переменной.
И в самом деле, после VAR мы написали имя переменной p1, а затем, через знак равно (=) код самой переменной: [Цена] — [Затраты].
Далее, как мы закончили описывать все наши переменные (а у нас она всего одна), мы прописали функцию (служебное слово) RETURN, которое сообщает движку DAX, что все коды переменных закончились и далее пойдет основной код формулы вычисляемого столбца.
В основном коде вычисляемого столбца, после RETURN мы столбец [Количество] помножили на переменную p1. А переменная p1 это не что иное, как [Цена] — [Затраты].
В итоге, в Power BI вычисляемый столбец на основе формулы с использованием переменных имеет ровно те же значения, что и без них:
Теперь, пойдем еще дальше и объявим вторую переменную:
Прибыль = VAR p1 = [Цена] - [Затраты] VAR p2 = [Количество] RETURN p1 * p2
В этой новой версии формулы мы создали вторую переменную с именем p2. Как и должно быть по правилу синтаксиса, перед созданием (объявлением) второй переменной мы прописали функцию (служебное слово) VAR. Далее имя переменной, знак равно и сам код переменной, который равен значениям столбца [Количество].
После того, как были объявлены все переменные (в нашем случае их две) мы прописали RETURN, которое, напоминаю, говорит о том, что объявление переменных закончено и далее пойдет основной код меры, вычисляемого столбца или таблицы. Как, собственно, и в нашей формуле — далее пошел основной код нашего вычисляемого столбца [Прибыль].
А основной код у нас стал совсем простым: переменная p1 помножается на переменную p2, то есть, результат разницы столбцов [Цена] и [Затраты] помножается на значения столбца [Количество].
Опять же, в Power BI эта версия формулы вычисляемого столбца [Прибыль] с двумя переменными имеет точно такой же результат, как и ранее:
Как мы видим из всего примера, которой разобрали выше, переменные действительно помогают разложить некую сложную формулу на простые части. В данном случае, у нас формула и так была простая, но в рамках обучения, мы ее сумели еще разложить на 2 простые части (2 переменные).
Напоминаю, что это не единственная польза переменных. Например, в сложном коде могут встречаться одни и те же части, повторяемые несколько раз. И использование переменных позволяет не только сократить длину кода, написав этот код один раз в переменной, и далее просто ссылаться на имя этой переменной, так и сократить время вычисления этой большой формулы. Так как повторяемый код прописанный переменной вычисляется только один раз, а далее, при вызове имени переменной из основного кода, просто уже будет возвращаться вычисленный ранее результат переменной.
На этом, с разбором переменных в DAX и служебных функций VAR и RETURN в Power BI, все.
Успехов Вам, друзья!
Подробное ВИДЕО «Делите большие формулы в Power BI на смысловые части при помощи переменных DAX»
Ссылки из видео:
1) [Регистрируйтесь в бесплатном экспресс-курсе] Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot: зарегистрироваться
2) [Скачивайте PDF] Справочник DAX функций для Power BI и Power Pivot на русском языке: скачать
Друзья, хотите изучить полный курс по языку DAX для Power BI и Power Pivot
со скидкой 50% вместо 10000 всего за 5000 р.?
акция действует до 29 ноября
Узнать все подробности об этом курсе, а также заказать его со скидкой 50% всего за 5000 руб. Вы можете на странице курса, кликнув по кнопке ниже (до 29 ноября):
Пожалуйста, оцените статью:
Успехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.
Понравился материал статьи?
Добавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D
Здравствуйте!
Спасибо за такой редкий и качественный контент для рунета. Действительно очень полезный ресурс!
Антон, здравствуйте!
Переменная создаёт таблицу без предустановленных фильтров?
К примеру у меня два вложенных фильтра по разным столбцам и переменная используется в обоих фильтрах — результат я получаю разные почему-то, если формула с и без переменных.
Спасибо.
Василий, здравствуйте.
Нужно смотреть сам код…