До этого момента мы работали в основном через визуальный интерфейс Apache Superset. Мы создавали Dataset, настраивали метрики, строили графики, собирали Dashboard и добавляли интерактивность.
Такого подхода достаточно для многих задач. Но в реальной работе аналитика часто возникает ситуация, когда исходной таблицы недостаточно.
Например, данные о заказах лежат в одной таблице, данные о клиентах — в другой, а информация о товарах — в третьей. Или нужно заранее агрегировать данные по месяцам. Или подготовить специальную выборку, которая удобнее подходит для конкретного отчета. В таких случаях на помощь приходит SQL Lab.
SQL Lab — это встроенный инструмент Apache Superset для выполнения SQL-запросов. Он позволяет исследовать данные, проверять гипотезы, объединять таблицы, рассчитывать показатели и создавать виртуальные Dataset на основе SQL-запросов.
В этом уроке мы познакомимся с SQL Lab, выполним первые запросы к данным интернет-магазина и создадим виртуальный Dataset, который сможем использовать для построения графиков и дашбордов.
Ключевые термины
- SQL Lab — раздел Apache Superset для выполнения SQL-запросов к подключенным базам данных.
- SQL Editor — рабочая область, где аналитик пишет и запускает SQL-запросы.
- Query Result — результат выполнения SQL-запроса.
- Virtual Dataset — Dataset, созданный не напрямую из таблицы, а на основе SQL-запроса.
- Physical Dataset — Dataset, созданный на основе существующей таблицы базы данных.
- Schema — логическая область внутри базы данных, в которой находятся таблицы и другие объекты.
- Database Connection — подключение Superset к базе данных.
- Saved Query — сохраненный SQL-запрос, к которому можно вернуться позже.
- Preview — предварительный просмотр результата запроса.
- Aggregation — объединение строк данных с помощью SUM, COUNT, AVG и других функций.
Зачем нужен SQL Lab
Когда мы создавали первые визуализации, нам было достаточно готового Dataset. Мы выбирали метрики, группировки и фильтры прямо в интерфейсе Explore. Это удобный и быстрый способ работы.
Но иногда аналитик сталкивается с задачей, которую проще решить через SQL. Представим, что в интернет-магазине есть отдельная таблица заказов и отдельная таблица клиентов. В таблице заказов хранится сумма покупки и дата заказа, а в таблице клиентов — город, дата регистрации и клиентский сегмент.
Если нужно построить отчет по выручке в разрезе клиентских сегментов, одной таблицы заказов уже недостаточно. Нужно объединить данные. Для таких сценариев и используется SQL Lab. SQL Lab позволяет писать запросы прямо внутри Superset, получать результат и при необходимости превращать его в новый Dataset для дальнейшей визуализации.
Чем SQL Lab отличается от Explore
Explore предназначен для создания визуализаций. В нем аналитик выбирает Dataset, метрики, группировки и тип графика. SQL Lab решает другую задачу. Это место для подготовки и исследования данных. Если Explore отвечает на вопрос Как визуализировать данные? то SQL Lab отвечает на вопрос Какие данные нужно подготовить для анализа?.
Обычно рабочий процесс выглядит так: сначала аналитик проверяет данные в SQL Lab, пишет запрос, объединяет таблицы или считает дополнительные поля, а затем сохраняет результат как Dataset и строит визуализации уже в Explore. Такой подход особенно полезен, когда исходные данные не идеально подготовлены для BI-аналитики.
Как открыть SQL Lab
Чтобы перейти в SQL Lab, нужно открыть соответствующий раздел в верхнем меню Superset. Обычно он называется SQL Lab.
После перехода открывается SQL Editor. В нем необходимо выбрать подключение к базе данных, схему и при необходимости таблицу.
Если вы работаете с нашим учебным проектом, выбираем подключенную ранее базу PostgreSQL, в которой хранятся данные интернет-магазина электроники. После выбора источника можно писать и запускать SQL-запросы.
Первый запрос в SQL Lab
Начнем с простого запроса. Допустим, у нас есть таблица заказов:
SELECT *
FROM orders
LIMIT 100;
Такой запрос позволяет быстро посмотреть первые строки таблицы. Для аналитика это важный этап. Перед созданием отчетов всегда полезно понять, какие поля есть в данных, как они называются и какие значения содержат.
После выполнения запроса Superset покажет результат в нижней части редактора. Это похоже на работу в обычном SQL-клиенте, но с важным преимуществом: мы остаемся внутри BI-платформы и можем сразу использовать результат для дальнейшей аналитики.
Исследование данных через SQL
SQL Lab удобно использовать не только для просмотра таблиц, но и для первичного анализа. Например, можно посчитать количество заказов:
SELECT COUNT(*) AS orders_count
FROM orders;
Можно посмотреть выручку по категориям:
SELECT
category,
SUM(sales_amount) AS revenue
FROM orders
GROUP BY category
ORDER BY revenue DESC;
Можно проверить продажи по месяцам:
SELECT
DATE_TRUNC('month', order_date) AS month,
SUM(sales_amount) AS revenue
FROM orders
GROUP BY month
ORDER BY month;
Такие запросы помогают быстро проверить данные до создания графиков. Если результат запроса выглядит странно, лучше обнаружить проблему на этом этапе, а не после сборки Dashboard.
Что такое виртуальный Dataset
До этого мы создавали Dataset на основе обычной таблицы базы данных. Такой Dataset можно назвать физическим, потому что он напрямую связан с таблицей.
Виртуальный Dataset создается иначе. Он строится на основе SQL-запроса. Например, мы можем написать запрос, который заранее объединяет заказы с клиентами, рассчитывает выручку, прибыль и группирует данные по месяцам.
После этого результат запроса можно сохранить как Dataset. Для Superset такой Dataset будет выглядеть почти так же, как обычный. На его основе можно строить графики, KPI и дашборды. Разница в том, что источником данных будет не таблица, а SQL-запрос.
Когда нужен виртуальный Dataset
Виртуальный Dataset полезен, когда исходная таблица не подходит для визуализации напрямую. Например, данные хранятся в нескольких таблицах, и их нужно объединить.
Или в таблице слишком много технических полей, а для отчета нужен только небольшой набор колонок.
Или необходимо заранее рассчитать показатели, которые неудобно собирать через интерфейс Explore.
Для интернет-магазина виртуальный Dataset может быть полезен в таких ситуациях:
- анализ продаж по клиентским сегментам;
- объединение заказов с таблицей товаров;
- расчет показателей по месяцам;
- подготовка данных для управленческого Dashboard;
- создание отдельного набора данных для маркетингового отчета.
Таким образом, виртуальный Dataset позволяет аналитику гибко подготавливать данные под конкретную задачу.
Создание виртуального Dataset
Представим, что нам нужен Dataset для анализа продаж по месяцам и категориям.
В SQL Lab пишем запрос:
SELECT
DATE_TRUNC('month', order_date) AS order_month,
category,
SUM(sales_amount) AS revenue,
SUM(profit) AS profit,
COUNT(DISTINCT order_id) AS orders_count
FROM orders
GROUP BY order_month, category
ORDER BY order_month, category;
Этот запрос сразу готовит данные для анализа. В результате каждая строка будет описывать продажи одной категории за один месяц. Такой Dataset удобно использовать для построения линейных графиков, таблиц и сравнительных отчетов. После выполнения запроса в SQL Lab результат можно сохранить как Dataset.
Для этого в интерфейсе Superset используется действие сохранения результата запроса как Dataset. После сохранения новый набор данных появится в разделе Datasets.
Почему не стоит делать слишком сложные виртуальные Dataset
Возможность писать SQL внутри Superset очень удобна, но ее важно использовать аккуратно. Иногда начинающие аналитики создают огромные запросы, в которых сразу содержатся десятки JOIN, подзапросов и вычислений.
Формально это может работать, но поддерживать такие Dataset становится сложно. Если запрос непонятен даже автору через неделю, с ним будет трудно работать. Поэтому виртуальные Dataset лучше делать понятными и ограниченными по задаче. Один Dataset — одна аналитическая цель.
Например, отдельный Dataset для продаж по месяцам, отдельный — для анализа клиентов, отдельный — для товаров. Такой подход упрощает поддержку дашбордов и делает проект более аккуратным.
Saved Queries
SQL Lab можно использовать не только для создания Dataset, но и для сохранения полезных запросов. Если аналитик часто возвращается к одному и тому же запросу, его можно сохранить. Это удобно для проверки данных, повторяющихся расчетов или подготовки отчетов. Однако важно не путать сохраненный запрос и виртуальный Dataset.
- Saved Query — это просто сохраненный SQL-код.
- Virtual Dataset — это источник данных, который можно использовать в Explore и Dashboard.
Если запрос нужен только для проверки данных, его достаточно сохранить как Saved Query. Если на его основе нужно строить графики, лучше создать Virtual Dataset.
SQL Lab как рабочее место аналитика
В реальной работе SQL Lab часто используется как промежуточный слой между базой данных и визуализациями. Аналитик сначала исследует данные, пишет запросы, проверяет гипотезы и только потом переносит результат в Dashboard.
Такой подход помогает избежать множества ошибок. Например, если выручка на графике выглядит слишком высокой, можно вернуться в SQL Lab и проверить расчет вручную.
Если фильтр на Dashboard работает странно, можно выполнить запрос и посмотреть, какие данные реально попадают в выборку. SQL Lab помогает аналитику не работать вслепую.
Наиболее частые ошибки
-
Пытаться решать все задачи только через Explore.
Explore удобен для визуализаций, но сложную подготовку данных часто проще выполнить через SQL Lab. -
Создавать слишком сложные виртуальные Dataset.
Большие и запутанные SQL-запросы сложно поддерживать и проверять. -
Не проверять результат запроса перед сохранением Dataset.
Перед созданием виртуального Dataset нужно убедиться, что запрос возвращает корректные данные. -
Путать Saved Query и Virtual Dataset.
Сохраненный запрос — это просто SQL-код. Виртуальный Dataset можно использовать для построения графиков. -
Использовать
SELECT *для виртуального Dataset.
Для аналитического Dataset лучше явно указать нужные поля, чтобы не переносить лишние данные. -
Не учитывать производительность запроса.
Если запрос тяжелый, все графики на его основе тоже будут работать медленно. -
Создавать отдельный Dataset под каждую мелкую задачу.
Избыточное количество наборов данных усложняет поддержку проекта.
Наиболее частые вопросы
-
Нужно ли знать SQL для работы с SQL Lab?
Да. SQL Lab предназначен именно для выполнения SQL-запросов. Для этого достаточно базового уровня SQL, который постепенно можно развивать. -
Можно ли строить графики прямо из результата SQL-запроса?
Да. Результат запроса можно сохранить как виртуальный Dataset, а затем использовать его в Explore. -
Чем виртуальный Dataset отличается от обычного Dataset?
Обычный Dataset создается на основе таблицы базы данных. Виртуальный Dataset создается на основе SQL-запроса. -
Изменяет ли SQL Lab данные в базе?
Если выполнять только SELECT-запросы, данные не изменяются. В рамках аналитики обычно используют именно SELECT. -
Можно ли использовать JOIN в SQL Lab?
Да. Это один из самых полезных сценариев SQL Lab, особенно когда данные распределены по нескольким таблицам. -
Можно ли редактировать виртуальный Dataset после создания?
Да. Его можно открыть в настройках Dataset и изменить SQL-запрос или метаданные. -
Когда лучше не использовать виртуальный Dataset?
Если обычная таблица уже хорошо подготовлена для анализа, создавать дополнительный виртуальный Dataset необязательно.
Итоги
В этом уроке мы познакомились с SQL Lab — встроенным инструментом Apache Superset для работы с SQL-запросами.
Мы разобрались, зачем аналитикам нужен SQL Lab, чем он отличается от Explore и как помогает подготавливать данные для визуализаций. Также мы научились выполнять запросы, исследовать таблицы и создавать виртуальные Dataset на основе SQL.
Теперь у нас есть важный инструмент для более гибкой аналитики. Если обычного Dataset недостаточно, мы можем подготовить нужную выборку через SQL и использовать ее в графиках и дашбордах.
В следующем уроке мы продолжим работу с подготовкой данных и разберем, как использовать JOIN, агрегации и вычисления для создания более сложных аналитических наборов данных.