Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):
Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В данной статье мы рассмотрим 3 функции, которые относятся к категории функций дат и времени в DAX — YEARFRAC, WEEKDAY и WEEKNUM в 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 функция YEARFRAC в Power BI и PowerPivot
YEARFRAC () — вычисляет долю указанного периода дат в целом году.
Синтаксис:
YEARFRAC (Стартовая Дата; Конечная Дата; Базис)
Где, «Стартовая Дата» и «Конечная Дата» — даты в формате datetime, а «Базис» — способ вычисления дня (необязательный параметр).
Базис:
- параметр = 0 — американский стандарт (NASD), 30 дней / 60 дней
- параметр = 1 — фактический период / фактический период
- параметр = 2 — фактический период / 360 дней
- параметр = 3 — фактический период / 365 дней
- параметр = 4 — европейский стандарт, 30 дней / 360 дней
Рассмотрим пример формулы на основе DAX функции YEARFRAC.
Доля Периода В Году = YEARFRAC ( DATE (2018; 10; 01); DATE (2018; 11; 01); 4 )
В данной формуле начальную и конечную даты мы задали при помощи DAX функции DATE. Период между этими двумя датами составляет ровно 1 месяц. В качестве базиса (способа вычисления дня) я взял европейский стандарт (4).
Как результат, формула на основе YEARFRAC вывела долю этого периода относительно целого года = 8.33 %:
У созданной меры в Power BI Desktop нужно поменять формат на % и вывести два знака после запятой.
DAX функция WEEKDAY в Power BI и PowerPivot
WEEKDAY () — возвращает день недели в формате чисел 1-7 (0-6). По умолчанию неделя начинается с воскресенья (1) и заканчивается субботой (7).
Синтаксис:
WEEKDAY (Дата; Начало Недели)
Где:
- Дата — дата в формате datetime. Дату необходимо вводить формулой DATE() или другим выражением, возвращающим формат datetime
- Начало Недели (по умолчанию — 1):
1 — начало недели в воскресенье (1) и конец в субботу (7) ;
2 — начало недели в понедельник (1) и конец в воскресенье (7);
3 — начало недели в понедельник (0) и конец в воскресенье (6)
Примеры формул на основе DAX функции WEEKDAY.
Пример 1: WEEKDAY (DATE (2018; 10; 13)) - начало недели в воскресенье (1) Результат 1: 7 (суббота) Пример 2: WEEKDAY (DATE (2018; 10; 13); 1) - начало недели в воскресенье (1) Результат 2: 7 (суббота) Пример 3: WEEKDAY (DATE (2018; 10; 13); 2) - начало недели в понедельник (1) Результат 3: 6 (суббота) Пример 4: WEEKDAY (DATE (2018; 10; 13); 3) - начало недели в понедельник (0) Результат 4: 5 (суббота)
В качестве параметров даты в WEEKDAY можно вставлять столбец со значениями даты. Давайте рассмотрим такой пример формулы.
В Power BI имеется исходная таблица с датами, где 1 января 2018 — понедельник:
Добавим в эту таблицу 2 вычисляемых столбца на основе следующих формул с участием DAX функции WEEKDAY:
Номер Дня Недели 1 = WEEKDAY ([Дата]; 1) Номер Дня Недели 2 = WEEKDAY ([Дата]; 2)
То есть, в первой формуле начало недели начинается в воскресенье (1), а во второй формуле — в понедельник (1).
В итоге, результат будет таким:
В столбце на основе первой формулы 1 января (понедельник) равен числу 2, так как начало недели в воскресенье (1). А в столбце на основе второй формулы 1 января (понедельник) равен числу 1, так как начало недели, также, в понедельник (1).
DAX функция WEEKNUM в Power BI и PowerPivot
WEEKNUM () — возвращает номер недели года (относительно начала года).
Синтаксис:
WEEKNUM (Дата; Начало Недели)
Где:
- Дата — дата в формате datetime. Дату необходимо вводить формулой DATE() или другим выражением, возвращающим формат datetime
- Начало Недели:
1 — неделя начинается с воскресенья (по умолчанию);
2 — неделя начинается с понедельника
Примеры формул на основе DAX функции WEEKNUM.
Пример 1: WEEKNUM (DATE (2018; 10; 13)) Результат 1: 41 Пример 2: WEEKNUM (DATE (2018; 10; 13); 1) Результат 2: 41 Пример 3: WEEKNUM (DATE (2018; 10; 13); 2) Результат 3: 41
Как и в функции WEEKDAY, в качестве параметров даты в WEEKNUM, также можно вставить столбец со значениями даты. Давайте рассмотрим такой пример формулы.
В Power BI Desktop имеется исходная таблица с датами, где 1 апреля 2018 — это воскресенье:
Добавим в эту таблицу 2 вычисляемых столбца на основе следующих формул с участием DAX функции WEEKNUM:
Неделя Года 1 = WEEKNUM ([Дата]; 1) Неделя Года 2 = WEEKNUM ([Дата]; 2)
Исходя из синтаксиса, в первой формуле начало недели начинается в воскресенье, а во второй формуле — в понедельник.
В итоге, результат будет таким:
Так как в столбце, рассчитанном на основе первой формулы, начало недели в воскресенье, а в таблице у нас представлены 3 дня — воскресенье (1 апреля), понедельник (2 апреля), вторник (3 апреля), то у этих всех 3-х дней один номер недели = 14.
В столбце, рассчитанном на основе второй формулы, начало недели в понедельник. И именно поэтому, 1 апреля (воскресенье) имеет номер недели 13, а у 2 и 3 апреля, номер недели уже 14.
На этом, с разбором функций YEARFRAC, WEEKDAY и WEEKNUM в Power BI и PowerPivot, в данной статье все.
Друзья, хотите изучить полный курс по языку DAX для Power BI и Power Pivot
со скидкой 50% вместо 10000 всего за 5000 р.?
акция действует до 29 ноября
Узнать все подробности об этом курсе, а также заказать его со скидкой 50% всего за 5000 руб. Вы можете на странице курса, кликнув по кнопке ниже (до 29 ноября):
Пожалуйста, оцените статью:
Успехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
Если у Вас появились какие-то вопросы по материалу данной статьи, задавайте их в комментариях ниже. Я Вам обязательно отвечу. Да и вообще, просто оставляйте там Вашу обратную связь, я буду очень рад.
Также, делитесь данной статьей со своими знакомыми в социальных сетях, возможно, этот материал кому-то будет очень полезен.
Понравился материал статьи?
Добавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D
Антон, добрый день.
Спасибо за сайт, регулярно его открываю.
По поводу WEEKNUM. Я тоже всегда думал, что второй параметр — это с какого дня считать (1 по умолчанию это воскресенье, 2 — понедельник).
И по этому поводу я сломал голову как правильно считать номера недель согласно ISO 8601.
Пример:
WeekNum1 = WEEKNUM(DATE(2020, 12, 31), 2)
возвращает 53
WeekNum2 = WEEKNUM(DATE(2021, 1, 1), 2)
возвращает 1
Одна и та же неделя имеет два разных номер в зависимости от года! Это ад для людей строящих аналитику понедельно и использующих ISO 8601.
Однако, я решил окончательно разобраться в вопросе и обнаружил сейчас вот что:
https://docs.microsoft.com/en-us/dax/weeknum-function-dax
Я не читаю дайджесты об обновлениях, но походу они с очередным апдейтом доработали этот параметр.
Теперь если туда передать 21 — всё работает согласно ISO 8601
WeekNum3 = WEEKNUM(DATE(2021, 1, 1), 21) возвращает 53, и наконец
WeekNum3 = WEEKNUM(DATE(2021, 1, 4), 21) возвращает 1
Было бы неплохо обновить и твою статью.
Ещё раз спасибо за сайт.