Продолжаем изучать продвинутую аналитику с использованием Apache Superset. В этом уроке мы познакомимся с двумя новыми типами визаулизациями: это точечные графики (Scatterplot) и это карты мира (World Map).
Scatterplot
Начнем с точечных графиков. Для работы нам понадобится наша база PostgreSQL с таблицами продаж. А для карт будем использовать тестовый документ, который уже встроен в демо-воркспейсы Superset – так будет проще.
Давайте сначала разберемся с точечными графиками. Их особенность в том, что по одному измерению у нас может быть несколько значений. Например, если мы смотрим продажи по датам, то на одну дату может приходиться несколько точек – разные категории товаров или типы транспорта. Это очень удобно для поиска тенденций, зависимостей, сезонности.
Создадим такой график. Заходим в SQL Lab и пишем запрос:
SELECT
c.age,
(p.price * s.quantity) AS purchase_amount,
c.customer_id,
p.name AS product_name
FROM sales s
JOIN customers c ON s.customer_id = c.customer_id
JOIN products p ON s.product_id = p.product_id
ORDER BY c.age;
Что мы здесь делаем? Соединяем таблицы продаж, клиентов и продуктов. Нам нужны сумма продажи, возраст покупателя и название продукта.
После выполнения запроса нажимаем Create Chart. Важный момент – сначала сохраняем наш запрос как датасет. Теперь выбираем тип графика Scatterplot.
Настраиваем график:
- По горизонтали (x-axis) ставим возраст
- В метрику (metrics) добавляем purchase_amount с агрегацией SUM
- Нажимаем Update Chart
Что интересного видим на графике? Во-первых, больше всего покупок совершили покупатели возраста 21 год. Во-вторых, в остальном, за редкими выбросами, объемы продаж среди всех возрастов одинаковы.
Давайте сделаем график интереснее – добавим разбивку по продуктам. Просто перетаскиваем product_name в dimension. Теперь для каждой даты у нас несколько точек разного цвета – каждая для своего продукта. Правда, если продуктов много, график может стать немного запутанным. В таком случае можно использовать не названия продуктов, а категории – будет нагляднее.
World Map
Теперь давайте посмотрим на карты мира. Это очень эффектный способ визуализации, когда нужно показать данные в разрезе стран. У карт всего три основных параметра:
- Country column – поле с названиями стран (важно: на английском и в формате, который понимает Superset)
- Metric – значение, которое мы хотим показать для каждой страны
- Show bubbles – можно добавить кружки разного размера, показывающие величину значения
Давайте посмотрим на примере данных о вакцинации COVID-19. В демо-данных есть таблица COVID_vaccines. Выбираем из нее страну (country_name) и количество клинических проб вакцины - COUNT(*)
.
Что интересного показывает карта? В США было проведено 63 пробы – самый большой кружок, в Китае 20, в Канаде 14, в Индии, Турции и России по 12.
Такие карты особенно полезны, когда работаешь с международной компанией и нужно показать:
- Распределение филиальной сети
- Выручку по странам
- Долю прибыли по регионам
Иногда пользователям проще работать с конкретными цифрами, но для презентаций карты – отличный инструмент. Они наглядно показывают географическое распределение данных и очень эффектно выглядят.
Выводы
Сегодня мы научились работать с двумя новыми типами визуализаций в Apache Superset: точечными графиками и картами мира. Точечные графики помогают найти зависимости и тенденции в данных, а карты мира – показать географическое распределение. Теперь вы можете использовать эти инструменты для анализа данных и принятия обоснованных решений.
Самостоятельная работа
В уроке «Подключение к данным» мы подключили базу flightsdb. В ней содержатся данные о авиаперевозках за два месяца — с 16 июля по 14 сентября 2017 года.
Схема базы данных выглядит так:
Задание № 1
В этом задании вам предстоит визуализировать на карте маршруты из Домодедово (код аэропорта — DME). Для этого мы воспользуемся графиком DECK.GL ARC, входящим в Preset.
Нажмите сюда, чтобы увидеть подсказку
Чтобы составить графики, используйте координаты аэропортов вылета и прилета. Они хранятся в поле coordinates таблицы airport_data. В этом поле вы найдете два значения:
- Долгота — longitude
- Широта — latitude
Чтобы сделать визуализацию, сохраните полученные данные как датасет.
Чтобы получить необходимые данные, в SQL Lab нужно использовать следующий запрос:
SELECT
ad1.coordinates[0] AS departure_longitude,
ad1.coordinates[1] AS departure_latitude,
ad2.coordinates[0] AS arrival_longitude,
ad2.coordinates[1] AS arrival_latitude
FROM
flights AS f
INNER JOIN
airports_data AS ad1
ON f.departure_airport = ad1.airport_code
INNER JOIN
airports_data AS ad2
ON f.arrival_airport = ad2.airport_code
WHERE
f.departure_airport = 'DME';
Чтобы сделать визуализацию, сохраните полученные данные как датасет. Затем перейдите в меню CREATE CHART. Выберите DECK.GL ARC и следующие данные для визуализации:
START LONGITUDE & LATITUDE
—departure_longitude / departure_latitude
END LONGITUDE & LATITUDE
—arrival_longitude / arrival_latitude
Результат будет выглядеть так:
Дополнительные материалы
Для полного доступа к курсу нужен базовый план
Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.