Россия Нет

DAX функции YEARFRAC, WEEKDAY и WEEKNUM в Power BI и PowerPivot

до конца акции осталось:


1 модуль видеокурса DAX - это просто

 Содержание статьи: (кликните, чтобы перейти к соответствующей части статьи):


Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В данной статье мы рассмотрим 3 функции, которые относятся к категории функций дат и времени в DAX — YEARFRAC, WEEKDAY и WEEKNUM в Power BI и PowerPivot.

Рассмотрим каждую функцию в отдельности.

Для Вашего удобства, рекомендую скачать «Справочник DAX функций для Power BI и Power Pivot» в PDF формате.

Если же в Ваших формулах имеются какие-то ошибки, проблемы, а результаты работы формул постоянно не те, что Вы ожидаете и Вам необходима помощь, то записывайтесь в бесплатный экспресс-курс «Быстрый старт в языке функций и формул DAX для Power BI и Power Pivot».

 

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, в данной статье все.

Пожалуйста, оцените статью:

  1. 5
  2. 4
  3. 3
  4. 2
  5. 1
(18 голосов, в среднем: 4.7 из 5 баллов)
[Экспресс-видеокурс] Быстрый старт в языке DAX

 
 
Антон БудуевУспехов Вам, друзья!
С уважением, Будуев Антон.
Проект «BI — это просто»
 
 
 
 

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

 
Понравился материал статьи?
Избранные закладкиДобавьте эту статью в закладки Вашего браузера, чтобы вернуться к ней еще раз. Для этого, прямо сейчас нажмите на клавиатуре комбинацию клавиш Ctrl+D

Автор статьи:
Категория: Язык функций и формул DAX для Power BI и Excel (Power Pivot)

Добавить комментарий

* Заполняя форму отправки комментария своими персональными данными (имя, email, сайт и др.), Вы автоматически подтверждаете свое согласие на обработку своих персональных данных


  1. Александр:

    Антон, добрый день.
    Спасибо за сайт, регулярно его открываю.
    По поводу 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

    Было бы неплохо обновить и твою статью.
    Ещё раз спасибо за сайт.