본문 바로가기
Dashboards/Superset

Superset에서 쿼리에 Jinja 템플릿 사용하기

by 홍띠 2024. 10. 20.

Superset 에서 대시보드의 데이터를 조회하는 쿼리를 작성할때, 조회 기준 일자와 같이 특정 변수들은 Jinja context에서 사용가능하도록 되어있다. 하지만 기본적으로는 Jinja Template 사용이 활성화 되어있지 않기 때문에, 해당 기능을 활성화 시켜주는 작업이 필요하다.

 

Jinja 템플릿으로 어떤 변수들이 사용가능한지는 아래 문서를 참고하면 된다.

https://superset.apache.org/docs/configuration/sql-templating/

 

SQL Templating | Superset

Jinja Templates

superset.apache.org


내 경우에는 Helm 차트를 사용해서 Superset을 쿠버네티스 환경에 설치해서 사용 중으로, 

Helm 차트의 values.yaml에 아래와 같이 추가해서 업데이트를 해주면 된다.

configOverrides: 
	feature_flags: |
	  FEATURE_FLAGS = {
	    "ENABLE_TEMPLATE_PROCESSING": True
	  }

 

이후에는 쿼리를 작성할때 원하는 변수에 맞게 Jinja 템플릿을 사용하면 된다.

SELECT *
FROM tbl
WHERE dttm_col > '{{ from_dttm }}' and dttm_col < '{{ to_dttm }}'

 

+ 추가

Superset의 버전이 2.x -> 3.x 로 올라가면서 데이터셋을 생성하는 로직이 변경되었고, 이에따라 Jinja 템플릿 사용시에 None 값에 대한 처리가 필수적으로 들어가야만 한다.
(참고: https://github.com/apache/superset/issues/25786)

따라서 아래와 같이 if/else 문을 추가하면 문제 없이 쿼리를 적용 할 수 있다.

SELECT *
FROM tbl
{% if to_dttm %}
dttm_col >= {{ to_dttm }}
{% endif %}

'Dashboards > Superset' 카테고리의 다른 글

Superset에서 Viewer 권한관리  (0) 2024.10.13