В этом уроке я покажу вам, как в DataLens в таблице-чарте сделать красивое отображение дат при группировке, например, по кварталам.
ВАЖНО. Но обратите внимание, что указанный в уроке метод не будет, к сожалению, работать на всех чартах. Например, в графиках и диаграммах. Там пока нет решения для красивого отображения периодов.
Задача
Предположим, что у нас есть некий набор данных с датой продажи и городом. И нам нужно отобразить эти данные в таблице поквартально. Но так, чтобы кварталы отображались красиво. Например, 1Q 2023.
![](https://sun9-79.userapi.com/impf/jKWohkd9mnWHS0IdR73DTfGR6VqB_n78JRJ1Gg/6SJtSCQPkTg.jpg?quality=95&as=32x14,48x21,72x31,108x47,160x70,240x104,360x157,480x209,485x211&sign=41debff5146c3897a026fcc95822153c&from=bu&u=kt45rfME3bkVeDKzK7GZSw2r5eHv3SEP8v2a72yhJ5M&cs=485x211)
Решение
Первое, что приходит в голову, – это использовать функцию Datetrunc(). Ведь именно она группирует даты в разную размерность (год, квартал и т.д.).
Описание
Возвращает дату, округленную по аргументу unit
.
DATETRUNC( datetime, unit [ , number ] )
Давайте создадим поле с такой функцией и посмотрим, что получится.
Прописываем формулу, согласно синтаксису функции.
![](https://sun9-3.userapi.com/impf/X-gYC0VakfSlIVStGaS_H6JsX9dIvhlf7sncuA/6PCjl0cGqHU.jpg?quality=95&as=32x9,48x14,72x21,108x32,160x47,240x70,360x105,480x140,540x158,640x187,664x194&sign=cd2febef6a86065c51f8c265a24c621a&from=bu&u=_oFHRR9fz7J9qbQ-6fZ4AUtjQPabn18MePh_i-804fk&cs=664x194)
И видим, что даты хоть и сгруппировались по кварталам, но визуально это выглядит очень неудобно. Если перенести это на график, то все будут просто видеть первый месяц квартала. И каждый раз надо вспоминать, что же это за квартал.
![](https://sun9-67.userapi.com/impf/ZoGZ91W6TwX9nQCKGmnS_jgBYTekdLHzUhcVYw/drxJjixzMRg.jpg?quality=95&as=32x20,48x30,72x45,108x67,160x99,240x148,360x223,480x297,540x334,640x396,668x413&sign=7e3823b6542d5076eb46c604e1150fbe&from=bu&u=lgUgjhgFLSvcO_mAo6N0xFGhTZJOXpDjoZDd4Qj2i0g&cs=668x413)
Поэтому давайте сделаем по-другому.
Вместо Datetrunc() используем несколько функций:
- Определим номер квартала в дате
- Определим номер года в дате
- Соединим это в одну строку.
Это будет выглядеть вот так:
![](https://biba.pro/wp-content/uploads/2024/07/image-87.png)
С помощью функции конкатенация мы объединяем в одну строку номер квартала, затем букву Q, которая обозначает, что это квартал, и год. Получается красивое и читабельное отображения квартала.
CONCAT(QUARTER([Date]),"Q ", YEAR([Date]))
Описание CONCAT
Объединяет произвольное количество строк. При использовании нестроковых типов происходит преобразование в строку и объединение.
CONCAT( arg_1, arg_2, arg_3 [ , ... ] )
Описание MONTH
Возвращает номер месяца в году в указанной дате datetime
.
MONTH( datetime )
Описание YEAR
Возвращает номер года в указанной дате datetime
.
YEAR( datetime )
![](https://biba.pro/wp-content/uploads/2024/07/image-88.png)
Теперь давайте выведем это на таблицу-чарт и посмотрим, что получится.
![](https://biba.pro/wp-content/uploads/2024/07/image-89.png)
Да, наши кварталы отображаются красиво, но обратите внимание на сортировку. Так как поле Квартал у нас является текстовым, то и сортируется оно по правилам текста. То есть данные будут идти по первым цифрам. Сначала все первые кварталы за все года, потом вторые кварталы и т.д.
Так как же сделать так, чтобы наши кварталы расположились в нужной хронологии?
Казалось бы, можно добавить поле Date в сортировку и настроить хронологию именно таким образом. Но тогда наши строки размножатся, так как у поля Date нет группировки по кварталу, и он выводит все даты, какие есть.
![](https://biba.pro/wp-content/uploads/2024/07/image-90.png)
Тогда можно пойти на небольшую хитрость. Давайте вернемся в датасет и снова создадим поле с функцией Datetrunc(), как мы делали в начале.
![](https://biba.pro/wp-content/uploads/2024/07/image-91.png)
И теперь снова отсортируем нашу таблицу по этому новому полю. Ура, теперь наши строки отсортированы в нужном хронологическом порядке и красивым отображением кварталом.
![](https://biba.pro/wp-content/uploads/2024/07/image-92.png)
Совет. А если в датасете сделать Параметр, то с его помощью можно вообще сделать настраиваемую размерность. Если пользователь выбирает Год, то данные будут группировать по годам, а Q, например, будет меняться на Y.
Если хотите узнать, как это сделать, то пишите в комментариях, сделаю отдельный урок на эту тему.
Наши курсы
Также ниже можно скачать урок в формате PDF.
Если вам понравился урок, то можете поддержать проект по кнопке ниже. Это очень поможет делать для вас больше интересных и полезных выпусков. Спасибо!
![](https://biba.pro/wp-content/plugins/dk-pricr-responsive-pricing-table/inc/img/rpt_recommended.png)
Задать вопросы и обсудить волнующие темы про аналитику данных теперь можно на нашем форуме.
Если вам понравился урок, подписывайтесь на канал или группу и ставьте лайки. А также пишите в комментариях свои кейсы или вопросы. Самые интересные мы обязательно разберем.