Макросы Jinja Templates
SQL Lab and Explore поддерживает шаблоны Jinja в запросах. При помощи шаблонов Jinja код Python можно встраивать в виртуальные наборы данных и в пользовательский SQL в фильтрах и элементах управления метриками в Исследовании. По умолчанию в контексте Jinja доступны следующие переменные:
-
columns
: столбцы, по которым следует группировать в запросе. -
filter
: фильтры, примененные в запросе. -
from_dttm
: начальноеdatetime
значение из выбранного диапазона времени (None
если не определено). -
to_dttm
: конечноеdatetime
значение из выбранного диапазона времени (None
если не определено). -
groupby
: столбцы, по которым следует группировать в запросе. -
metrics
: агрегатные выражения в запросе. -
row_limit
: ограничение строки запроса. -
row_offset
: смещение строки запроса. -
table_columns
: столбцы, доступные в наборе данных. -
time_column
: временной столбец запроса (None
, если не определен). -
time_grain
: выбранный интервал времени (None
, если не определен).
Например, чтобы добавить диапазон времени в виртуальный набор данных, вы можете написать следующее:
SELECT * from tbl where dttm_col > '{{ from_dttm }}' and dttm_col < '{{ to_dttm }}'
Вы также можете использовать логику Jinja , чтобы сделать ваш запрос устойчивым к очистке фильтра временного диапазона:
SELECT *
FROM tbl
WHERE (
{% if from_dttm is not none %}
dttm_col > '{{ from_dttm }}' AND
{% endif %}
{% if to_dttm is not none %}
dttm_col < '{{ to_dttm }}' AND
{% endif %}
true
)
Обратите внимание, что параметры Jinja вызываются в двойных скобках в запросе и без в логических блоках.
Доступные макросы
В этом разделе мы рассмотрим предопределенные макросы Jinja в Superset.
Текущее имя пользователя
Макрос {{ current_username() }}
возвращает имя пользователя, вошедшего в систему в данный момент.
Если в вашей конфигурации Superset включено кэширование, то значение по умолчанию username
будет использоваться Superset при вычислении ключа кэша. Ключ кэша — это уникальный идентификатор, который определяет, будет ли попадание в кэш в будущем, и Superset сможет получить кэшированные данные.
Вы можете отключить включение username
значения в вычисление ключа кеша, добавив в свой код Jinja следующий параметр:
{{ current_username(add_to_cache_keys=False) }}