Переменные LuckyTemplates Dax постоянны: что это значит?

Всякий раз, когда вы слышали объяснение того, как использовать переменные LuckyTemplates DAX, вы, возможно, слышали фразу «переменные — это константы». Это кажется простым, но в этих словах есть изрядное количество нюансов и сложностей. В этом блоге я расскажу вам, что означает эта фраза, и как она влияет на то, как рассчитываются ваши показатели. Понимание этих концепций необходимо для обеспечения того, чтобы ваши меры приводили к желаемым результатам. Вы можете посмотреть полное видео этого урока в нижней части этого блога.

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

Переменная состоит из двух частей. Есть объявление , в котором вы инициализируете переменную; вы даете ему имя, а затем значение. Другой — оператор RETURN , который затем вызывает хотя бы одну из объявленных вами переменных. Это не похоже на круглые скобки, где вам нужно иметь один оператор RETURN для каждой переменной, но вам нужно иметь по крайней мере один оператор RETURN, если вы объявили какие-либо переменные.

Суть здесь в том, что, как я уже говорил, переменные постоянны. Это означает, что после присвоения переменной значения это значение не может быть изменено до оператора RETURN .

Оглавление

Применение переменных LuckyTemplates DAX в показателях

Давайте рассмотрим простой пример, где у меня есть страны и общий объем продаж. Мера Total Sales — это самая основная наша мера, которая представляет собой Line Sales в таблице Sales.

Переменные LuckyTemplates Dax постоянны: что это значит?

Допустим, мы хотим получить общий объем продаж за 2020 год. В этом наборе данных у нас есть продажи за 2019, 2000 и 2021 годы. Чтобы получить продажи за 2020 год, мы должны применить очень простое условие фильтра, что . Итак, мы меняем контекст нашего фильтра. У нас есть показатель общего объема продаж, а затем наш год — 2020.

Переменные LuckyTemplates Dax постоянны: что это значит?

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

Переменные LuckyTemplates Dax постоянны: что это значит?

Теперь, если мы хотим применить к этому переменные, вот слегка переработанная версия предыдущей меры, где я создал переменную с именем TotSales и просто установил ее равной нашей мере Total Sales.

Переменные LuckyTemplates Dax постоянны: что это значит?

Если мы подумаем об этом с точки зрения алгебраической подстановки, если мы просто заменим то, что раньше было нашей мерой общего объема продаж, на значение TotSales, равное этому показателю общего объема продаж, вы подумаете, что это может быть то же самое и получить то же самое. результат. Но если мы посмотрим и добавим эту меру в нашу таблицу, мы увидим, что она не дает того же результата.

Переменные LuckyTemplates Dax постоянны: что это значит?

Объявляется переменная TotSales, которая получает значение общего объема продаж. Допустим, мы находимся в строке Молдова, и эта переменная получает значение 2,35 миллиона. Теперь помните, что значение не может измениться до тех пор, пока не будет вызван оператор RETURN. Итак, когда мы спускаемся вниз, чтобы вычислить нашу меру в переменной RESULT , у нас есть TotSales, который является константой на уровне 2,35 миллиона.

А затем мы применяем к нему наш контекст фильтра, Dates[Year] равняется 2020 , но это не имеет значения, потому что эта константа не может измениться. Таким образом, мы могли бы сказать, что Dates[Year] равняется 2019, 2021 и так далее, это все равно будет те же 2,35 миллиона, потому что TotSales теперь заблокирован как константа до RETURN .

И когда он возвращается, мы переходим к следующей строке, и переменная получает значение Нидерланды (4,4 миллиона). Процесс повторяется, фиксируя его как константу до оператора RETURN. Мы получаем именно то, что имеем в показателе «Общий объем продаж», а не в показателе, фильтрующем до 2020 года.

Итак, вы можете подумать, что на самом деле это не кажется очень полезным. В данном контексте это не так. На самом деле это распространенная ошибка, когда люди сначала начинают использовать переменные . Они помещают переменную в первую часть выражения оператора CALCULATE. Как правило, это не даст желаемого результата, потому что оно фиксирует это как постоянное значение.

Использование переменных LuckyTemplates DAX в итераторах

