Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):
Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В данной статье мы обсудим DAX функции CALENDARAUTO и CALENDAR, создающие в Power BI и PowerPivot таблицы календарей из непрерывных дат.
Разберем каждую из них по отдельности.
Для Вашего удобства, рекомендую скачать «Справочник DAX функций для Power BI и Power Pivot» в PDF формате.
Если же в Ваших формулах имеются какие-то ошибки, проблемы, а результаты работы формул постоянно не те, что Вы ожидаете и Вам необходима помощь, то записывайтесь в бесплатный экспресс-курс «Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot».
Да, и еще один момент, в рамках распродажи до 29 ноября 2024 г. у Вас имеется возможность приобрести большой, пошаговый видеокурс «DAX — это просто» со скидкой 50% (вместо 10000, всего за 5000 руб.)
В этом видеокурсе язык DAX преподнесен как простой конструктор, состоящий из нескольких блоков, которые имеют свое определенное, конкретное предназначение. Сочетая различными способами эти блоки, Вы, при помощи конструктора формул DAX, с легкостью сможете решать любые (простые или сложные) аналитические задачи.
Итак, пользуйтесь этой возможностью, заказывайте курс «DAX — это просто» со скидкой 50% (до 29 ноября 2024 г.): узнать подробнее
DAX функция CALENDARAUTO в Power BI и Power Pivot
CALENDARAUTO () — автоматический календарь в DAX. Возвращает таблицу с одним столбцом [Date], содержащим непрерывные даты от начала и до конца года. Рассчитывается исходя из тех дат, которые находятся во всех таблицах модели данных.
То есть, CALENDARAUTO в модели данных ищет самую старую (минимальную) и самую новую (максимальную) даты. И на основе года из этих дат, строит полный календарь от 1 января того года, который указан в самой старой (минимальной) дате и до 31 декабря того года, который указан в самой новой (максимальной) дате из всех таблиц модели данных.
! — Если в модели данных нет значений даты, то функция CALENDARAUTO возвратит ошибку.
! — Будьте внимательны, CALENDARAUTO для расчетов берет любые даты, например, даты дней рождения. Поэтому, если в Вашей модели данных будет человек с днем рождения в 1925 году, то функция создаст календарь, начиная с 1925 года и далее до самой последней даты в модели данных.
Синтаксис:
CALENDARAUTO () CALENDARAUTO (Номер Месяца)
Где, Номер Месяца — это номер месяца в году.
Если в CALENDARAUTO параметров нет, то возвращается календарь, кратный целому году с 1 января по 31 декабря.
Если в параметрах прописан номер месяца, то возвращается календарь, кратный целому году (12 месяцев), где первый месяц выведенного года равен следующему месяцу, после номера месяца, который прописан в параметре функции.
Разберем работу DAX функции CALENDARAUTO на основе нескольких примеров формул.
В модели данных Power BI имеется всего одна таблица «Заявки», содержащая 2 столбца [Менеджер] и [Сумма Продажи]:
Во вкладке «Моделирование» в Power BI Desktop создадим вычисляемую таблицу «Календарь» на основе формулы с CALENDARAUTO:
Календарь = CALENDARAUTO ()
В данном случае, так как в модели данных значений дат нет вообще, то DAX функция CALENDARAUTO выдаст ошибку:
Давайте изменим исходную таблицу в модели данных и добавим туда столбец, содержащий даты обработок заявок:
В этот раз функция CALENDARAUTO отработала как нужно и возвратила календарь дат с 1 января 2017 по 31 декабря 2018 года, так как год у минимальной даты 2017, а год у максимальной даты — 2018:
Теперь, изменим формулу выше и добавим в CALENDARAUTO параметр — номер месяца 4:
Календарь = CALENDARAUTO (4)
Результат в Power BI будет следующим:
Так как в этой формуле в CALENDARAUTO был указан номер месяца 4, то функция, также вывела полных 2 года, только не с 1 января по 31 декабря, а в самом начале с пропуском 4 месяцев, то есть, период в 2 года здесь перечислен с 1 мая 2017 по 30 апреля 2018 года.
DAX функция CALENDAR в Power BI и Power Pivot
CALENDAR () — календарь, создаваемый вручную. Возвращает таблицу с одним столбцом [Date], содержащим непрерывные даты от стартовой до конечной дат, указанных в параметрах.
Синтаксис:
CALENDAR (Стартовая Дата; Конечная Дата)
Где, стартовые и конечные даты — это любые выражения, возвращающие значения в формате datetime (в том числе, ссылки на исходные столбцы с датами).
Пример формулы на основе DAX функции CALENDAR.
Календарь = CALENDAR ("10.10.2018"; "14.10.2018")
И результатом этой формулы с CALENDAR будет таблица небольшого календаря, состоящая из 5 дней:
На этом, с разбором функций создания календарей из непрерывных дат в Power BI и PowerPivot, все.
Друзья, хотите изучить полный курс по языку DAX для Power BI и Power Pivot
со скидкой 50% вместо 10000 всего за 5000 р.?
акция действует до 29 ноября
Узнать все подробности об этом курсе, а также заказать его со скидкой 50% всего за 5000 руб. Вы можете на странице курса, кликнув по кнопке ниже (до 29 ноября):
Пожалуйста, оцените статью:
Успехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.
Понравился материал статьи?
Добавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D
Открыл для себя очень полезный и информативный ресурс по Power BI
Очень удобная функция создания календаря.
В моей версии между параметрами должна быть «,» а не «;»
Еще удобный момент в том, что можно задать параметры даты начала и конца как минимум и максимум даты из нужной таблицы.
В моем примере это таблица КартыПроживания, где есть две колонки с датами — DateStart и DateFinish
Календарь = CALENDAR(MIN(‘КартыПроживания'[DateStart]), MAX(‘КартыПроживания'[DateFinish]))
Интересно, есть ли пример как сделать таблицу в которой будет «загруженность» номеров на основе таких данных (таблица — календарь, таблица — карты с датой начала и конца и занятым номером)