В этом уроке я покажу вам, как в DataLens в таблице-чарте сделать красивое отображение дат при группировке, например, по кварталам.
ВАЖНО. Но обратите внимание, что указанный в уроке метод не будет, к сожалению, работать на всех чартах. Например, в графиках и диаграммах. Там пока нет решения для красивого отображения периодов.
Задача
Предположим, что у нас есть некий набор данных с датой продажи и городом. И нам нужно отобразить эти данные в таблице поквартально. Но так, чтобы кварталы отображались красиво. Например, 1Q 2023.
Решение
Первое, что приходит в голову, — это использовать функцию Datetrunc(). Ведь именно она группирует даты в разную размерность (год, квартал и т.д.).
Описание
Возвращает дату, округленную по аргументу unit
.
DATETRUNC( datetime, unit [ , number ] )
Давайте создадим поле с такой функцией и посмотрим, что получится.
Прописываем формулу, согласно синтаксису функции.
И видим, что даты хоть и сгруппировались по кварталам, но визуально это выглядит очень неудобно. Если перенести это на график, то все будут просто видеть первый месяц квартала. И каждый раз надо вспоминать, что же это за квартал.
Поэтому давайте сделаем по-другому.
Вместо Datetrunc() используем несколько функций:
- Определим номер квартала в дате
- Определим номер года в дате
- Соединим это в одну строку.
Это будет выглядеть вот так:
С помощью функции конкатенация мы объединяем в одну строку номер квартала, затем букву Q, которая обозначает, что это квартал, и год. Получается красивое и читабельное отображения квартала.
CONCAT(QUARTER([Date]),"Q ", YEAR([Date]))
Описание CONCAT
Объединяет произвольное количество строк. При использовании нестроковых типов происходит преобразование в строку и объединение.
CONCAT( arg_1, arg_2, arg_3 [ , ... ] )
Описание MONTH
Возвращает номер месяца в году в указанной дате datetime
.
MONTH( datetime )
Описание YEAR
Возвращает номер года в указанной дате datetime
.
YEAR( datetime )
Теперь давайте выведем это на таблицу-чарт и посмотрим, что получится.
Да, наши кварталы отображаются красиво, но обратите внимание на сортировку. Так как поле Квартал у нас является текстовым, то и сортируется оно по правилам текста. То есть данные будут идти по первым цифрам. Сначала все первые кварталы за все года, потом вторые кварталы и т.д.
Так как же сделать так, чтобы наши кварталы расположились в нужной хронологии?
Казалось бы, можно добавить поле Date в сортировку и настроить хронологию именно таким образом. Но тогда наши строки размножатся, так как у поля Date нет группировки по кварталу, и он выводит все даты, какие есть.
Тогда можно пойти на небольшую хитрость. Давайте вернемся в датасет и снова создадим поле с функцией Datetrunc(), как мы делали в начале.
И теперь снова отсортируем нашу таблицу по этому новому полю. Ура, теперь наши строки отсортированы в нужном хронологическом порядке и красивым отображением кварталом.
Совет. А если в датасете сделать Параметр, то с его помощью можно вообще сделать настраиваемую размерность. Если пользователь выбирает Год, то данные будут группировать по годам, а Q, например, будет меняться на Y.
Если хотите узнать, как это сделать, то пишите в комментариях, сделаю отдельный урок на эту тему.
Наши курсы
Также ниже можно скачать урок в формате PDF.
Если вам понравился урок, то можете поддержать проект по кнопке ниже. Это очень поможет делать для вас больше интересных и полезных выпусков. Спасибо!
Задать вопросы и обсудить волнующие темы про аналитику данных теперь можно на нашем форуме.
Если вам понравился урок, подписывайтесь на канал или группу и ставьте лайки. А также пишите в комментариях свои кейсы или вопросы. Самые интересные мы обязательно разберем.