Переменные действительно сияют, когда вы помещаете их в итераторы. Я собираюсь рассказать вам об этом деле, которое имеет предыдущее значение. Мы ищем дату, а затем предыдущее значение при соблюдении ряда условий.

Переменные LuckyTemplates Dax постоянны: что это значит?

Помните, что до того, как переменные появились в DAX, вам приходилось это делать с помощью функции . Но теперь переменные действительно так хорошо работают в этом контексте. С переменными настоятельно рекомендуется никогда больше не использовать эту функцию РАНЬШЕ.

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

Переменные LuckyTemplates Dax постоянны: что это значит?

Я хочу особо остановиться на вторнике, 15 октября, как на ярком примере. Желаемый результат состоял в том, чтобы посмотреть на эту дату. Понедельник был Днем Колумба, так что это был выходной, а следующие предыдущие дни были воскресенье и суббота. Итак, дата, которую мы хотели получить, была 11 октября, то есть пятница.

Если вы посмотрите на столбец Предыдущий день/Без выходных/Без праздников, вторник был 11-м. То же самое было верно для понедельника, воскресенья и субботы. Вот что мы хотим получить в результате.

Рядом с таблицей выше находится мера, которую мы использовали для этого сценария. Мы объявили переменную с выбранной датой ( VAR SelDate ), и это было просто даты. Он получит 15 октября в нашей переменной, а затем сохранит ее как константу до оператора RETURN.

Затем мы оцениваем DAX снаружи внутрь. Если мы посмотрим на условие фильтра, оно удаляет фильтры для дат, а затем устанавливает ряд дополнительных фильтров. Он берет эту постоянную выбранную дату, 15 октября, и говорит: дайте мне все даты до этого. И затем убедитесь, что ни одна из этих дат не является субботой, воскресеньем или праздником. Затем он берет тех дат, которые были отфильтрованы.

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

У нас есть выбранная дата, а затем мы фильтруем все, что было до нее. Мы берем максимум этой отфильтрованной таблицы. Итак, что мы получаем, так это максимум 15-го числа, когда мы убираем все эти другие условия, это пятница 11-го. Затем, если мы перейдем к оператору RETURN, он начнется со следующего дня, 16-го. Он просто продолжает перебирать таблицу, пока не дойдет до конца данных.

Как вы можете видеть в этом случае, когда мы помещаем переменные в часть итератора, а не в часть выражения, все работает именно так, как мы планировали. Он использует тот факт, что переменные являются константами.


Использование переменных в LuckyTemplates — подробный пример
работы с обширными формулами DAX в LuckyTemplates — советы по форматированию, включающие
переменные DAX и комментарии для упрощения формул

Заключение

В этом блоге я показал вам, как применять переменные LuckyTemplates DAX в мере и как это работает, когда переменные помещаются в итераторную часть меры.

Я надеюсь, что эти примеры объяснят фразу «переменные постоянны» и дадут вам некоторое представление о том, почему ваши измерения работают, а иногда нет. Я надеюсь, что это дало вам некоторое общее понимание того, что означает это важное понятие.

Всего наилучшего!

Leave a Comment

Расчет недельных продаж с помощью DAX в LuckyTemplates

Расчет недельных продаж с помощью DAX в LuckyTemplates

В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Что такое self в Python: примеры из реального мира

Как сохранить и загрузить файл RDS в R

Как сохранить и загрузить файл RDS в R

Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

Новый взгляд на первые N рабочих дней — решение для языка кодирования DAX

В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

Продемонстрируйте идеи с помощью метода многопоточных динамических визуализаций в LuckyTemplates

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

Введение в фильтрацию контекста в LuckyTemplates

Введение в фильтрацию контекста в LuckyTemplates

В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Лучшие советы по использованию приложений в онлайн-службе LuckyTemplates

Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Анализ изменений маржи прибыли с течением времени — аналитика с LuckyTemplates и DAX

Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.

Идеи материализации кэшей данных в DAX Studio

Идеи материализации кэшей данных в DAX Studio

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

Бизнес-отчетность с использованием LuckyTemplates

Бизнес-отчетность с использованием LuckyTemplates

Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.