Skip to content

KirillZhul/de-project-sprint-7

 
 

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

33 Commits
 
 
 
 
 
 
 
 

Repository files navigation

Проектная работа по организации Data Lake

Задачи проекта

  1. В рамках развития соцсети реализовать систему рекомендаций пользователям.
  2. С целью проведения монетизации соцсети путём внедрения рекламы компаний-партнеров - провести геоаналитику.

Описание задач

Рекомендация пользователям

Система будет оценивать возможность рекомендации подписок, если пользователь и адресат:

  • состоят в одном канале,
  • раньше никогда не переписывались,
  • находятся не дальше 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

Releases

No releases published

Packages

No packages published

Languages

  • Python 100.0%