Зарегистрируйтесь, чтобы продолжить обучение

Линейный график Визуализация в Superset

Продолжаем изучать темы по визуализации данных с использованием биоинструмента Apache Superset, с которым познакомились на предыдущих уроках. Сегодняшняя задача связана с построением line-чартов (линейных графиков) в этом инструменте.

Подключение к данным

Для начала работы необходимо подключиться к базе данных. Для этого перейдем в настройки (Settings) и найдем раздел Database Connections. В нем выберем PostgreSQL базу данных с необходимыми правами (SELECT, UPDATE, DELETE, INSERT). Допишем параметры подключения: Host, Port, Database name, Username, Password. После подключения к базе данных можно приступать к созданию графиков.

Database

Создание линейного графика

Перейдем в раздел Datasets и выберем подключенную PostgreSQL базу. Выберем схему Public и основную таблицу с продажами. Выберем добавить новый график (Add chart) и выберем тип Line Chart.

Apache Superset предоставляет расширенные возможности по сравнению с Google Sheets:

  • Построение нескольких графиков в различных разрезах
  • Объединение графиков
  • Добавление точек данных
  • Метки данных
  • Процентные показатели
  • Линии тренда
  • Настройка частоты повторений

Для построения графика необходимо выбрать ось X (X-AXIS) и ось Y (METRICS). В качестве оси X выберем дату продажи, а в качестве оси Y - количество проданных товаров. После этого можно сохранить график и посмотреть результат.

Конкретно в Apache SuperSets используется своя терминология. Давайте подробнее посмотрим каждый из терминов.

  • X-axis. Измерение по горизонтали, что будем на нашем графике откладывать внизу.
  • Metrics. Это измерение по вертикали, что будем откладывать по вертикальной оси. Мы можем иметь в сравнении агрегированные данные и их уже с помощью самого суперсета собирать в агрегат так, как нам это нужно.
  • Columns. Это измерения, которые должны быть агрегированы и категоризированы. То есть, это как раз те колонки, которые нужно вывести в сам график.

И есть две дополнительные характеристики, которые используются в практически любом графике или диаграмме. Это Dimensions and Customized.

  • Dimensions это выбор измерений для расщепления грани. Что это значит? Допустим, строили продажи просто по дням, первое измерение наше было день. И с помощью dimensions мы можем добавить сюда еще одно измерение, еще одно поле для группировки. В результате расщепления для каждого продукта свой отдельный график. И агрегат, соответственно, будет как по дате, так и по продукту.
  • Customize это пользовательские настройки, которые управляют цветом графиков, нанесением точек, линиями трендов, метками данных, выстраиванием легенды, присвоением альясов и так далее.

Chart

Работа с SQL Lab

Также Superset предоставляет интерфейс для сложных визуализаций, который называется SQL Lab. В нем можно писать сложные запросы, объединять таблицы, создавать новые датасеты и визуализации.

Перейдем в раздел SQL Lab и создадим новый запрос. Напишем запрос с JOIN таблиц sales, products:

SELECT
  s.sale_date,
  SUM(p.price * s.quantity) AS total_sales
FROM sales s
JOIN products p ON s.product_id = p.product_id
GROUP BY 1
ORDER BY 2;

Затем нажимаем Save dataset и указываем название датасета. В открывшемся окне мы теперь можем построить график для нашей сложной выборки.


Самостоятельная работа

В уроке «Подключение к данным» мы подключили базу flightsdb. В ней содержатся данные о авиаперевозках за два месяца — с 16 июля по 14 сентября 2017 года.

Схема базы данных выглядит так:

Schema

Задание № 1

Представьте, что руководство аэропорта Домодедово просит вас проанализировать ежедневную загрузку аэропорта за два месяца.

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

Нажмите сюда, чтобы увидеть подсказку

В задании вам потребуется код аэропорта Домодедово — DME.

Чтобы получить необходимые данные, в SQL Lab нужно использовать следующий запрос:

SELECT
  DATE(f.scheduled_arrival) AS arrival_date,
  COUNT(t.passenger_id) AS passenger_count
FROM
  flights AS f
LEFT JOIN
  ticket_flights AS tf
  ON f.flight_id = tf.flight_id
LEFT JOIN
  tickets AS t
  ON tf.ticket_no = t.ticket_no
WHERE
  f.arrival_airport = 'DME'
GROUP BY
  DATE(f.scheduled_arrival)
ORDER BY
  DATE(f.scheduled_arrival);

Далее в меню CREATE CHART нужно выбрать Line Chart и следующие данные для визуализации:

  • X-AXISarrival_date
  • METRICSpassenger_count

Задание № 2

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

В задании вам понадобятся коды аэропортов:

  • Шереметьево — SVO
  • Внуково — VKO

Нажмите сюда, чтобы увидеть подсказку

Чтобы получить необходимые данные, в SQL Lab нужно использовать следующий запрос:

SELECT
  f.arrival_airport,
  DATE(f.scheduled_arrival) AS arrival_date,
  COUNT(t.passenger_id) AS passenger_count
FROM
  flights AS f
LEFT JOIN
  ticket_flights AS tf
  ON f.flight_id = tf.flight_id
LEFT JOIN
  tickets AS t
  ON tf.ticket_no = t.ticket_no
WHERE
  f.arrival_airport IN
  (
      'DME',
      'SVO',
      'VKO'
  )
GROUP BY
  f.arrival_airport,
  DATE(f.scheduled_arrival)
ORDER BY
  f.arrival_airport,
  DATE(f.scheduled_arrival);

В меню CREATE CHART выберите Line Chart и следующие данные для визуализации:

  • X-AXISarrival_date
  • DIMENSIONSarrival_airport
  • METRICSpassenger_count

В итоге получится такой график:

Result


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

  1. Документация Preset по линейным графикам

Для полного доступа к курсу нужен базовый план

Базовый план откроет полный доступ ко всем курсам, упражнениям и урокам Хекслета, проектам и пожизненный доступ к теории пройденных уроков. Подписку можно отменить в любой момент.

Получить доступ
1000
упражнений
2000+
часов теории
3200
тестов

Открыть доступ

Курсы программирования для новичков и опытных разработчиков. Начните обучение бесплатно

  • 130 курсов, 2000+ часов теории
  • 1000 практических заданий в браузере
  • 360 000 студентов
Отправляя форму, вы принимаете «Соглашение об обработке персональных данных» и условия «Оферты», а также соглашаетесь с «Условиями использования»

Наши выпускники работают в компаниях:

Логотип компании Альфа Банк
Логотип компании Aviasales
Логотип компании Yandex
Логотип компании Tinkoff