Расчет недельных продаж с помощью DAX в LuckyTemplates
В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.
Я собираюсь показать вам, как превратить М-код для таблицы дат в табличный запрос. Вы можете посмотреть полное видео этого урока в нижней части этого блога.
Я бы рассматривал уровень сложности этого урока как средний, потому что, если у вас есть опыт работы с M-кодами, вам будет легко следовать ему. Если у вас нет соответствующего опыта, я предлагаю вам сначала изучить М-коды, чтобы вам было легче понять концепции, представленные здесь.
Оглавление
Вызванный запрос функции и запрос таблицы дат
Это запрос таблицы дат и запрос вызываемой функции.
Если вы посмотрите на панель Applied Steps справа, там будет только один шаг. Он показывает источник для этого запроса.
Итак, если вы хотите разработать M-код для этой таблицы дат, вам придется переключаться между функцией и запросом таблицы, чтобы увидеть любые изменения, которые вы применяете.
Это означает, что сложнее бороться с ошибками, вызванными любыми вашими изменениями. Это приведет к ошибке в самом запросе таблицы, тогда вам придется искать строки кода, чтобы исправить ошибку.
На следующей странице показан запрос даты, возвращающий таблицу вместо функции.
Глядя на Прикладные шаги справа, вы увидите, что на этот раз перечислено несколько шагов.
Это означает, что по мере разработки М-кода таблицы дат вы сразу же увидите результаты своих изменений в запросе к этой таблице.
Что еще более важно, всякий раз, когда ваше изменение приводит к ошибке, вы можете легко определить шаг, вызвавший ошибку. Это облегчает решение проблемы.
Применение М-кода
Код M таблицы дат можно найти на форуме LuckyTemplates. Он находится в разделе Расширенная таблица данных Power Query M Function в M Code Showcase.
Код M находится наверху. Я выделю весь код и скопирую его.
Затем я создам новый пустой запрос.
Я открою расширенный редактор и вставлю туда этот код.
Поскольку я вижу, что ошибок не обнаружено, я нажимаю «Готово».
Позвольте мне переименовать это и назвать это Dates.
Этот запрос возвращает функцию, но мне нужна таблица.
Чтобы внести необходимые изменения, я вернусь в расширенный редактор.
Преобразование функции в таблицу
Чтобы это возвращало таблицу, а не функцию, мне нужно было бы внести некоторые изменения в код M в расширенном редакторе.
Глядя на код M, я легко могу увидеть по крайней мере две среды в зависимости от количества операторов let.
Каждое выражение let имеет собственное предложение in, которое можно найти внизу.
Вы можете подумать, что было бы проще просто удалить это последнее предложение in, чтобы превратить его в таблицу.
Но я не собираюсь этого делать. Вместо этого я собираюсь прокомментировать это, добавив две косые черты перед последним предложением in.
Я также собираюсь сделать это для первого оператора let. Это делает его неактивным.
Под внутренним оператором let я собираюсь создать раздел для объявления своих параметров, потому что мне все еще нужно передать эти параметры в этот код.
Я собираюсь отметить, где эти переменные должны быть объявлены.
Теперь я скопирую первую переменную из внешнего оператора let и вставлю ее в пустое место.
В моем наборе данных исторические данные не уходят дальше 2017 года. Поэтому, чтобы передать значение переменной StartDate, я могу использовать встроенную дату. Я поставлю 1 января, тогда я закончу строку запятой.
Затем я скопирую и вставлю следующую переменную EndDate.
Я знаю, что EndDate потребует прогнозирования. Вот почему я хочу, чтобы EndDate всегда был концом следующего года.
У меня уже есть переменная внутри моего M-кода для CurrentDate, поэтому я буду ссылаться на нее.
Опять же, я буду использовать внутреннюю дату. Я извлеку Date.Year и использую CurrentDate как значение года +1. Я также хочу, чтобы дата была 31 декабря.
Опять же, я заканчиваю эту строку запятой.
Следующая переменная — необязательный параметр FYStartMonth.
Так что я просто скопирую это имя и вставлю.
Обратите внимание, что под FYStartMonth под переменной, которую я только что вставил, появилось красное подчеркивание.
Это потому, что их имена совпадают. Это не было проблемой, когда они находились в разных средах. Но имена переменных в одной среде должны быть уникальными. Это означает, что мне нужно изменить имя новой переменной, которую я только что вставил.
Вместо того, чтобы называть его FYStartMonth, я назову его FYStartMonthNum.
Я не собираюсь присваивать значение этой переменной, поэтому я просто поставлю ноль.
Поскольку я изменил имя переменной, мне также нужно изменить имя везде, где этот параметр упоминался.
Возвращаясь к переменной, я закрою эту строку, добавив запятую в конце.
Следующий параметр — необязательный список праздников. Я также скопирую и вставлю это, а также объявлю его нулевым.
То же самое касается WDStartNum. Я скопирую и вставлю его, а затем объявлю его нулевым.
Чтобы отметить, где начинается код таблицы дат, я добавлю сюда еще один комментарий.
Как только я нажму «Готово», вы увидите, что теперь запрос возвращает правильный тип.
Теперь у меня есть таблица вместо функции.
На панели «Примененные шаги» я также вижу все шаги, из которых состоит запрос.
Если я хочу внести какие-либо изменения в таблицу дат, достаточно просто использовать ленту для изменения или добавления шагов. Для каждого изменения, которое я делаю, я также сразу же увижу результаты в запросе.
Превращение табличного запроса обратно в функцию
Допустим, я хочу снова превратить запрос таблицы дат в функцию. Это просто вопрос настройки нескольких вещей в коде M, чтобы отменить изменения, которые я сделал ранее.
Я вернусь в расширенный редактор и удалю косые черты перед внешним оператором let.
Далее я уберу косые черты перед операторами in.
Затем я закомментирую блок переменных, который добавил ранее. Поэтому я добавлю косую черту и звездочку здесь.
Затем звездочка и косая черта после блока переменных.
Помните, как я изменил эту строку кода ранее из-за FYStartMonthNum?
Я собираюсь скопировать эту строку кода. Затем я добавлю новую строку и вставлю ее.
Я вырежу первую (там, где я ранее внес изменения в имя переменной).
Затем на втором я найду отредактированные имена переменных.
И я превращу их обратно в FYStartMonth.
Как только я нажму «Готово», запрос таблицы снова превратится в функцию.
Создание динамической таблицы запроса даты в LuckyTemplates: руководство по редактору запросов
Создание таблицы дат в LuckyTemplates
Настройка динамической даты начала и окончания для таблиц дат Power Query
Заключение
Еще раз я показал вам, насколько удобны М-коды, особенно в таких случаях, как этот, когда мы преобразовывали функцию в табличный запрос и наоборот. Пока у вас есть доступ к M-коду, который есть на форуме LuckyTemplates, вы можете использовать его в подобных сценариях в будущем.
Вы также можете просмотреть другие коды M, которые вы можете использовать в других ситуациях, в разделе M Code Showcase на . Это совместное сообщество, поэтому вы можете прочитать комментарии для других идей от наших экспертов и участников.
Всего наилучшего,
Мелисса
***** Изучаете LuckyTemplates? *****
В этом руководстве показано, как в конечном итоге можно рассчитать разницу между еженедельными результатами продаж с помощью DAX в LuckyTemplates.
Что такое self в Python: примеры из реального мира
Вы узнаете, как сохранять и загружать объекты из файла .rds в R. В этом блоге также рассказывается, как импортировать объекты из R в LuckyTemplates.
В этом руководстве по языку программирования DAX вы узнаете, как использовать функцию GENERATE и как динамически изменять название меры.
В этом учебном пособии рассказывается, как использовать технику многопоточных динамических визуализаций для создания аналитических сведений из динамических визуализаций данных в ваших отчетах.
В этой статье я пройдусь по контексту фильтра. Контекст фильтра — одна из основных тем, с которой должен ознакомиться любой пользователь LuckyTemplates.
Я хочу показать, как онлайн-служба LuckyTemplates Apps может помочь в управлении различными отчетами и аналитическими данными, созданными из различных источников.
Узнайте, как рассчитать изменения вашей прибыли, используя такие методы, как разветвление показателей и объединение формул DAX в LuckyTemplates.
В этом руководстве будут обсуждаться идеи материализации кэшей данных и то, как они влияют на производительность DAX при предоставлении результатов.
Если вы все еще используете Excel до сих пор, то сейчас самое подходящее время, чтобы начать использовать LuckyTemplates для своих бизнес-отчетов.