Классика баз данных - статьи



         

Формирование данных о пользовательских сессиях на основе журнальных файлов Web-сайтов


При анализе посещений пользователями Web-сайтов распространенной аналитической задачей является разделение посещений ("кликов") данного пользователя на сессии. Сессия – это некоторый период активности пользователя на Web-сайте. В сессию включаются все клики пользователя, произведенные им в заданный период времени. На рис. 2 демонстрируется разбиение на сессии таблицы кликов. Эта простая таблица кликов содержит только временную метку (timestamp) клика и идентификатор пользователя (userid), ассоциированный с данным кликом. В результирующей таблице (рис. 2b), которая для наглядности разделена по userid, каждая пара кликов, время между которыми меньше 60 секунд, считается входящей в одну и ту же сессию.

Рис. 2. Пример разбиения кликов на сессии: в таблице (a) содержатся необработанные данные о кликах, а в таблице (b) клики сгруппированы по userid, и в строки добавлен номер сессии; сессии формируются на основе временного интервала в 60 секунд.

Разбиение на сессии можно выполнить с использованием SQL, но SQL/MR позволяет упростить это действие и повысить его эффективность. В SQL/MR-функции для этого разбиения требуется только один проход по таблице кликов, в то время как при выполнении SQL-запроса потребуется дорогостоящее соединение этой таблицы с ней же самой. Кроме того, динамический полиморфизм SQL/MR-функции позволяет повторно использовать ее для вычисления информации о сессиях над таблицами с любой схемой. Таким образом, SQL/MR-функция для разбиения на сессии становится повторно используемой библиотечной подпрограммой, которую может использовать любой аналитик.

Сначала мы покажем использование SQL/MR-функции sessionize в запросе над таблицей кликов с рис. 2, а потом опишем реализацию самой функции.

Рис. 3. Использование в запросе вызова SQL/MR -функции sessionize.

На рис. 3 показано использование SQL/MR-функции sessionize в запросе над таблицей кликов. Мы производим разделение таблицы по userid, чтобы сгруппировать клики каждого пользователя.


Содержание  Назад  Вперед