DE Labs Test Database

Тестовая PostgreSQL база с данными для всех лабораторных работ курса Data Engineering. На практике они не всегда с постгресом работают, скорее с Кликом, но на то это и сэмплы

🚀 Подключение к базе данных

В pgAdmin два подключения, как ro-доступ с доступом только для SELECT запросов ко всем таблицам с тестовыми данными и как rw-доступ с полными админскими правами если вдруг они зачем-то понадобятся.

Web-интерфейс управления базой

📊 Структура данных

lab2 - E-commerce портал: батчевая обработка (1k записей)

Контекст: Данные для изучения batch-обработки с Airflow и ClickHouse. События интернет-магазина включают взаимодействия пользователей, покупки, просмотры страниц с UTM-параметрами и демографией.

sql SELECT * FROM lab2.events LIMIT 5;

Поля: basket_price, event_type, item_id, item_price, timestamp, user_agent_name, session_id

Пользователи в этой лабе считают средний чек и визиты. Данных мало, используется не вся схема, пайплайн такой что несмотря на то что это батч они всё равно приходят в кафку, и им из кафки ещё надо их вычитать в клик.

lab2s - более стриминговая обработка (100k записей)

Контекст: Похожая задача на 2 только данных больше и надо посчитать пользовательские взаимодействия, типа кто кого лайкнул кто что запостил. В лабе данные генерируются на лету и проливаются чекером в кафку, студенты должны посчитать метрики и положить себе в базу, чекер проверит финальные агрегации.

В базе лежит пример сгенерированных данных

sql SELECT * FROM lab2s.social_events LIMIT 5;

Поля: event_type, user_id, post_id, timestamp, unix_time

lab5 - Сервис персонализации: мульти-источники данных

Контекст: Данные для изучения интеграции многих источников данных. Клики мобильного приложения обогащаются каталогом товаров для создания профилей предпочтений пользователей.

Категории товаров из PostgreSQL каталога (1590 записей): sql SELECT * FROM lab5.category_tree LIMIT 5;

Маппинг товаров на категории (2100 записей): sql SELECT * FROM lab5.sku_cat LIMIT 5;

Clickstream мобильного приложения (110k записей): sql SELECT * FROM lab5.user_actions LIMIT 5;

lab7 - dbt трансформации: бизнес-воркфлоу данные

Контекст: Данные воркфлоу из S3 для изучения современных dBT трансформаций. Построение слоев DWH: RAW→CORE→DM с анализом переходов пользователей и сегментацией.

Пользователи с демографией (3427 записей): sql SELECT * FROM lab7.users LIMIT 5;

Действия пользователей с намерениями (10287 записей): sql SELECT * FROM lab7.bucks LIMIT 5;

Воркшоп-продукт-категория связи (1998 записей): sql SELECT * FROM lab7.wpcs LIMIT 5;

lab8 - Многомерная e-commerce аналитика (архитектурные таблицы)

Контекст: Капстоун-проект с многофасетными кликстрим данными от внешнего аналитического провайдера. Студенты строят полную DWH архитектуру с BI дашбордами.

Созданы таблицы для мультимерных clickstream данных: - lab8.browser_events - браузерные события, fingerprinting - lab8.device_events - устройства, ОС, кросс-девайс трекинг
- lab8.geo_events - геолокация, IP адреса, часовые пояса - lab8.location_events - навигация сайта, referral источники, UTM

💡 Полезные запросы

Статистика по событиям магазина

sql SELECT event_type, COUNT(*) FROM lab2.events GROUP BY event_type ORDER BY COUNT(*) DESC;

Топ товаров по цене

sql SELECT item_id, item_price FROM lab2.events WHERE event_type = 'itemViewEvent' ORDER BY item_price DESC LIMIT 10;

Активность пользователей (лаба для dbt)

sql SELECT u.username, COUNT(b.buck_id) as buck_count, COUNT(w.wpc_id) as wpc_count FROM lab7.users u LEFT JOIN lab7.bucks b ON u.user_id = b.user_id LEFT JOIN lab7.wpcs w ON u.user_id = w.user_id GROUP BY u.user_id, u.username ORDER BY buck_count DESC LIMIT 10;

📋 Дополнительные материалы