> ## Content Index
> Fetch the complete content index at: https://think-visualize.ru/llms.txt
> Use this file to discover other available public pages before exploring further.

# Apache Superset: от данных до дашборда
- URL: https://think-visualize.ru/superset-overview/
- Published: 2025-09-07T17:31:40.000Z
- Updated: 2026-03-20T08:57:56.000Z
- Author: Сергей 
- Tags: Инструменты

Часто для людей Apache Superset (Суперсет) — open-source альтернатива Tableau (Табло). И когда переходишь из Табло в Суперсет и изучаешь информацию по Суперсету, всё кажется очень сложным и не дружелюбным. Схема того, как это всё работает выглядит примерно так:

![](https://img3.teletype.in/files/2e/58/2e589c73-c47b-4d70-840b-c2c13bb71353.png)

Архитектура Apache Superset

Много всяких взаимосвязей, какая-то Jinja, для чего-то CSS и какой-то конфиг. В общем, выглядит сложно.

Схему я на самом деле переусложнил и попытался показать это так, как видел в самом начале знакомства с Суперсетом.

До этого я уже [рассказывал про наш опыт переезда из Табло в Суперсет](https://think-visualize.ru/tableau-to-superset-migration). В статье мы выяснили, что для погружения в любой BI инструмент важно научиться отвечать на следующие вопросы:

1. Как загрузить данные?
2. Как нарисовать график?
3. Как задать стиль графику?
4. Как расположить график на дашборд?
5. Как настроить взаимодействие пользователя с дашбордом?
6. Как задать стиль дашборду?

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

## 1\. Как загрузить данные?

В отличие от Табло в Суперсете нет системы экстрактов. Дашборды всегда работают в Live режиме. Поэтому ответ на вопрос: как загрузить данные в Superset? **Никак.**

![](https://img1.teletype.in/files/47/fa/47fa0703-6435-4902-bc52-c430230ad69c.png)

Поэтому почти всегда вопрос: «как что-то сделать в Суперсет?», например, посчитать метрику плавающим окном, превращается в: «как в моей базе данных написать запрос, который считает метрику плавающим окном?».

Но я чуть забегаю тут вперёд, подробнее дальше.

В Суперсете есть сущность датасета. Что это такое и для чего она нужна?

![](https://img3.teletype.in/files/68/24/6824ac29-f8e6-4efc-8d14-63128002748d.png)

Датасет ****—** способ собрать метаданные от базы данных

## 2.1\. Датасет хранит столбцы и логику

Датасет в первую очередь проводник мета-информации о таблице: название, столбцы и их типы данных.

Всю эту мета-информацию можно обогащать:

1. **Пользовательские метрики.** Это любые агрегатные выражения, которые потом отрисовываются на графиках.
2. **Вычисляемые поля.** Любые преображения данных, в которые зашивается какая-то дополнительная логика.

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

![](https://img4.teletype.in/files/b3/7d/b37da655-b31d-4994-8282-ac0a2f63a3f7.png)

После их добавления появляется возможность добавить их на график  
и построить нашу первую визуализацию:

![](https://img2.teletype.in/files/de/c3/dec33635-6ee6-4ded-9d45-6dd928150f8a.gif)

f(x) в dynamic\_date и GMV говорят о том, что это поля, добавленные пользователем

Так как наш первый график готов, самое время расположить его на дашборд:

![](https://img4.teletype.in/files/bf/79/bf7926b1-6831-419d-878b-1872841eed36.gif)

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

![](https://img2.teletype.in/files/92/7b/927bdce3-6b42-44ae-8d0b-6f66b037ff3b.png)

С базовым функционалом мы разобрались. Следующий этап — настроить более сложную логику для взаимодействия пользователя с дашбордом. Здесь из-за кустов выходит та самая Jinja.

### 2.2\. Jinja как способ сформировать логику

Лично для меня первое знакомство с Jinja (Джинжа) выглядело отталкивающим. Куча скобок, какие знаки вопроса, какие-то функции, что вообще происходит, зачем так сложно и вообще для чего, помогите?

![](https://img3.teletype.in/files/a1/f9/a1f909c7-7f4e-4a54-8056-2b3cf1fea841.gif)

В примере выше наглядное применение Jinja шаблонов:

1. Пользователь меняет временной срез. Меняется форматирование оси Х и период, за который выводится график.
2. Пользователь меняет группировку. Меняется то, в какой разбивке показывается график.

![](https://img3.teletype.in/files/a5/b3/a5b38e01-0e05-4be1-acc4-3e3f3bf66ac9.png)

Теперь давайте углубимся и поймём, что это такое.

Джинжа — шаблонизатор, написанный на Python (как и бэкенд Суперсета) и приближенный к его синтаксису. Поэтому если вы знакомы с этим языком программирования, то вам будет легко понимать, что вообще проихсодит  
в шаблонах.

Шаблонизатор направлен на работу с текстом. В нашем случае для 99% задач — помощь в генерации SQL.  
Cамый простой пример шаблона в Python — форматирование строк:

![](https://img2.teletype.in/files/d4/80/d4804467-af4f-429e-b65d-c1ffbf6ad518.png)

Подставляем данные из списка в заранее заданную строку

По сути это прокачанные f-строки из Питона, в которых реально много возможностей. Давайте взглянем на неё чуть подробнее, чтобы понять, как это работает и как мы можем этим управлять.

![](https://img2.teletype.in/files/90/ef/90ef33a9-897b-43dc-81c5-1171718a9ce0.png)

Принцип работы шаблонизатора

Условная схема работы шаблонизатора такая:

1. Есть шаблон
2. Есть внешние данные
3. Всё это обрабатывается программой (Джинжа)
4. Выводится финальный результат

Разберём эту схему на конкретном примере работы в Суперсете:

1. Шаблон — вычисляемое поле dynamic\_date для Оси Х.

![](https://img4.teletype.in/files/b0/4a/b04a7063-cc67-4248-980b-8492b2102a8d.png)

2\. Внешние данные — фильтр, проброшенный из дашборда.

![](https://img4.teletype.in/files/31/43/31431115-54a2-4e69-8720-0007eb0e1646.png)

В нашем случае на дашборде был выбран фильтр "Квартал", он передался в график, мы видим его в разделе Filters. И результатом работы шаблонизатора стал SQL код, содержащий выражение в ветке

```jinja
{% elif filter_values('dimension')|first == 'Квартал' %} 
  to_char(order_date, 'YYYY "Q"Q')
```

![](https://img2.teletype.in/files/d5/ce/d5cefcef-86ed-411c-bc44-33b0cf728b9d.png)

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

## 3\. Откуда данные в графике?

Теперь заглянем внутрь и поймём каким образом получается график.

Так как мы работаем на Live подключении, каждое обновление графика — запрос в базу данных, а все пилюли, что мы перетаскиваем при формирования графика — куски SQL кода, и то в какую часть запроса наше выражение отправится зависит от раздела (X-Axis, Metrics, Dimensions, Filters, Sort By, Row Limit), в который мы поле кладём.

![](https://img1.teletype.in/files/c8/70/c8702c0f-9e2b-46f0-b5b3-e91f2be3e22e.png)

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

![](https://img1.teletype.in/files/cb/0b/cb0b4255-98a9-4462-b2fe-5898bf032a1a.gif)

## 4\. База отдаёт данные

По итогу сформированный запрос идёт в базу и база отдаёт нам данные, которые Superset уже интерпретирует и отрисовывает.

![](https://img2.teletype.in/files/12/21/12219e25-a84b-44f8-8cf6-8d6c6c6c892c.png)

## 5\. График кастомизирует изображение

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

![](https://img1.teletype.in/files/ca/d3/cad38b14-9872-41be-91f9-8761cdcb00d9.png)

![](https://img4.teletype.in/files/bc/e7/bce7de9b-11fd-4110-9a78-0ba4b7e15f1e.gif)

## 6\. Кастомизация на дашборде

Это последний этап, на котором проявляются конфиги дашборда и CSS.

Благодаря ним можно изменить отображение и стили на самом дашборде. Как правило мы убираем лишнее: отступы, заголовки, линии. Всё для того, чтобы финальный продукт стал чище читался лучше.

![](https://img1.teletype.in/files/47/e7/47e7f3f2-5991-48b3-b8a1-e46b65b3cdfa.gif)

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

Также с дашборда можно кастомизировать внешнюю часть графиков.

## Отвечаем на вопросы

Мы разобрали практически весь функционал Superset и теперь готовы к ответу на вопросы:

1. Как загрузить данные?
  - Никак. Данные подгружаются динамически из SQL запроса, который вы задаёте в редакторе графика.
2. Как нарисовать график?
  - Подключить датасет с нужной таблицей, расположить нужные элементы в редакторе графика.
3. Как задать стиль графику?
  - Во вкладке кастомизация редактора графика, на дашборде через CSS.
4. Как расположить график на дашборд?
  - Создать график. Создать дашборд. В редактировании дашборда расположить нужный график.
5. Как настроить взаимодействие пользователя с дашбордом?
  - С помощью фильтров на дашборде и Jinja в графиках для отработки логики.
6. Как задать стиль дашборду?
  - Через CSS на дашборде

## Итого

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

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