Часто в процессе анализа данных на этапе подготовки необходимо разделить дату и время на составные части. В статье рассмотрены возможности компонента «Дата и Время» платформы Loginom, предназначенного для обработки временных полей.
В анализе данных регулярно возникает задача разделения даты и времени на составные части: год, месяц, день, час, минуты, день недели и другие. Это связано с тем, что для поиска закономерностей важна не сама дата, а определенная информация о ней.
Например, для оптимизации работы интернет-магазина может потребоваться выявить, на какой день недели приходится пик продаж. Очевидно, что для этого нужно понять, какому дню недели соответствуют анализируемые даты.
Несложно определить, что 21 сентября 2023 года — это четверг, но в состоянии ли пользователь это сделать без календаря? А сколько потребуется времени, если необходимо проанализировать миллион таких записей?
Людям затруднительно определить день недели или номер недели без календаря, т.к. нет соответствующего правила. Например, 1 января может быть субботой, а 1 февраля — средой.
Также и определение номера недели по дате требует усилий, так как системы нумерации недель различаются в зависимости от выбранного стандарта. Например, «01.01.2023» в григорианском календаре относится к 1 неделе 2023 года, а в стандарте ISO 8601 — к 52 предыдущего года.
Может ли пользователь самостоятельно быстро определить, что 4 октября 2023 года - это 277 день в году? Или, наоборот, сказать, что 222 день 2023 года соответствует 10 августа?
Временные данные, из которых выделены их части, позволяют получить более полезные результаты. Например, их можно агрегировать и проанализировать ежемесячные продажи, квартальную прибыль или увидеть, как данные изменяются в разные периоды.
Пользователи привыкли записывать даты как «22-03-2015» или «22.03.2015», но внутри информационных систем они обычно хранятся в виде чисел. Это числовые значения, которые представляют собой количество единиц времени, прошедших с определенной «эпохи» (фиксированного момента во времени).
Так данные проще обрабатывать. Кроме того, подобное представление занимает меньше места на диске и в оперативной памяти. Оно обеспечивает простое и единообразное представление даты и времени.
Например, для хранения часто используется UNIX-время или POSIX-время. Этот способ кодирования времени представляет собой количество секунд, прошедших с начала «эпохи Unix» — 1 января 1970 года, 00:00:00 UTC.
Использование UNIX-времени упрощает сравнение дат и расчет временных интервалов за счет простых арифметических операций. Например, «26.09.2023 09:00:00» при конвертировании в Unix-время будет соответствовать числу «1695708000».
При этом для простоты восприятия людьми при отображении на экране даты преобразуются обратно в привычное текстовое представление.
Представление даты и времени в платформе Loginom делится на обычное и стандарт ISO 8601. Первое не вызывает трудностей, а второй вариант требует пояснений.
ISO 8601 — это международный стандарт, который описывает формат даты/времени и дает рекомендации по его использованию. Дата в нем состоит из трех частей: год, номер недели (1-53) и день недели (1-7). Особенностью является, что первой неделей года считается та, которая содержит первый четверг.
Неделя начинается с понедельника и заканчивается в воскресенье. Таким образом, год по ISO может начаться на 1-3 дня раньше или позже григорианского календаря.
Данный стандарт в основном используется в государственных учреждениях и сфере бизнеса. Он обеспечивает унификацию представления времени, что является важным для проведения операций, особенно на мировом рынке.
В данном примере 1 января относится к прошлому году при использовании стандарта ISO 8601. Поскольку 1 января 2017 года пришлось на воскресенье, то первая неделя 2017 года началась с понедельника, то есть 2 января.
В Loginom есть специальный компонент «Дата и Время», предоставляющий удобные механизмы работы с полем данного типа.
Он позволяет выделять из поля следующие производные:
Кроме того, дату/время можно преобразовать к своему формату. Он задается с помощью использования сочетаний произвольного текста и предопределенных маркеров.
Представление даты с помощью предопределенных маркеров в Loginom
Например, дату 22.03.2023 можно привести к виду 22-03-2023.
Исследуем функциональность компонента «Дата и Время».
Ниже рассмотрено несколько практических кейсов, для решения которых потребуется использование данного компонента. Описанные действия допустимы только для полей с типом данных «Дата/Время».
Имеется база данных трех аптек за несколько лет, где присутствуют поля: дата продажи, наименования товара, стоимость, количество. Требуется проверить, в какой день недели выручка минимальная.
Возможное решение
Нужно узнать, какой день недели соответствует каждой дате, вычислить прибыль. Затем провести группировку данных по дням недели.
Работа в Loginom
Настройка узла: pазбиение даты на год и дни недели
Настройка узла дает нам следующий результат.
Разбиение даты на дни недели
Диаграмма, построенная на подготовленных данных, позволяет легко получить ответ на вопрос кейса.
Графическое представление данных за один год
Выяснить, какая неделя за последние несколько лет была самой прибыльной.
Возможное решение
Необходимо сопоставить дате номер недели, провести группировку и визуализировать данные.
Работа в Loginom
Если группировать по дате без предварительной обработки полей, то на выходе будут продажи по дням, а не по неделям. Этот шаг не соответствует цели, которую необходимо достичь.
Визуализация исходных данных
В компоненте «Дата и Время» при настройке узла нужно разбить дату на год, неделю — первый и последний день.
Настройка узла: разбиение даты на год, неделю
Интересно, что у Даты 01.01.2017 первый и последний день недели совпадают, так как 1 января выпало на воскресенье.
Разбиение даты на год, неделю — первый и последний день
Поэтому преобразование даты согласно с ISO 8601 дает другой результат.
Даты в соответствии со стандартом ISO 8601
Сравнить данные разных недель можно визуально, используя диаграмму.
Визуализация данных
Проанализировать объем продаж и выручку по месяцам, кварталам и годам. В данных присутствуют поля: дата продажи, количество покупателей, объем продаж и выручка. В базе содержится информация за несколько лет.
Исходные данные
Возможное решение
Анализ данных должен быть ориентирован на доступную информацию и контекст. Например, если есть данные только за один год, то анализировать их по годам не имеет смысла, т.к. нет других точек сравнения.
Каждую дату необходимо сопоставить с выбранным интервалом, провести группировку и визуализировать данные.
Работа в Loginom
Первый вариант.
При настройке узла надо разбить дату на год, первый и последний день месяца.
Настройка узла: разбиение даты на год, месяц — первый и последний день
Далее требуется группировка по месяцам. Визуализация данных будет следующего вида.
Визуализация данных по месяцам
Второй вариант.
К исходным данным добавляется первый и последний день квартала и год.
Настройка узла: разбиение даты на год, квартал — первый и последний день
Результат группируется по кварталам и визуализируется.
Визуализация данных по кварталам
Третий вариант.
При настройке узла из даты выделяется первый и последний день года.
Настройка узла: разбиение даты на год — первый и последний день
Далее, как и в предыдущих примерах, происходит группировка и визуализация.
Визуализация данных по годам
Определение временных интервалов для анализа должно тесно коррелировать с задачами, которые требуется решить. Для выявления тенденций и изменений необходимо иметь как минимум несколько временных периодов для сравнения. При этом иногда полезно совместить анализ данных, охватывающих разные промежутки, для получения более полной картины.
Были рассмотрены некоторые возможности компонента платформы Loginom «Дата и Время». Представленные кейсы не являются эталоном, а скорее демонстрируют примеры решения задач. Для получения более полной информации по работе с датой и временем рекомендуется пройти базовые курсы Loginom Skills.
Компонент «Дата и Время» платформы Loginom предоставляет возможность гибко работать с временными данными без необходимости написания кода на языке программирования, а именно:
Разбиение даты на разные временные интервалы облегчает поиск закономерностей и визуализацию данных, а подготовленные таким образом поля проще сравнивать.
Другие материалы по теме:
Экосистема Loginom: что пользователю нужно знать о платформе