Таблица с датами — абсолютный мастхэв в любом отчете PowerBI. В этой статье я подробно разберу процесс создания таблицы-календаря в Power Query Editor, а для ленивых в конце статьи будет инструкция по созданию такой таблицы буквально в два клика.
Создаем столбец дат
Для начала нам потребуется столбец с датами, для этого обратимся к функции List.Dates. Эта функция позволит нам создать список дат начиная с текущей и заканчивая заданной нами.
Вместо стартовой даты мы будем использовать конструкцию DateTime.Date(DateTime.FixedLocalNow()), которая возвращает текущую дату.
Полный код запроса выглядит следующим образом:
let
Source = List.Dates(DateTime.Date(DateTime.FixedLocalNow()), 365, #duration(-1,0,0,0)),
#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error)
in #"Converted to Table"
Первый шаг этого кода создает список из дат, а второй шаг конвертирует этот список в таблицу. Цифра 365 в коде — количество дней, начиная с текущего, которые вы хотите отобразить, в данном случае, один год. Если вам нужно больше, введите необходимое значение. Рекомендую взять большой интервал, а потом просто отфильтровать значения в столбце начиная с нужной даты.
Чтобы создать такую же таблицу:
- Перейдите в Power Query Editor (Edit Queries);
- Cоздайте новый пустой запрос (Blank Query);
- Откройте Advanced Editor;
- Вставьте представленный выше код и нажмите Done.
Дополняем таблицу необходимыми полями
Далее нам просто необходимо дополнить таблицу столбцами, которые нам будут необходимы для реализации нашего отчета. Дополнительные столбцы индивидуальны для каждого проекта, я расскажу только про те, которые я использую всегда.
В каждом проекте я использую столбцы: День, месяц, год, дата начала недели, дата начала месяца. Последние два нужны для того, чтобы строить графики с переключением детализации по дням, неделям и месяцам. Остальные нужны для создания фильтрации данных в отчетах.
Создаются столбцы очень просто:
- Выделите созданный нами столбец с датами;
- Перейдите на вкладку Add Column;
- Выберите Date — Month — Name of Month.
По такому же принципу вы можете создать остальные столбцы:
- год: Year — Year;
- дата начала недели: Week — Start of Week;
- дата начала месяца: Month — Start of Month.
Версия для ленивых
Для тех, кому лень вникать в то, как создается такая таблица:
- Перейдите в Power Query Editor (Edit Queries);
- Cоздайте новый пустой запрос (Blank Query);
- Откройте Advanced Editor;
- Вставьте представленный ниже код и нажмите Done.
let
Source = List.Dates(DateTime.Date(DateTime.FixedLocalNow()), 365, #duration(-1,0,0,0)),
#"Converted to Table" = Table.FromList(Source, Splitter.SplitByNothing(), null, null, ExtraValues.Error),
#"Renamed Columns" = Table.RenameColumns(#"Converted to Table",{{"Column1", "Date"}}),
#"Changed Type" = Table.TransformColumnTypes(#"Renamed Columns",{{"Date", type date}}),
#"Inserted Day" = Table.AddColumn(#"Changed Type", "Day", each Date.Day([Date]), Int64.Type),
#"Inserted Month Name" = Table.AddColumn(#"Inserted Day", "Month Name", each Date.MonthName([Date]), type text),
#"Inserted Year" = Table.AddColumn(#"Inserted Month Name", "Year", each Date.Year([Date]), Int64.Type),
#"Inserted Start of Month" = Table.AddColumn(#"Inserted Year", "Start of Month", each Date.StartOfMonth([Date]), type date),
#"Inserted Start of Week" = Table.AddColumn(#"Inserted Start of Month", "Start of Week", each Date.StartOfWeek([Date]), type date),
#"Inserted Start of Year" = Table.AddColumn(#"Inserted Start of Week", "Start of Year", each Date.StartOfYear([Date]), type date)
in #"Inserted Start of Year"
После этого необходимо будет связать ваши таблицы, содержащие даты, с этой таблицей и можно будет использовать ее для создания всех фитров и визуализаций.