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

Вычисляемые поля и смешивание данных Визуализация в Superset

В этом уроке мы поговорим о двух важных возможностях Apache Superset: вычисляемых полях (Calculated Fields) и объединении данных (Data Blending). Это можно представить как работу с данными в двух направлениях: *Calculated Fields расширяет данные "вертикально" – добавляет новые колонки *Data Blending расширяет "горизонтально" – добавляет новые данные

Если говорить на языке SQL, то Calculated Fields похож на ADD COLUMN, а Data Blending похож на UNION операции.

Calculated Fields

Начнем с вычисляемых полей. В Superset есть три основных типа вычислений:

  1. Арифметические действия
    • Сложение, вычитание, умножение
    • Возведение в степень
    • Любые математические операции
  2. Агрегация
    • Базовые функции: MIN, MAX, AVG, SUM, COUNT
    • Дополнительные: COUNT DISTINCT и другие
    • Можно комбинировать с условиями
  3. Условные вычисления Используем CASE для создания условной логики:
CASE
    WHEN условие THEN результат
    ELSE альтернатива
END as новая_колонка

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

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;

Schema

Добавим в Dimension колонку age. В Metrics добавим условие:

CASE
    WHEN age < 30 THEN 0
    ELSE SUM(purchase_amount)
END

Мы исключаем из анализа все продажи покупателей младше 30. После применения видим, как изменились пропорции:

Schema

Хотя Superset и позволяет делать сложные вычисления, лучше тяжелые расчеты выполнять на уровне ETL или базы данных. BI-инструмент лучше использовать для визуализации и легких трансформаций.

Data Blending

Теперь поговорим об объединении данных (Data Blending). Superset может работать с разными источниками:

  1. Файлы:
    • Excel, CSV, TXT
    • XML, JSON
    • Access
  2. Базы данных:
    • SQL Azure
    • MySQL
    • MS SQL Server
    • Oracle
    • Apache Hadoop
  3. Внешние сервисы:
    • CRM системы
    • 1C
    • Яндекс.Директ, Метрика
    • Google Analytics
    • Социальные сети
  4. Облачные хранилища:
    • Google Drive
    • Яндекс.Диск

Чтобы объединить данные из разных источников, нужно загрузить их в Superset и создать новый датасет. После этого можно использовать SQL Lab для объединения таблиц через JOIN или UNION.

Перед объединением убедитесь, что структура данных совместима. Лучше стандартизировать названия колонок и типы данных заранее. Также для сложных интеграций лучше использовать ETL-процессы.

И последнее: не пытайтесь делать слишком сложные трансформации в Superset. Этот инструмент отлично подходит для визуализации и анализа, но тяжелую обработку данных лучше делать на уровне базы данных или ETL-процессов.

Выводы

Сегодня мы познакомились с двумя важными возможностями Apache Superset: Calculated Fields и Data Blending. Эти инструменты помогают расширить возможности работы с данными и создать более сложные визуализации. Но помните, что лучше всего использовать Superset для визуализации и анализа, а сложные трансформации делать на уровне базы данных или ETL-процессов.


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

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

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

Schema

Задание № 1

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

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

Чтобы выполнить это задание, нужно:

  • Добавить таблицу в дашборд
  • Добавить фильтры по указанным полям
  • Отфильтровать класс обслуживания Business и аэропорт вылета ROV

Результат будет выглядеть так:

Result2

Задание № 2

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

  • arrival_airport: SVO, VKO, DME
  • fare_conditions: Business, Comfort

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

Чтобы выполнить это задание, нужно:

  • В пункте QUERY MODE перейти в AGGREGATE
  • DIMENSIONS: departure_airport, arrival_airport
  • METRICS: COUNT(fare_conditions)
  • FILTERS: arrival_airport IN ('SVO', 'VKO', 'DME') fare_conditions = 'Business' OR fare_conditions = 'Comfort'

Результат будет выглядеть так:

Result2

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

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

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

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

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

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

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

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