$ sudo teach IT

Скрипт из видео:

DROP TABLE IF EXISTS orders;

CREATE TABLE orders (
    order_id        SERIAL PRIMARY KEY,
    internal_uuid   UUID NOT NULL,
    order_date      DATE NOT NULL,
    customer_name   VARCHAR(100) NOT NULL,
    city            VARCHAR(100) NOT NULL,
    category        VARCHAR(50) NOT NULL,
    product_name    VARCHAR(150) NOT NULL,
    quantity        INT NOT NULL,
    sales_amount    NUMERIC(10,2) NOT NULL,
    discount        NUMERIC(4,2) NOT NULL,
    conversion_rate NUMERIC(4,2) NOT NULL
);


INSERT INTO orders
(internal_uuid, order_date, customer_name, city, category, product_name, quantity, sales_amount, discount, conversion_rate)
VALUES
('4d95d7e1-3cb8-4d1e-a0a5-0a0f4f40b101','2025-01-03','Иван Петров','Москва','Электроника','Ноутбук Lenovo',1,126500.00,0.10,0.27),
('7d2a61d8-85db-4b5e-aef0-94d4389d8102','2025-01-05','Анна Смирнова','Санкт-Петербург','Электроника','Монитор Samsung',2,27891.12,0.00,0.18),
('ee06e4fd-f9cf-4dc7-ae76-59e3555fa903','2025-01-06','Павел Иванов','Казань','Офис','Клавиатура Logitech',3,15342.56,0.05,0.34),
('83bc19b7-8862-44df-982f-c2b6f7d38d04','2025-01-09','Елена Орлова','Екатеринбург','Офис','Мышь Logitech',5,8450.00,0.15,0.22),
('16fd0c1e-9070-46e0-bb39-6035b8742f05','2025-01-12','Дмитрий Кузнецов','Новосибирск','Мебель','Офисное кресло',1,32190.00,0.08,0.29),
('3b40d34b-cb50-43fd-91f7-20d8f55d2d06','2025-01-15','Мария Волкова','Москва','Мебель','Письменный стол',2,48700.00,0.12,0.31),
('8d2f6290-d6c3-4869-a69f-03b8b58e4307','2025-01-18','Сергей Морозов','Краснодар','Электроника','Принтер HP',1,21990.00,0.07,0.24),
('af6fc38e-02d8-4db9-b314-f24f1b76a908','2025-01-20','Ольга Белова','Самара','Офис','Веб-камера Logitech',4,18450.00,0.00,0.20),
('d2153b68-03a2-41f3-9fd0-7fd81bb21909','2025-01-24','Алексей Соколов','Ростов-на-Дону','Электроника','SSD Samsung 1TB',2,30990.00,0.05,0.26),
('97dfcf4f-7e66-4f90-a6d7-b4a6c9bff110','2025-01-27','Наталья Алексеева','Пермь','Офис','Гарнитура Jabra',2,17280.00,0.10,0.19),
('a8f72c69-fdc7-4655-92e8-5b7d5dcf9111','2025-02-02','Игорь Николаев','Москва','Электроника','Планшет Xiaomi',1,35990.00,0.06,0.35),
('fd3c84df-c0c5-4718-8514-2caa9cb43212','2025-02-06','Виктория Лебедева','Сочи','Мебель','Стеллаж',2,28750.00,0.09,0.30);

На предыдущем уроке мы установили Apache Superset, развернули PostgreSQL и подготовили рабочее окружение. Теперь пришло время подключить реальные данные к аналитической платформе.

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

В Apache Superset такую роль выполняет Dataset. Dataset является одной из самых важных сущностей платформы. Именно на его основе строятся графики, таблицы, KPI-показатели и дашборды. От качества настройки Dataset напрямую зависит удобство дальнейшей работы аналитика.

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

Ключевые термины

  • Dataset — подготовленный источник данных для построения визуализаций в Superset.
  • Metadata (метаданные) — дополнительная информация о структуре данных, которая помогает Superset правильно работать с колонками.
  • Column — отдельное поле или столбец в наборе данных.
  • Data Type — тип данных колонки, например число, текст или дата.
  • Temporal Column — колонка с датой или временем.
  • Metric — вычисляемый показатель, например сумма продаж или средний чек.
  • Dimension — поле, используемое для группировки данных.

Что такое Dataset

Когда аналитик впервые начинает работать с Superset, ему может показаться, что Dataset — это просто таблица из базы данных. На самом деле это не совсем так.

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

Dataset представляет собой аналитическое представление этих данных внутри Superset. Можно сказать, что Dataset является прослойкой между базой данных и будущими визуализациями.

Все графики, KPI и дашборды строятся именно на основе Dataset. Благодаря этому Superset понимает, какие поля являются датами, какие содержат числовые значения, а какие используются для группировок. Поэтому работа аналитика практически всегда начинается именно с подготовки Dataset.

