Функция M для таблицы дат — как добавить параметр в редакторе запросов

Я собираюсь показать вам, как добавить параметр в функцию M в вашем запросе таблицы дат . Этот пример основан на вопросе, заданном на . Вы можете посмотреть полное видео этого урока в нижней части этого блога.

Вопрос был о том, как переключить нумерацию 1-го дня недели с 0 на 1 . Обратите внимание, что это не меняет фактическое начало рабочего дня. В этой таблице дат началом недели всегда будет понедельник. Это просто относится к понедельнику как к дню 1, а не к дню 0.

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

Оглавление

М-функция и расширенная таблица дат

Позвольте мне начать с Power Query . Я уже скопировал здесь функцию таблицы дат .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Я получил функцию M из категории M Code Showcase на форуме LuckyTemplates . Код находится в разделе .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Если я открою расширенный редактор , это код.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Там много М-кода, который может отвлекать.

Создание тестового запроса

Поскольку внутри функции М происходит слишком много всего, я начну с нового пустого запроса .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Я назову этот тестовый запрос .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Далее я собираюсь открыть Расширенный редактор .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

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

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Чтобы запустить функцию, я объявлю необязательный параметр .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

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

Функция M для таблицы дат — как добавить параметр в редакторе запросов

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

Следующим шагом является добавление предложения let и предложения in .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

В предложении let мне нужно имя переменной. Поэтому я назову эту переменную WDStart .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

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

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Что касается предложения in, я хочу, чтобы тот же шаг был пройден. Поэтому я просто добавлю туда WDStart , как мы назвали нашу переменную ранее в предложении let.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Как только я нажму «Готово», функция будет создана. Итак, я попытаюсь передать значение через эту функцию.

Я собираюсь попробовать ввести букву «а».

Функция M для таблицы дат — как добавить параметр в редакторе запросов

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

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Так что я собираюсь удалить это и просто оставить место пустым.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Как только я нажимаю Invoke, он возвращает значение 0.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

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

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Так что 0 правильно.

На этот раз я попытаюсь передать значение, изменив число в TestQuery. Действительно, он возвращает «1», когда я нажимаю Enter.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Теперь позвольте мне попытаться пройти 2020 год в TestQuery. Как только я нажимаю Enter, он также возвращает 2020.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Очевидно, я не хочу, чтобы это произошло. Поскольку мне нужно значение, представляющее начало недели, я хочу, чтобы отображалось либо 0, либо 1. Это означает, что мне нужно создать еще один тест, чтобы увидеть, является ли введенное число 0 или 1. Для этого я могу использовать функцию List.Contains .

Использование List.Contains

Я создал пустой запрос и ввел List.Contains без скобок.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Как только я нажимаю ввод, я вижу документацию по этой функции.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

List.Contains указывает, содержит ли список значение.

Поэтому в качестве первого параметра требуется список, а затем добавляется значение. Если это значение найдено внутри списка, оно возвращает true. В противном случае он вернет false.

Я снова открою расширенный редактор , чтобы внести необходимые изменения в свой запрос.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Вместо того, чтобы проверять, не равно ли значение null, я буду использовать List.Contains .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Теперь я дам список значений, которые будут применяться к этой функции.

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

Функция M для таблицы дат — как добавить параметр в редакторе запросов

В качестве второго параметра я буду использовать WDStartNum. Затем я добавлю закрывающую скобку.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

С учетом этого это означает, что 0 или 1 должны дать мне WDStartNumber. Если помещается что-либо, кроме 0 или 1, я должен получить результат 0.

Позвольте мне проверить это, вставив 2020 в TestQuery. Как и ожидалось, это возвращает «0» (ноль).

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Это потому, что значения 2020 нет в списке.

Добавление параметра в М-функцию

Теперь, когда я уверен, что код работает, я наконец-то могу поместить его в реальную таблицу дат и М-функцию. Я открою расширенный редактор и скопирую логику .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Затем я перейду к запросу таблицы дат.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Я открою исходную функцию M через расширенный редактор .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Затем я вставлю туда свой код. Давайте удостоверимся, что в конце строки есть запятая.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Далее я выделю и скопирую имя параметра .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Затем я добавлю этот параметр сюда .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Функция M для таблицы дат — как добавить параметр в редакторе запросов

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

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

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Затем я добавлю + WDStart .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Я нажму Готово , чтобы закрыть редактор. Затем я собираюсь вызвать запрос.

В качестве StartDate я укажу 1 января 2020 года, а в качестве EndDate я буду использовать 31 декабря 2020 года.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Я буду использовать «7» в качестве месяца начала финансового года, затем я поставлю «0» в качестве WDStartNum.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Я нажму на Invoke. Теперь у меня есть таблица дат.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Я переименую его, чтобы его можно было легко идентифицировать.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Сейчас проверю результаты.

Это моя колонка DayOfWeek .

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Это показывает, что понедельник вернулся как 0.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Возвращаясь к вопросу на форуме, мне нужно изменить число начала недели на 1 вместо 0. Поэтому я просто изменю это в мере.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Когда я нажимаю ввод, понедельник будет днем ​​1 вместо дня 0.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Глядя на диапазон чисел, теперь он работает от 1 до 7 вместо 0 до 6.

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Что произойдет, если я передам нулевое значение?

Функция M для таблицы дат — как добавить параметр в редакторе запросов

Затем DayOfWeek для понедельника просто возвращается к 0.

Функция M для таблицы дат — как добавить параметр в редакторе запросов


Использование функции M для создания расширенной таблицы дат LuckyTemplates
Руководство для начинающих по коду M в LuckyTemplates
Настройка динамической даты начала и окончания для таблиц дат Power Query

Заключение

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

Опять же, вы всегда можете просмотреть курс Advanced Data Transformations & Modeling в Online, если у вас нет опыта работы с M-кодами.

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

Мелисса

***** Изучаете LuckyTemplates? *****






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 для своих бизнес-отчетов.