Это старая версия документа!
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')) + "'" }})
и нажмите Сохранить.