Jinja Templating — это движок веб-шаблонов для Python. Он использует текстовый язык шаблонов, который можно использовать для генерации как разметки, так и исходного кода. Включение Jinja повышает гибкость функций и обеспечивает множество вариантов использования, таких как:
В Superset вы можете использовать Jinja в Лаборатории SQL, виртуальных датасетах и Фильтре на уровне строк (Row Level Security):
Этот процесс состоит из 4 шагов:
Шаг 1. Создайте виртуальный набор данных
Рассмотрим следующий запрос: Если вы создадите виртуальный набор данных с помощью этого запроса, он будет иметь только два столбца: count и window. Как следствие, вы не сможете создать фильтр информационной панели для type_call_name. Вот почему мы будем использовать Jinja.
WITH calculation as ( SELECT count(*), window FROM abituser.ld$telephony WHERE type_call_name in ('входящий', 'исходящий') GROUP BY window ) SELECT * FROM calculation
Однако если вы выполните запрос, включающий шаблон Jinja, непосредственно в лаборатории SQL , он не вернет никаких результатов, поскольку у нас нет фильтров для передачи значений, а это означает, что выполненный запрос в конечном итоге будет иметь вид:
WITH calculation as ( SELECT count(*), window FROM abituser.ld$telephony WHERE type_call_name in ('') GROUP BY window ) SELECT * FROM calculation
Для начала создадим виртуальный набор данных без Jinja через Редактор SQL:
Сохраним запрос и используем его, как датасет для графика.
WITH calculation as ( SELECT count(*), window FROM abituser.ld$telephony WHERE type_call_name in ('входящий') GROUP BY window ) SELECT * FROM calculation
Шаг 2. Измените виртуальный набор данных, включив в него Jinja.
В вашем браузере откроется новая вкладка с вашим новым виртуальным набором данных.
В разделе Датасет рядом с именем вашего набора данных, выберите Редактировать датасет.
В разделе Источник, нажмите на значок замка, который предоставит вам доступ для редактирования запроса. На панели ввода SQL-запроса
замените type_call_name in ('входящий') на type_call_name in ({{ "'" + "', '".join(filter_values(‘type_call_name')) + "'" }})
и нажмите Сохранить.
О структуре шаблонов Jinja:
Шаг 3. Добавьте диаграмму на панель дашборда.
Теперь, когда мы правильно изменили виртуальный набор данных, мы можем запустить нашу диаграмму, выбрав Update chart. Диаграмма не вернет никаких результатов, поскольку она еще не настроена.
Выберите Сохранить график и перейти к дашборду.
Шаг 4. Настройте фильтр на панели дашборда.
Панель управления откроется в вашем браузере. После его появления приступим к заключительному этапу настройки фильтров панели мониторинга.
Начните с выбора стрелки вправо, чтобы развернуть область Фильтры, а затем выберите +Add/Edit filters.
Появится окно Добавление и редактирование фильтров.
Теперь, слева появится созданный фильтр, при выборе значений к области диаграммы применятся выбранные позиции.