## **Практическое задание: Разработка дашборда для маркетплейса цифровых товаров** ### **Цель работы** Разработать аналитический дашборд в Yandex DataLens, который поможет бизнесу отслеживать ключевые метрики и принимать решения. ### **Исходные данные** У вас есть база данных PostgreSQL с таблицами: - `users` - пользователи платформы - `sellers` - продавцы - `categories` - категории товаров - `products` - товары - `orders` - заказы ### **Задание 1: Подготовка датасета (30 минут)** #### **Шаг 1.1: Создайте подключение к БД** - Создайте подключение к PostgreSQL с параметрами: - Хост: 188.120.248.94 - Порт: 5432 - База данных: ggsel - Пользователь: student - Пароль: student123 #### **Шаг 1.2: Создайте датасет через визуальный редактор** Добавьте следующие таблицы со связями: 1. **orders** (главная таблица) 2. **products** (связь: `orders.product_id = products.product_id`) 3. **sellers** (связь: `orders.seller_id = sellers.seller_id`) 4. **users** (связь: `orders.user_id = users.user_id`) 5. **categories** (связь: `products.category_id = categories.category_id`) #### **Шаг 1.3: Выберите поля для датасета** Отметьте следующие поля: **Из orders:** - [ ] order_id - [ ] order_date - [ ] status - [ ] quantity - [ ] final_price - [ ] payment_method **Из products:** - [ ] product_name - [ ] price (переименуйте в base_price) **Из sellers:** - [ ] company_name (seller_name) - [ ] rating (seller_rating) **Из users:** - [ ] country (user_country) - [ ] registration_source - [ ] registration_date **Из categories:** - [ ] category_name ### **Шаг 1.4: Создайте вычисляемые поля** Создайте следующие поля: 1. **Год заказа** - `DATETRUNC([order_date], "year")` 2. **Месяц заказа** - `DATETRUNC([order_date], "month")` 3. **Квартал заказа** - `DATETRUNC([order_date], "quarter")` 4. **День недели** (название) - используйте CASE для преобразования 5. **Выручка** - `[final_price] * [quantity]` 6. **Возраст пользователя в днях** - `DATE_DIFF(CURRENT_DATE, [registration_date], 'day')` #### **Шаг 1.5: Добавьте глобальный фильтр** Добавьте фильтр, чтобы показывать только завершенные заказы: - Поле: `status` - Условие: `[status] = 'completed'` ### **Задание 2: Создание чартов (1 час)** #### **Чарт 1: KPI метрики** Создайте 4 отдельных чарта типа "Показатель": 1. **Общая выручка** - Поле: `final_price` (SUM) - Формат: деньги, с разделителями тысяч - Заголовок: "Общая выручка" 2. **Количество заказов** - Поле: `order_id` (COUNT DISTINCT) - Формат: число - Заголовок: "Всего заказов" 3. **Средний чек** - Поле: `final_price` (AVG) - Формат: деньги - Заголовок: "Средний чек" 4. **Количество покупателей** - Поле: `user_id` (COUNT DISTINCT) - Формат: число - Заголовок: "Активных покупателей" #### **Чарт 2: Динамика продаж** - Тип: Линейная диаграмма - X: `order_date` (с группировкой по дням) - Y: `final_price` (SUM) - Цвет: `category_name` (для разделения по категориям) - Заголовок: "Динамика продаж по дням" - Подписи осей: подпишите оси #### **Чарт 3: Топ-10 категорий** - Тип: Столбчатая диаграмма - X: `category_name` - Y: `final_price` (SUM) - Сортировка: по убыванию - Заголовок: "Топ-10 категорий по выручке" #### **Чарт 4: Методы оплаты** - Тип: Круговая диаграмма - Цвет: `payment_method` - Показатель: `order_id` (COUNT) - Заголовок: "Распределение заказов по методам оплаты" - Добавьте подписи с процентами #### **Чарт 5: Топ-10 продавцов** - Тип: Таблица - Столбцы: - `seller_name` - `SUM(final_price)` (назвать "Выручка") - `COUNT(order_id)` (назвать "Заказы") - `AVG(final_price)` (назвать "Средний чек") - `AVG(seller_rating)` (назвать "Рейтинг") - Сортировка: по убыванию выручки - Заголовок: "Топ-10 продавцов" #### **Чарт 6: Тепловая карта продаж по дням недели** - Тип: Тепловая карта (или столбчатая) - X: `day_of_week` - Y: `final_price` (SUM) - Сортировка: по порядку дней - Заголовок: "Продажи по дням недели" #### **Чарт 7: География продаж** - Тип: Карта (или столбчатая, если нет карты) - Категория: `user_country` - Показатель: `final_price` (SUM) - Заголовок: "Продажи по странам" #### **Чарт 8: Распределение цен товаров** - Тип: Гистограмма - X: `base_price` - Y: `COUNT(product_id)` - Заголовок: "Распределение товаров по цене" - Количество корзин: 10-15 #### **Чарт 9: Анализ количества товаров в заказе** - Тип: Круговая или столбчатая - Показатель: `quantity` - Метрика: `COUNT(order_id)` - Заголовок: "Распределение по количеству товаров в заказе" #### **Чарт 10: Динамика регистраций пользователей** - Тип: Линейная диаграмма - X: `registration_date` - Y: `COUNT(user_id)` - Цвет: `registration_source` - Заголовок: "Динамика регистраций пользователей по источникам" ### **Задание 3: Создание дашборда (30 минут)** #### **Шаг 3.1: Создайте новый дашборд** Название: "GGsel - Аналитика продаж [Ваше имя]" #### **Шаг 3.2: Добавьте заголовок** Используйте текстовый блок с описанием: ``` # GGsel Marketplace Dashboard ## Аналитика продаж и пользователей **Автор:** [Ваше имя] **Дата обновления:** {{CURRENT_DATE}} ``` #### **Шаг 3.3: Добавьте селекторы (фильтры)** 1. **Период** (поле `order_date`, тип "Календарь") 2. **Категория** (поле `category_name`, тип "Выпадающий список") 3. **Страна** (поле `user_country`, тип "Выпадающий список") 4. **Продавец** (поле `seller_name`, тип "Выпадающий список") #### **Шаг 3.4: Разместите чарты на дашборде** Создайте следующую структуру: ``` ┌─────────────────────────────────────────────────────────────┐ │ ЗАГОЛОВОК И ОПИСАНИЕ │ ├─────────────────────────────────────────────────────────────┤ │ [Период: ▼] [Категория: ▼] [Страна: ▼] [Продавец: ▼] │ ├──────────────┬──────────────┬──────────────┬───────────────┤ │ Выручка │ Заказы │ Средний чек │ Покупатели │ │ (Чарт 1) │ (Чарт 1) │ (Чарт 1) │ (Чарт 1) │ ├──────────────┴──────────────┴──────────────┴───────────────┤ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Динамика продаж (Чарт 2) │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────┐ ┌─────────────────────────────┐ │ │ │ Топ категорий │ │ Методы оплаты │ │ │ │ (Чарт 3) │ │ (Чарт 4) │ │ │ └─────────────────────┘ └─────────────────────────────┘ │ │ │ │ ┌─────────────────────┐ ┌─────────────────────────────┐ │ │ │ Продажи по дням │ │ География продаж │ │ │ │ (Чарт 6) │ │ (Чарт 7) │ │ │ └─────────────────────┘ └─────────────────────────────┘ │ │ │ │ ┌─────────────────────────────────────────────────────┐ │ │ │ Топ-10 продавцов (Чарт 5) │ │ │ └─────────────────────────────────────────────────────┘ │ │ │ │ ┌─────────────────────┐ ┌─────────────────────────────┐ │ │ │ Распределение цен │ │ Регистрации пользователей │ │ │ │ (Чарт 8) │ │ (Чарт 10) │ │ │ └─────────────────────┘ └─────────────────────────────┘ │ └─────────────────────────────────────────────────────────────┘ ``` #### **Шаг 3.5: Настройте взаимодействия** - Свяжите все селекторы со всеми чартами - Настройте возможность клика по категории для фильтрации таблицы ### **Задание 4: Аналитические выводы (30 минут)** Напишите краткий аналитический отчет по вашему дашборду: 1. **Основные выводы:** - Какая общая выручка и количество заказов? - Какие категории товаров самые популярные? - Какие методы оплаты преобладают? 2. **Тренды:** - Есть ли сезонность в продажах? - Какие дни недели самые прибыльные? 3. **Топ-продавцы:** - Кто лидеры по продажам? - Есть ли связь между рейтингом и продажами? 4. **География:** - Из каких стран больше всего покупателей? - Есть ли страны с высоким средним чеком? 5. **Рекомендации:** - Что можно улучшить? - На какие категории сделать акцент? - Какие продавцы требуют внимания? ### **Критерии оценки** | Критерий | Макс. балл | |----------|------------| | Корректно создан датасет со всеми связями | 10 | | Созданы все 10 чартов | 20 | | Чарты информативны и правильно настроены | 20 | | Дашборд имеет логичную структуру | 15 | | Селекторы работают и фильтруют данные | 10 | | Добавлен заголовок и описание | 5 | | Написан аналитический отчет | 10 | | Креативность и дополнительные улучшения | 10 | | **ИТОГО** | **100** | ### **Дополнительные задания (для продвинутых)** Если вы справились с основным заданием, добавьте: 1. **RFM-анализ** - создайте чарт с сегментацией пользователей 2. **Когортный анализ** - постройте retention по месяцам 3. **Прогноз продаж** - используйте линейную регрессию 4. **Алерты** - настройте уведомления о падении продаж 5. **Мобильная версия** - оптимизируйте дашборд для телефона ### **Формат сдачи** Пришлите: 1. Скриншоты всех чартов 2. Скриншот полного дашборда 3. Текстовый файл с аналитическими выводами 4. Ссылку на дашборд (если доступен публично) Удачи в выполнении задания! 🚀