Расчет недельных продаж с помощью DAX в LuckyTemplates
В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.
Всякий раз, когда вы слышали объяснение того, как использовать переменные LuckyTemplates DAX, вы, возможно, слышали фразу «переменные — это константы». Это кажется простым, но в этих словах есть изрядное количество нюансов и сложностей. В этом блоге я расскажу вам, что означает эта фраза, и как она влияет на то, как рассчитываются ваши показатели. Понимание этих концепций необходимо для обеспечения того, чтобы ваши меры приводили к желаемым результатам. Вы можете посмотреть полное видео этого урока в нижней части этого блога.
Переменная в DAX действительно может быть любым допустимым выражением DAX. Это может быть значение, вычисление, мера или переменная, представляющая таблицу, другую переменную или некоторую комбинацию этих вещей.
Переменная состоит из двух частей. Есть объявление , в котором вы инициализируете переменную; вы даете ему имя, а затем значение. Другой — оператор RETURN , который затем вызывает хотя бы одну из объявленных вами переменных. Это не похоже на круглые скобки, где вам нужно иметь один оператор RETURN для каждой переменной, но вам нужно иметь по крайней мере один оператор RETURN, если вы объявили какие-либо переменные.
Суть здесь в том, что, как я уже говорил, переменные постоянны. Это означает, что после присвоения переменной значения это значение не может быть изменено до оператора RETURN .
Оглавление
Применение переменных LuckyTemplates DAX в показателях
Давайте рассмотрим простой пример, где у меня есть страны и общий объем продаж. Мера Total Sales — это самая основная наша мера, которая представляет собой Line Sales в таблице Sales.
Допустим, мы хотим получить общий объем продаж за 2020 год. В этом наборе данных у нас есть продажи за 2019, 2000 и 2021 годы. Чтобы получить продажи за 2020 год, мы должны применить очень простое условие фильтра, что . Итак, мы меняем контекст нашего фильтра. У нас есть показатель общего объема продаж, а затем наш год — 2020.
Если мы добавим этот показатель в таблицу, мы получим именно то, что ожидаем, а именно правильное число для 2020 года.
Теперь, если мы хотим применить к этому переменные, вот слегка переработанная версия предыдущей меры, где я создал переменную с именем TotSales и просто установил ее равной нашей мере Total Sales.
Если мы подумаем об этом с точки зрения алгебраической подстановки, если мы просто заменим то, что раньше было нашей мерой общего объема продаж, на значение TotSales, равное этому показателю общего объема продаж, вы подумаете, что это может быть то же самое и получить то же самое. результат. Но если мы посмотрим и добавим эту меру в нашу таблицу, мы увидим, что она не дает того же результата.
Объявляется переменная 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 в итераторах
Переменные действительно сияют, когда вы помещаете их в итераторы. Я собираюсь рассказать вам об этом деле, которое имеет предыдущее значение. Мы ищем дату, а затем предыдущее значение при соблюдении ряда условий.
Помните, что до того, как переменные появились в DAX, вам приходилось это делать с помощью функции . Но теперь переменные действительно так хорошо работают в этом контексте. С переменными настоятельно рекомендуется никогда больше не использовать эту функцию РАНЬШЕ.
Итак, давайте рассмотрим более сложный пример, где у нас есть переменные в части итератора, а не в части выражения. Ниже приведен случай из вопроса, который возник на , когда участник хотел просмотреть каждую дату в диапазоне, а затем указать первую предыдущую дату, которая не была выходным или праздничным днем.
Я хочу особо остановиться на вторнике, 15 октября, как на ярком примере. Желаемый результат состоял в том, чтобы посмотреть на эту дату. Понедельник был Днем Колумба, так что это был выходной, а следующие предыдущие дни были воскресенье и суббота. Итак, дата, которую мы хотели получить, была 11 октября, то есть пятница.
Если вы посмотрите на столбец Предыдущий день/Без выходных/Без праздников, вторник был 11-м. То же самое было верно для понедельника, воскресенья и субботы. Вот что мы хотим получить в результате.
Рядом с таблицей выше находится мера, которую мы использовали для этого сценария. Мы объявили переменную с выбранной датой ( VAR SelDate ), и это было просто даты. Он получит 15 октября в нашей переменной, а затем сохранит ее как константу до оператора RETURN.
Затем мы оцениваем DAX снаружи внутрь. Если мы посмотрим на условие фильтра, оно удаляет фильтры для дат, а затем устанавливает ряд дополнительных фильтров. Он берет эту постоянную выбранную дату, 15 октября, и говорит: дайте мне все даты до этого. И затем убедитесь, что ни одна из этих дат не является субботой, воскресеньем или праздником. Затем он берет тех дат, которые были отфильтрованы.
Вы можете видеть здесь, что выбор данных в качестве константы является своего рода ставкой в земле, на которой все другие даты оцениваются либо до, либо после.
У нас есть выбранная дата, а затем мы фильтруем все, что было до нее. Мы берем максимум этой отфильтрованной таблицы. Итак, что мы получаем, так это максимум 15-го числа, когда мы убираем все эти другие условия, это пятница 11-го. Затем, если мы перейдем к оператору RETURN, он начнется со следующего дня, 16-го. Он просто продолжает перебирать таблицу, пока не дойдет до конца данных.
Как вы можете видеть в этом случае, когда мы помещаем переменные в часть итератора, а не в часть выражения, все работает именно так, как мы планировали. Он использует тот факт, что переменные являются константами.
Использование переменных в LuckyTemplates — подробный пример
работы с обширными формулами DAX в LuckyTemplates — советы по форматированию, включающие
переменные DAX и комментарии для упрощения формул
Заключение
В этом блоге я показал вам, как применять переменные LuckyTemplates DAX в мере и как это работает, когда переменные помещаются в итераторную часть меры.
Я надеюсь, что эти примеры объяснят фразу «переменные постоянны» и дадут вам некоторое представление о том, почему ваши измерения работают, а иногда нет. Я надеюсь, что это дало вам некоторое общее понимание того, что означает это важное понятие.
Всего наилучшего!
В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.
Что такое self в Python: примеры из реального мира
Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.
В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.
В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.
В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.
Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.
Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.
В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.
Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.