요즘 '빅데이터 지탱하는 기술' 보고 있는데, superset이 나와서 정리해봣어요
예상 독자는 아래와 같아요
- superset 사용하시려는 분
- 기본 구조를 아시고 싶으신 분
- filter를 where절 안에서 사용하고 싶으신분
저는 k8s helm을 이용해서 구현했어요
사용 방법은 kibana와 비슷해서 편했고, 저는 trino를 데이터 소스로 사용했어요
superset이란?
- airbnb(2016)에서 만든 BI 툴
- 사용자 친화적인 UI
데모 페이지 들어가면 볼 수 있어요
https://superset.demo.datahubproject.io/superset/welcome/
느낀 장/단점
장점
- 공짜
- 연결할 데이터 소스가 많음
- 커뮤니티에서 핫함 (빠른 버전업)
단점
- 생각보다 러닝커브가 있음
- 업데이트가 너무 빠름(구조가 자주 바뀌는 듯?)
대표 기능
1. database -> 데이터 연결
2. dataset -> 연결된 데이터의 특정 테이블을 객체화시킴
3. charts -> 시각화
4. dashboard -> chart를 모음
5. SQL lab -> data 조회 가능
이제 사용 썰이에요
- helm 으로 설치해서 그런지, 처음 시작은 아주 간단
- database 등록도 쉬움
- database 신규 추가도 쉬움 (pip만 되면 가능함)
- sql lab의 데이터 조회 기능이 아주 좋음 (web dbeaver 같음)
- chart기능도 좋음 (키바나 같음)
- filter 조건 where 절 위치 변경 가능할까? -> 가능!
대용량 데이터 filter 조건시 커스터마이징하는 방법을 찾아봤어요
예를 들어서, tbl_test에 아주 큰 데이터가 있다고 가정하고,아래처럼 조회하고 싶어요
select col_code
from tbl_test
WHERE col_code IN ('A100', 'A101')
그런데 filter 조건을 dashboard에서 만들면, 이렇게 나와요
- full scan 후 조건 절이 적용
SELECT col_code AS col_code
FROM (
select col_code
from tbl_test
) AS virtual_table
WHERE col_code IN ('A100', 'A101')
LIMIT 1000;
커스터마이징을 하기 위해서는, chart에서 edit dataset을 눌러줘요
자물쇠 모양을 클릭하면, 강제로 수정할 수 있는데 아래 코드를 입력해줘요
select col_code
from tbl_test
where col_code in ({{ "'" + "','".join (filter_values('col_code_filter')) + "'" }} )
그러고 dashboard 로 돌아가면, 아무 필터를 걸지 않을 경우는 아래처럼 나와요
SELECT col_code AS col_code
FROM (
select col_code
from tbl_test
where col_code in ('')
) AS virtual_table
LIMIT 1000;
필터를 적용했을 경우는 아래처럼 나와요
SELECT col_code AS col_code
FROM (
select col_code
from tbl_test
where col_code in ('A100', 'A101')
) AS virtual_table
WHERE col_code IN ('A100', 'A101')
LIMIT 1000;
sql lab에서 test 할 수도 있어요
copy link 옆의 dropdown에서 parameter를 선택하고, dashboard에서 입력될 값을 입력해줘요
{ "_filters": [ { "col": "col_code_filter ", "op": "IN", "val": ["A100", "A101"] } ] }
그러면 아래 코드가 필터값을 그대로 적용해줄거에요
select col_code
from tbl_test
where col_code in ({{ "'" + "','".join (filter_values('col_code_filter')) + "'" }} )
현업분들이 사용하기에는 dataset, edit data, chart 의 프로세스가 좀 어려워요.
뿐만 아니라 비용을 생각하지 않은 쿼리를 짜서 적용하면 부하가 어마어마할 것 같고요
다만, 권한관리와 대시보드 생성 목적을 명확히 한다면 아주 좋은 툴 같아요!
참고
https://tedparkdev.tistory.com/8
https://velog.io/@syh0397/0.-%EC%8A%88%ED%8D%BC%EC%85%8B%EC%9D%B4%EB%9E%80Apache-Superset
https://superset.apache.org/docs/installation/sql-templating/
'Data > Superset' 카테고리의 다른 글
Superset) 4.0.2 docker-compose 로 커스터마이징하기 (0) | 2024.12.22 |
---|---|
Superset) 너 왜이렇게 버전업이 빠르니? (7개월 만에 2.1에서 4.0) (0) | 2024.11.24 |
superset) trino 연결해서 그래프 그리기 (0) | 2023.04.23 |