Почему Dataset так важен

Представим, что в таблице интернет-магазина есть колонка order_date. Для базы данных это просто поле. Но для Superset важно понимать, что это дата. Тогда платформа сможет автоматически строить временные графики, выполнять группировку по месяцам и работать с временными фильтрами.

Аналогичная ситуация возникает с числовыми показателями. Колонка sales_amount может использоваться для расчета выручки.

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

Создание первого Dataset

Начнем с создания Dataset на основе таблицы продаж. Для этого откроем раздел Datasets. После открытия раздела нажмем кнопку + Dataset. Откроется форма создания нового Dataset.

Superset попросит выбрать три параметра:

  • базу данных;
  • схему;
  • таблицу.

В нашем случае выбираем подключенную ранее базу PostgreSQL, затем нужную схему и таблицу с продажами. После подтверждения Dataset появится в списке доступных наборов данных.

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

Изучаем структуру Dataset

Открыв Dataset, можно увидеть список всех доступных колонок. Каждая колонка имеет собственные настройки. Именно здесь аналитик определяет, как Superset будет воспринимать конкретное поле.

Например, колонка с датой должна использоваться для временных графиков, а колонка с суммой заказа — для расчетов выручки. Поэтому важно внимательно проверить настройки каждого поля.

Работа с типами данных

Одной из самых важных задач является проверка типов данных. Superset старается определить их автоматически, но иногда делает это неверно. Например, поле с датой может быть определено как обычный текст. В таком случае временные графики работать не будут. Поэтому после создания Dataset рекомендуется проверить все ключевые поля.

Особое внимание следует уделить:

  • датам;
  • денежным показателям;
  • количественным значениям;
  • идентификаторам.

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

Настройка отображения колонок

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

В отчетах и графиках такая колонка обычно не нужна. В подобных случаях колонку можно скрыть. Это упрощает работу аналитиков и делает интерфейс более понятным. Хорошо настроенный Dataset содержит только действительно полезные поля.

Dataset как фундамент будущего дашборда

На данном этапе может показаться, что настройка Dataset — это скучная техническая работа. На практике именно здесь закладывается фундамент будущей аналитической системы. Большинство проблем в отчетах возникают не из-за графиков, а из-за плохо подготовленных данных.

Если Dataset настроен качественно:

  • визуализации строятся быстрее;
  • пользователи реже допускают ошибки;
  • отчеты становятся более понятными;
  • поддержка дашбордов требует меньше времени.

Поэтому опытные BI-аналитики уделяют подготовке Dataset очень большое внимание.

Наиболее частые ошибки

  • Сразу переходить к построению графиков.
    Многие новички пропускают этап настройки Dataset. В результате позже приходится постоянно возвращаться и исправлять ошибки.

  • Не проверять типы данных.
    Автоматическое определение типов работает хорошо, но не идеально. Особенно часто возникают проблемы с датами.

  • Оставлять технические колонки доступными пользователям.
    Лишние поля усложняют работу и могут запутать пользователей дашбордов.

  • Использовать Dataset как копию таблицы.
    Dataset должен быть подготовленным аналитическим представлением данных, а не просто зеркалом базы данных.

  • Не проверять данные после создания Dataset.
    Перед началом анализа полезно убедиться, что все поля отображаются корректно.

Наиболее частые вопросы

  • Можно ли создать несколько Dataset на основе одной таблицы?
    Да. Это распространенная практика. Один Dataset может использоваться для продаж, другой — для анализа клиентов, третий — для финансовых показателей.

  • Изменяются ли данные в базе при настройке Dataset?
    Нет. Dataset хранит только настройки внутри Superset и не влияет на исходные данные.

  • Обязательно ли настраивать все колонки?
    Нет. Но рекомендуется проверить все поля, которые будут использоваться в отчетах.

  • Что делать, если Superset неправильно определил дату?
    Необходимо открыть настройки колонки и вручную указать корректный тип данных.

  • Можно ли использовать Dataset в нескольких дашбордах одновременно?
    Да. Один Dataset может использоваться в любом количестве визуализаций и дашбордов.

Итоги

В этом уроке мы познакомились с одной из ключевых сущностей Apache Superset — Dataset.

Мы разобрались, чем Dataset отличается от обычной таблицы базы данных, научились создавать новые наборы данных, настраивать колонки и проверять типы данных.

Также мы увидели, насколько важна качественная подготовка Dataset для дальнейшей аналитики и создания дашбордов.

В следующем уроке мы продолжим работу с данными и научимся создавать вычисляемые колонки и пользовательские метрики, которые позволят получать новые бизнес-показатели без изменения структуры базы данных.

На следующий урок