Россия Нет

Функции даты в DAX: DATE, DATEVALUE, YEAR, MONTH, DAY и TODAY в Power BI и Power Pivot

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


Приветствую Вас, дорогие друзья, с Вами Будуев Антон. В этой статье мы обсудим функции в DAX, возвращающие дату в том или ином виде. И это функции DATE, DATEVALUE, YEAR, MONTH, DAY и TODAY в Power BI и PowerPivot.

Разберем каждую из функций отдельно.

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

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

 

DAX функция TODAY в Power BI и PowerPivot

TODAY () — сегодня. Возвращает текущую дату.

Данная функция очень простая и не содержит в себе ни одного параметра.

Синтаксис:

TODAY ()

Пример формулы:

Сегодня = TODAY ()

Результатом выполнения этой формулы будет текущее сегодняшнее число:

 

DAX функция DATE в Power BI и PowerPivot

DATE () — возвращает в формате datetime прописанную в параметрах дату.

Синтаксис:

DATE (год; месяц; день)

! — Если месяц не соответствует числам 1-12, то лишние (недостающие) месяца добавляются (убавляются) к году.
! — Если дни не соответствуют числам 1-31 в месяце, то лишние (недостающие) дни добавляются (убавляются) к месяцу и к году.

Примеры формул с использованием функции DATE.

Пример 1: DATE (2018; 13; 23) 
Результат 1: 23.01.2019

Пример 2: DATE (2018; -1; 23) 
Результат 2: 23.11.2017

Пример 3: DATE (2018; 01; 32)
Результат 4: 01.02.2018

Пример 4: DATE (2018; 02; -1)
Результат 4: 30.01.2018

Пример выполнения формулы в Power BI на основе DAX функции DATE будет выглядеть так:

 

DAX функция DATEVALUE в Power BI и PowerPivot

DATEVALUE () — используя локаль даты ПК, возвращает в формате datetime прописанную в параметрах текстовую дату.

Синтаксис:

DATEVALUE ("Дата")

«Дата» — может быть записана в различных вариантах, в том числе, и сокращенных.

Рассмотрим функцию DATEVALUE на примерах формул:

Пример 1: DATEVALUE ("2018-01-01") 
Результат 1: 01.01.2018

Пример 2: DATEVALUE ("2018.01.01")
Результат 2: 01.01.2018

Пример 3: DATEVALUE ("2018/01/01")
Результат 3: 01.01.2018

Пример 4: DATEVALUE ("2018,01,01")
Результат 4: 01.01.2018

Пример 5: DATEVALUE ("2018 01 01")
Результат 5: 01.01.2018

Пример 6: DATEVALUE ("2018 12")
Результат 6: 01.12.2018

Пример 7: DATEVALUE ("декабрь 2018")
Результат 7: 01.12.2018

Пример 8: DATEVALUE ("23 дек") 
Результат 8: 23.12.2018

В Power BI формула на основе DATEVALUE работать будет так:

 

DAX функции YEAR, MONTH и DAY в Power BI и PowerPivot

YEAR (), MONTH () и DAY () — возвращают год, месяц и день в формате чисел из значения даты.

Синтаксис:

YEAR ([Дата])
MONTH ([Дата])
DAY ([Дата])

Где [Дата] — столбец, содержащий даты, либо дата в текстовом или datetime форматах.

Примеры формул на основе функций YEAR, MONTH и DAY.

Пример 1: YEAR (DATE (2018; 10; 18)) 
Результат 1: 2018
Пример 2: YEAR ("декабрь 2017")
Результат 2: 2017

Пример 3: MONTH (DATE (2018; 10; 18))
Результат 3: 10
Пример 4: MONTH ("18 декабря")
Результат 4: 12

Пример 5: DAY (DATE (2018; 10; 13))
Результат 5: 13
Пример 6: DAY ("17 декабря")
Результат 6: 17

В большинстве случаев, эти функции в Power BI или PowerPivot будут использоваться со внутренним параметром [Дата], то есть, значение даты будет указано в столбце. Давайте рассмотрим соответствующий пример.

В Power BI Desktop имеется исходная таблица с датами:

 

Создадим в этой таблице 3 вычисляемых столбца по следующим формулам:

Год = YEAR ([Дата])
Месяц = MONTH ([Дата])
День = DAY ([Дата])

В результате, в Power BI получим следующую расширенную таблицу:

 

На этом, с разбором функций дат в Power BI и PowerPivot, в этой статье все. Переходите к следующей статье, где мы разберем похожие функции времени.

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

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

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

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

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

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

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

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


  1. Андрей:

    Добрый день.
    При использовании функции Month выдает следующее сообщение:
    «Не удается преобразовать значение «Январь» типа Text в тип Date»
    Что не так?

    Функция Format работает, но на графиках месяца не упорядочиваются.

    Что делать?)

    1. Антон Будуев:

      Здравствуйте, Андрей.

      В функцию MONTH нужно вставлять дату — либо реальную дату, например такую: 12.10.2019, либо дату в текстовом формате, например, такую: «12 января»

      НО! В нее НЕЛЬЗЯ вставлять просто месяц, записанный в виде текста, как у Вас: «январь» — так функция MONTH уже не работает.

      По второму вопросу с функцией FORMAT — на сколько я понял Ваш вопрос, то у Вас на графиках все выводится в алфавитном порядке, а Вам нужно упорядочить по нужному Вам порядку (календарному). Для этого Вам нужно в этой же таблице создать еще один индексный столбец с числовыми данными, выражающими порядок, и далее настроить сортировку нужного Вам столбца по индексному столбцу:
      пример кнопки: Сортировка по столбцу

      Сам индексный столбец можно создавать разными вариантами, в зависимости от того, какие данные у Вас выводит FORMAT. Если дни недели, то индексный столбец можно создать на основе функции WEEKDAY([Дата];2), если месяца, то индексный столбец можно создать так: MONTH([Дата]).

      Также, можно воспользоваться универсальной «ручной» формулой:

      SWITCH (
          [Столбец_На_Основе_FORMAT];
          "Понедельник";1;
          "Вторник";2
      )
      
      или так
      
      SWITCH (
          [Столбец_На_Основе_FORMAT];
          "январь";1;
          "февраль";2
      )
      
  2. Владимир:

    А если в исходных данных 10 разных столбцов с датами и нужны отчеты по дням недели, дням месяца, неделе, месяцу, кварталу, году, то к каждой дате нужно создавать доп. таблицу с этими дополнительными преобразованиями?

    1. Антон Будуев:

      Смотря какие у Вас цели. Можно к каждому столбцу с датами в исходных таблицах делать дополнительные преобразования, а можно (в большинстве случаев это будет рациональнее) создать один справочник Календарь, в нем сделать нужные преобразования дат. И этот справочник уже соединить связями со всеми другими таблицами, содержащие даты. Главное, чтобы это были одни и те же даты (например, только даты продаж).
      Объединять разные типы даты одним справочником (например, даты поставки и даты продаж) уже будет не совсем правильно.