Создание календаря в DAX

  • Автор записи:
  • Запись опубликована:21.04.2022
  • Рубрика записи:BI

Существует множество случаев, когда вам необходимо создать таблицу дат в Power BI desktop. Это может быть как просто создание основной таблицы дат, так и более сложная задача, например, создание ежемесячного или еженедельного индекса, привязанного к дате. Для создания таблицы дат существует два метода. Первый способ – создать таблицу непосредственно в Power BI Desktop или второй – загрузить таблицу дат из источника данных.

Немного про функцию CALENDAR

Согласно документации, функция CALENDAR – возвращает таблицу с одним столбцом с именем Date, который содержит смежный набор дат. Диапазон дат — от указанной даты начала до указанной конечной даты, включая эти две даты.

CALENDAR(<start_date>, <end_date>)  

Если start_date больше end_date, возвращается ошибка.

Эта функция не поддерживается для использования в режиме DirectQuery при использовании в вычисляемых столбцах или правилах безопасности на уровне строк (RLS).

Пример

Существует некоторая модель данных для которой нужно создать дополнительную таблицу с датами в диапазоне от самой первой даты оплаты до последней.

Откройте Power BI Desktop, на вкладке Главная нажмите кнопку “Создать таблицу”.

Далее, в окно формулы вставьте следующий код.

Dates = 
     GENERATE ( 
          CALENDAR ( DATE ( 2016, 1, 1 ), DATE ( 2016, 12, 31 ) ) ), 
          VAR currentDay = [Date] 
          VAR day = DAY( currentDay ) 
          VAR month = MONTH ( currentDay ) 
          VAR year = YEAR ( currentDay ) 
          VAR quarter = QUARTER( currentDay ) 
     RETURN ROW ( 
          "day", day, 
          "month", month, 
          "year", year , 
          "quarter", quarter )
)

DAX-функция CALENDAR создает таблицу со списком дат с 1 января по 31 декабря 2016 года.
Мы определяем переменные (обозначаемые VAR) для сбора данных из столбца с именем [Date], который создается функцией CALENDAR.
Функция Return генерирует по одной строке за раз. В строке выполняется итерация по каждому элементу [Date] в списке, который был создан функцией CALENDAR. Переменные вычисляются заново при каждом выполнении ряда.
Примечание: При создании таблиц DAX, как мы делаем это в данном примере, таблица DAX обновляется только при обновлении отчета. Таким образом, если вы хотите, чтобы список дат увеличивался со временем, или используете NOW() в таблице DAX, вам нужно будет обязательно запланировать обновление отчета Power BI в службе PowerBI.com.

Если возвратиться непосредственно к заданию, то вместо указания конкретных дат, для того, чтобы получить диапазон дат от первой даты оплаты до последней, использовались бы функции MIN и MAX. Так, третья строка имела бы следующий вид:

          CALENDAR ( MIN('Заказы'[Дата оплаты]), MAX('Заказы'[Дата оплаты] ) ),

Мы также можем создать такую же таблицу данных, вычисляя наши данные по столбцам. Создайте еще одну таблицу и поместите в окно формулы следующий код:

Dates 2 = ADDCOLUMNS(
     CALENDAR( DATE( 2016, 1, 1) , DATE(2016, 12, 31) ), 
     "day", DAY([Date]), 
     "month", MONTH([Date]), 
     "year", YEAR([Date]),
     "quarter", QUARTER([Date])
 )

Результат выполнения следующий:

Надеюсь, что эта статья была вам полезна, и вы узнали что-то новое про функция CALENDAR.

Насколько публикация полезна?

Нажмите на звезду, чтобы оценить!

Средняя оценка 5 / 5. Количество оценок: 1

Оценок пока нет. Поставьте оценку первым.