Расчет недельных продаж с помощью DAX в LuckyTemplates
В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.
Я собираюсь показать вам, как использовать функцию смещения в LuckyTemplates . Это один из самых динамичных инструментов, который вы можете использовать, особенно в своих таблицах дат.
Как только вы научитесь применять его в своих проектах аналитики времени, вы сможете получить более глубокие знания, которые вы не получите, используя любой другой подход. Вы можете посмотреть полное видео этого урока в нижней части этого блога.
Оглавление
Понимание механики функции смещения
Я начну с того, что покажу вам механику функции смещения.
Смещения показывают разницу между сегодняшней датой и другими датами в ваших данных.
Как вы можете видеть в моей таблице дат ниже, я сосредоточился на кварталах и годах , чтобы видеть фактическое движение данных.
Фиолетовая строка показывает текущий период . Обратите внимание, что текущий период всегда имеет значение смещения 0 .
Над ним желтым цветом показаны все данные, поступающие из прошлого . Вы увидите, что цифры здесь либо равны 0, либо меньше 0, представленные отрицательными данными .
Это означает, что для данных из будущего они будут показывать положительные значения . В зависимости от детализации столбца он также может содержать 0 .
Так что же делает смещения эффективными?
Смещения могут быть порядковыми номерами, представляющими разницу между различными данными в таблице . Но что делает смещения замечательными, так это то, что они не имеют границ .
Например, кварталы будут проходить от 1 до 4, что соответствует 4 кварталам в году. Месяцы идут от 1 до 12, а недели могут идти от 1 до 52 или 53, в зависимости от того, какой сейчас год. Но как только я достигну последнего числа, мне придется начать сначала.
Это не относится к смещениям. Когда дело доходит до смещений, они всегда будут показывать положение относительно текущей даты и другой даты, на которую ссылаются .
Таким образом, каждый раз, когда таблица дат обновляется, логика, обеспечивающая работу смещений, также обновляется. Это означает, что обновленное значение также будет отображаться в таблице дат.
Пример столбца недельного смещения
Чтобы дать вам более четкое представление о том, как работает функция смещения, я приведу пример ее применения.
В моем примере данных сегодняшняя дата отображается как 24 апреля 2020 года .
Опять же, принципы смещения гласят, что текущий период представлен 0, будущие данные представлены положительными значениями, а прошлые периоды представлены отрицательными числами .
У меня также есть слайсер на моей странице, который содержит значение WeekOffset. В настоящее время он показывает все значения от -53 до 0, где 0 представляет текущую неделю .
24 апреля (то есть сегодня) приходится на 17 неделю .
Эта расширенная таблица дат охватывает только номера недель ISO . Это означает, что недели начинаются с понедельника . Это также означает, что в неделе всегда будет 7 дней .
Но есть много пользовательских недельных требований, которые не следуют той же логике. Вы можете узнать больше об этих случаях в различных темах на форуме LuckyTemplates.
Кроме того, вы можете рассмотреть возможность использования месяца и года вместо недели и года, если это лучше подходит для вашей ситуации.
Возвращаясь к примерам данных, вы могли заметить, что значения WeekOffset находятся в идеальном диапазоне порядковых номеров .
Это потому, что они имеют одинаковую степень детализации во всем . Нет повторяющихся значений и пропущенных значений.
Конечно, мера Total Sales , используемая здесь, выполняется обычным способом, с обычным над Sales для количества , умноженного на цену . Затем все это агрегируется для получения недельного значения.
Но что, если я хочу увидеть только последние 4 недели продаж?
Мне просто нужно изменить свой слайсер в диапазоне от -3 до 0 .
Моя таблица показывает только продажи за последние четыре недели.
Поэтому, когда я перемещаюсь во времени, моя таблица дат обновляется. То же самое происходит, если новые результаты продаж загружаются в таблицу фактов.
Использование смещений в DAX
На этот раз я покажу вам, как функцию смещения можно использовать в показателях DAX.
У меня есть таблица с неделей и годом и общим объемом продаж .
Итак, если я хочу рассчитать продажи за предыдущую неделю без смещений, мне сначала нужно будет извлечь, что такое номер CurrWeek , а затем проверить, что такое значение CurrYear .
Если мне нужно пропустить границу года, мне придется вычислить, какой номер недели для этого прошлого года.
Оттуда я бы использовал SUMX в качестве итерационной функции в таблице дат. Я также должен был бы проверить, является ли CurrWeek неделей номер 1 .
Если это не неделя 1, мне просто нужно вычесть 1 из значения CurrWeek для CurrYear . После этого можно окончательно подвести общий объем продаж .
Глядя на таблицу ниже, вы можете видеть, что все значения идеально агрегированы. Значения, отображаемые в разделе «Общий объем продаж» , просто переносятся на следующую неделю.
Даже если я преодолею границу года с 2017 по 2018 год, шаблон не сломается. Общий объем продаж за последнюю неделю 2017 года по-прежнему идеально рассчитан для недели номер 1 2018 года.
На этот раз я собираюсь сделать тот же расчет, но с применением смещения таблицы дат.
Вот как выглядит эта мера, когда я использую смещения.
Итак, чтобы получить значение PrevWeek , мне просто нужно сослаться на выбранный WeekOffset и вычесть 1.
Затем я буду использовать функцию для общего объема продаж за даты , где WeekOffset равен значению PrevWeek .
Глядя на результаты, они кажутся идеальными даже при переходе с 2017 на 2018 год.
Проблема, однако, в Total . Очевидно, это не правильное значение.
Вот как я собираюсь это исправить.
Во-первых, обратите внимание, что столбец «Неделя и год» расположен в порядке возрастания .
Я собираюсь изменить это и вместо этого отсортировать столбец в порядке убывания , с 2020 наверху.
Поск��льку из Week & Year нет контекста , он не идентифицирует значение смещения текущей недели, но все равно вычитает 1 . Но что я могу сделать, так это применить кумулятивный итог, чтобы скорректировать итог .
Вот как будет выглядеть мера:
Начало такта не меняется. Это точно так же, как предыдущая мера, которую я применил.
Но поскольку мне нужно использовать шаблон, аналогичный кумулятивным итогам, я должен использовать функцию РАСЧЕТ на первой неделе по ВСЕ датам с вычитанием из нее 1.
Я также должен определить значение MAX WeekOffset из дат ALLSELECTED и вычесть из него единицу.
Затем я снова использую функцию РАСЧЕТ для общего объема продаж . Я буду использовать функцию , чтобы включить ВСЕ даты . Значение WeekOffset должно быть больше или равно значению FirstWeek и меньше или равно значению LastWeek .
Опять же, это соответствует основному шаблону для кумулятивных итогов.
Затем я могу перейти к проверке общей суммы, используя шаблоны .
Итак, ЕСЛИ неделя и год ISINSCOPE , я ожидаю, что результаты покажут LWSales . Но если это не так, я ожидаю появления LWTotal .
Итак, если я вернусь к своей таблице, теперь она покажет правильную сумму.
Смещения для определенных недель
Позвольте мне вернуться к примеру, который я использовал ранее, где я отфильтровал данные, чтобы показать только последние четыре недели.
Если я перейду к измерению, я могу получить те же результаты, используя смещения. Вот как это будет выглядеть.
Мне просто нужно было определить текущее значение WeekOffset для контекста, поступающего из строк.
Получив это, я могу применить функцию РАСЧЕТ к общему объему продаж ВСЕХ дат , где WeekOffset больше или равен ThisWeek минус 3 или меньше или равен значению ThisWeek .
Это возвращает точно такое же значение, как пример, который я пытаюсь воспроизвести.
Совокупные итоги на основе среднемесячных результатов в LuckyTemplates
Нормализация данных в LuckyTemplates для результатов за разные дни
Создание комплексной таблицы дат в LuckyTemplates очень быстро
Заключение
Примеры, которые я показал вам выше, доказывают, насколько динамическими являются смещения. Вы можете использовать их в фильтрах, срезах и даже в вычислениях DAX.
Смещения также можно использовать в расширенных таблицах дат для недель, месяцев, кварталов, лет и финансовых лет. Они дают большую гибкость и могут легко помочь вам получить желаемые результаты.
Просто продолжайте экспериментировать со смещениями и посмотрите, какие еще способы их применения вы можете использовать. Вы также можете посетить чтобы узнать о других случаях, когда функция смещения оказалась полезной.
Всего наилучшего,
Мелисса
В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.
Что такое self в Python: примеры из реального мира
Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.
В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.
В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.
В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.
Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.
Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.
В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.
Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.