Доброго времени суток, друзья. От слов сразу к делу, как говорится. В данной статье рассмотрим такое понятие как относительный срез дат.
Как выглядит обычный срез по датам:
Какой срез будем сегодня рассматривать:
Итак, как мы с Вами видим данный срез во многом удобен на отчётах/дашбордах, где важны показатели за ближайший прошедший промежуток времени. В общем, очень полезный инструмент.
Давайте же рассмотрим, как реализовать такой срез.
Для начала нам необходимо вручную сделать календарь, если его у Вас ещё конечно же нет, для этого напишем незамысловатую формулу:
Идём в Главная --> Создать таблицу
Далее пишем нашу формулу:
Календарь = ADDCOLUMNS( CALENDAR("01/01/2021",DATE(year(TODAY())+1,1,1)),
"Год", YEAR([Date]),
"Месяц", MONTH([Date]),
"Квартал", FORMAT([Date],"Q"),
"День (пн = 1)", WEEKDAY([Date],2),
"День текстом", FORMAT([Date],"ddd"),
"Номер недели (неделя начинается в пн)", WEEKNUM([Date],2),
"месяц-год", FORMAT([Date],"mmm YYYY"),
"Месяц_полностью", FORMAT([Date],"mmmm"))
Отлично, наш календарь создан. Вообще такой календарь нужен для более удобного построения связей, для удобной и правильной фильтрации. В общем и целом штука хорошая и нужная.
Далее снова необходимо создать пустую таблицу по предыдущей инструкции, но только вместо кода календаря нам необходимо вставить такой вот код:
Срез для главной =
var min_date_Month = MINX(FILTER('Календарь','Календарь'[Месяц]=MONTH(TODAY()) && 'Календарь'[Год]= YEAR(TODAY())),'Календарь'[Date])
var max_date_Month = MAXX(FILTER('Календарь','Календарь'[Месяц]=MONTH(TODAY()) && 'Календарь'[Год]= YEAR(TODAY())),'Календарь'[Date])
var min_date_PrevWeek = MINX(FILTER('Календарь','Календарь'[Номер недели (неделя начинается в пн)]=WEEKNUM(TODAY())-1 && 'Календарь'[Год]= YEAR(TODAY()) ),'Календарь'[Date])
var max_date_PrevWeek = MAXX(FILTER('Календарь','Календарь'[Номер недели (неделя начинается в пн)]=WEEKNUM(TODAY())-1 && 'Календарь'[Год]= YEAR(TODAY()) ) ,'Календарь'[Date])
var min_date_Week = MINX(FILTER('Календарь','Календарь'[Номер недели (неделя начинается в пн)]=WEEKNUM(TODAY()) && 'Календарь'[Год]= YEAR(TODAY()) ),'Календарь'[Date])
var max_date_Week = MAXX(FILTER('Календарь','Календарь'[Номер недели (неделя начинается в пн)]=WEEKNUM(TODAY()) && 'Календарь'[Год]= YEAR(TODAY()) ),'Календарь'[Date])
var Yesterday_ = TODAY()-1
var Today_ = TODAY()
var tabl_Month= ADDCOLUMNS(CALENDAR(min_date_Month,max_date_Month),"Период","Mесяц","Индекс",1)
var tabl_PrevWeek = ADDCOLUMNS(CALENDAR(min_date_PrevWeek,max_date_PrevWeek),"Период","Пред. Неделя","Индекс",2)
var tabl_Week = ADDCOLUMNS(CALENDAR(min_date_Week,max_date_Week),"Период","Неделя","Индекс",3)
var tabl_Ysterday = ADDCOLUMNS(CALENDAR(Yesterday_,Yesterday_),"Период","Вчера","Индекс",4)
var tabl_Today = ADDCOLUMNS(CALENDAR(Today_,Today_),"Период","Сегодня","Индекс",5)
RETURN
UNION(tabl_Month,tabl_PrevWeek,tabl_Week,tabl_Ysterday,tabl_Today)
После написания данных формул, мы узрим такую вот табличку:
Если у Вас получилось так же, то круто, идём дальше.
Далее перейдём к связям. Завершающий этап практически.
Строим двунаправленную связь Многие к одному между таблицами Календарь и Срез для главной.
Получилось? Прекрасно.
Теперь идём в визуализацию и выбираем так называемый Срез.
Далее из таблицы Срез для главной вставляем поле Период таким вот образом:
После этого идём в формат среза, далее Ориентация --> По горизонтали:
Вот и всё! Готово. Как я и говорил ранее, данный срез очень удобен в отчётах/дашбордах, где важна информация за ближайший прошедший или настоящий участок времени.
Мы очень признательны за прочтение данной статьи, надеюсь вы извлекли для себя что-то новое или же закрепили уже полученные знания.
Будем рады любым видам обратной связи. Если статья действительно была полезной, можно поставить смайлик в комментах.
Всем мир :)