-
Использовать одинаковые названия колонок в разных датасетах для использования единого фильтра
В Apache SuperSet есть такая замечательная функция, как кросс-фильтрация - возможность фильтровать 2-более разных датасета в рамках одного дашборда по колонкам с одинаковым названием.
2 разных виртуальные таблицы с одинаковым названием колонок = 1 фильтр вместо 2х. На практике, часто начинающие BI-щики плодят множество лишних фильтров, чтобы покрыть все задействованные на дашборде визуализации хотя при грамотном и стандартизированном нейминге этого можно избежать и улучшить UX. Так пусть же amount везде (в идеале, на уровне источника данных) будет amount, а customer_id будет customer_id, а не customer_id и id_of_customer.
-
Оптимизация производительности и асинхронная обработка
Настройка CacheOut в Датасетах
Для тяжёлых запросов и бэкенд-задач включите Celery-воркеры и Redis (или RabbitMQ) в качестве брокера и кеша. Это отделит задачу выполнения SQL от веб-сервера, сократит время отклика UI и предотвратит блокировку потоков Gunicorn.
В секундах задаём сколько держать кеш перед тем, как обновить Активируйте кэширование на уровне SQL Lab или отдельных Chart, чтобы повторные запросы обрабатывались быстрее. Параметры кэширования можно задать в
superset_
config.py
через ключиCACHE_DEFAULT_TIMEOUT
иRESULTS_BACKEND
. -
Настраиваем временной сдвиг для регулирования часового пояса
Предположим, что ваш источник данных живёт по UTC-0, а бизнес и, следовательно бизнес, по UTC-4. Чтобы данные с типом Date не показывали искажённые данные следует устранить это расхождение через настройки конкретного датасета.
Смещение времени настаиваем уже в часах Важно, SQL_lab использует часовой пояс сервера, где развёрнут BI SuperSet. При желание, можно настроить часовой пояс SQL_lab либо всего BI SuperSet через
superset_
config.py
.
-
Используем фильтр "Единицы измерения времени"
-
BI SuperSet по мимо классического фильтра "Интервал Дат" имеет ещё "Единицы времени", который позволяет выбрать в чём мерить - года, дни, минуты. +1 полезная фича при анализе данных дашборда и -1 причина делать лишний визуал.
При желание, можно добавить адекватный перевод этих единиц
-
-
В фильтрах есть переключатель WHERE|HAVING
Мелочь, на которую не все обращают внимание, но при задаче фильтра в чарте можно выставлять не только WHERE, но HAVING, чтобы бывает полезно в работе.
-
Прописывать описание чартов и дашбордов
В настройках чарта, в описании пишем свой текст, сохраняем.
Просто пример, но описание может (должно) быть более информативным :) В дашборде это уже выглядит, как дополнительная строка в верху графика -
Отключаем // настраиваем content_security_policy
По умолчанию, в дашбордах BI SuperSet, в блоке оформления Текст нельзя отобразить некий медиафайл из вне, но, если настроить content_security_policy в superset_config.py, то доступ не будет ограничен и объект появится. Тут уже всё зависит от вашей индивидуальной политики ИБ. Можно, как просто отключить csp полностью, так и задать ограничение для конкретного домена.
TALISMAN_ENABLED = False TALISMAN_CONFIG = { "content_security_policy": None, "force_https": True }
или же
TALISMAN_CONFIG = {
'content_security_policy': {
'img-src': ["'self'", "data:", "https://*.example.com
"], # Разрешить определенные домены
},} -
Пользуемся активнее Custom Metrics и Custom columns, а не делаем 5 копий одного датасета.
Metrics (Метрики) представляют собой агрегированные выражения, например
SUM(sales)
илиAVG(price)
Custom Columns (Пользовательские столбцы) Это вычисляемые поля, добавляемые к таблице на уровне источника данных. Используются для расширения набора колонок, например
col1 + col2
илиSUM(CASE WHEN status = 'completed' THEN amount ELSE 0 END)
. Могут быть использованы в Group By, фильтрах и визуализациях. Не могут быть использованы внутри Metrics, так как Superset не разворачивает их определения в SQL-запросе
Бывает так, что нужно на основе одних и тех же данных (одного датасета) построить ряд визуализаций в разных единицах измерения или за разные периоды. Зачем же делать копии датасета, когда можно обойтись одним? ... Просто используем Metrics и Custom_columns. Например, хотим видеть какую-то метрику в нескольких единицах измерения: шт, $, % от ... Просто открываем вкладку Custom Columns и задаём логическое условие и как подходящие под условие значения (результат * на курс $).
Или мы хотим иметь ср.кол-во заказов на день, то переходим в Metric и создаём новую метрику CAST(COUNT(DISTINCT "order_id") AS DECIMAL(10, 2))/'30'
Ещё есть мощная Jinja, но о ней уже в следующей части ...
-
Настраиваем сертификацию и описание дашбордов.
Сертификация в Apache Superset — это способ отметить определённые объекты (например, дашборды, чарты, датасеты, метрики) как проверенные и одобренные для использования внутри организации. Это бывает полезно, когда ваша организация не маленькая или количество объектов в BI перевалило за 100.
С Помощью процедуры сертификации можно отделить dev, stage, prod визуализации между собой и дать пользователям больше доверия к дашбордам. С помощью фичи можно наладить базовый процесс Контроля Качества Данных и отслеживать% «Проверенных дашбордов» и кто конкретно утвердил. Полезно на уровне ролей разделять доступ к «проверенным» и «непроверенным» объектам.
Поэтому не стоит пренебрегать галочкой «Сертифицировано».
-
Периодические «Субботники» дашбордов.
У меня такие субботники проходят, как минимум раз в месяц и позволили посчитать первую версию Health Score. Помимо простого просмотра всего, чтобы было сделано мной или BI‑специалистами делается следующее:
Объекту (дашборду, датасету) начисляются «штрафные» баллы (чем больше тем «хуже здоровье») за:
— скорость, медленные запросы и ошибки (либо сделано на скорую руку без витрин)
— отсутствие владельца
— невостребованность — кол‑во просмотров дашборда < 3 за последние 2 месяца
— заброшенность — срок с последнего обновления
— дублиОсобое внимание если:
Критично важный объект
высокий MAU
используется топ-менеджментом
Жду ваших лайфхаков. Как вернусь из отпуска, то возьмусь за Часть №2. Секунда самопиара и моего личного проекта, где я публикую Data в картинках.