- В рамках развития соцсети реализовать систему рекомендаций пользователям.
- С целью проведения монетизации соцсети путём внедрения рекламы компаний-партнеров - провести геоаналитику.
Система будет оценивать возможность рекомендации подписок, если пользователь и адресат:
- состоят в одном канале,
- раньше никогда не переписывались,
- находятся не дальше 1 км друг от друга.
- Определить, где находится большинство пользователей по количеству сообщений, лайков и подписок из одной точки.
- Выяснить, в какой точке (городе) Австралии регистрируется больше всего новых пользователей.
- Определить, как часто пользователи путешествуют, и какие города выбирают.
Внутри директории src
расположены две поддиректории:
-/src/dags
- с дагом sprint7_project.py;
-/src/scripts
- с модулями для загрузки данных и формирования витрин.
- Сформирован модуль initial_load.py для формирования тестовой выборки в 10% от общего объёма из исходного источника данных ('/user/master/data/geo/events/'). Для выполнения проекта отобраны записи за последние 30 дней
- В качестве источника данных о геопозиционировании городов и их временных зон использовался файл geo_2.csv.
- Подготовлен модуль users_mart.py для формирования первой витрины с данными о месте нахождения пользователей
- Подготовлен модуль locations_mart.py для формирования второй витрины с количеством сообщений, реакций, подписок, регистраций за неделю и за месяц в разрезе городов.
- Подготовлен модуль recommendations_mart.py для формирования системы рекомендаций предложений для пользователей, ещё не имеющих подписок.
- для формирования витрин модули обрабатываются с использованием ДАГа sprint7_project.py в Airflow.
Расположение витрины: /user/kirillzhul/data/analytics/mart/users/
Структура витрины:
- user_id — идентификатор пользователя.
- act_city — актуальный адрес. Это город, из которого было отправлено последнее сообщение.
- home_city — домашний адрес. Это последний город, в котором пользователь был дольше 27 дней.
- travel_count — количество посещённых городов. Если пользователь побывал в каком-то городе повторно, то это считается за отдельное посещение.
- travel_array — список городов в порядке посещения.
- local_time — местное время. Время последнего события пользователя, о котором у нас есть данные с учётом таймзоны геопозициии этого события.
Расположение витрины: /user/kirillzhul/data/analytics/mart/geo/
Структура витрины:
- month — месяц расчёта;
- week — неделя расчёта;
- zone_id — идентификатор зоны (города);
- week_message — количество сообщений за неделю;
- week_reaction — количество реакций за неделю;
- week_subscription — количество подписок за неделю;
- week_user — количество регистраций за неделю;
- month_message — количество сообщений за месяц;
- month_reaction — количество реакций за месяц;
- month_subscription — количество подписок за месяц;
- month_user — количество регистраций за месяц.
Расположение витрины: /user/kirillzhul/data/analytics/mart/recommendations/
Структура витрины:
- user_left — первый пользователь;
- user_right — второй пользователь;
- processed_dttm — дата расчёта витрины;
- zone_id — идентификатор зоны (города);
- local_time — локальное время.
Python, Pyspark, Airflow, DataLake