[Clickhouse] 데이터 시각화: Metabase
clickhouse는 그 자체로 훌륭한 통계용 DB이나, 자체적인 시각화 도구를 갖고 있진 않다.
clickhouse Cloud를 쓴다면 자동으로 제공해주긴 하지만, 오픈소스로 셀프호스트를 한다면 직접 도구를 선택해서 구성해야 한다.
지원 도구는 꽤 여러개가 있다. 내가 알아보기로는 metabase가 가장 오래 관리되기도 했고, 비교적 많이 사용되는 것 같더라.
Docker로 실행하기
직접 실행해서 쓰려면, Docker를 통하는 것이 가장 편리하다.
docker run -d -p 13000:3000 --name metabase metabase/metabase
즉시 실행된다.
근데 제대로 쓰려면 저대로는 안된다.
metabase는 데이터베이스를 통해서 상태를 저장하는데, 따로 옵션을 주지 않으면 인메모리 데이터베이스인 H2를 사용하기 때문이다. 그래서 재시작하면 데이터 증발한다...
일반적인 권장사항은 PostgreSQL을 쓰는 것이다.
다음과 같이 compose로 말아서 일체형으로 올리면 편하다.
services:
metabase:
image: metabase/metabase:latest
container_name: metabase
hostname: metabase
volumes:
- /dev/urandom:/dev/random:ro
ports:
- 13000:3000
environment:
MB_DB_TYPE: postgres
MB_DB_DBNAME: metabaseappdb
MB_DB_PORT: 5432
MB_DB_USER: metabase
MB_DB_PASS: mysecretpassword
MB_DB_HOST: postgres
networks:
- metanet1
healthcheck:
test: curl --fail -I http://localhost:3000/api/health || exit 1
interval: 15s
timeout: 5s
retries: 5
postgres:
image: postgres:latest
container_name: postgres
hostname: postgres
environment:
POSTGRES_USER: metabase
POSTGRES_DB: metabaseappdb
POSTGRES_PASSWORD: mysecretpassword
networks:
- metanet1
networks:
metanet1:
driver: bridge

시작해보기
서버 열린 곳으로 들어가면, 바로 온보딩이 시작된다.


적당히 기본정보 초기화해주고


DB 추가하려거든 추가하면 된다.

그러면 이렇게 초기 페이지에 진입하게 된다.
기본 사용법: 테이블 정보 관리하기
데이터베이스 탭에서는 데이터베이스의 테이블들 정보를 조회할 수 있다.

데이터를 보는 용도는 아니고, 테이블에 대한 설명 같은걸 추가로 적을 수 있는 공간이다.

기본 사용법: 쿼리 날려보기
쿼리 탭으로 들어가면, 바로 쿼리를 날려볼 수 있다.
이거 자체는 그렇게 특별할건 없다.
기본 사용법: 컬렉션 구성하기
metabase에서는 개별 차트 단위를 컬렉션이라고 부른다.
쿼리 창에서 시각화 버튼을 누르면 바로 컬렉션 생성 모드로 진입할 수 있다.
어떤 차트를 만들지 선택한다. 내 경우에는 퍼센트를 보고 싶기 때문에 파이로 선택했다.
이런 식으로 집계 쿼리를 짜면
어느 정도 자동으로 인식해서 컬럼을 잡아준다.
직접 선택할 수도 있다.
그럼 이런 식으로 차트가 생성되고

저장하면 완성이다.
그리고 이렇게 만들어진 컬렉션은, 컬렉션 탭에서 볼 수 있다.

변수와 필터 추가
당연하지만, 통계를 보면 기간 필터를 비롯해서 필터를 걸 일이 많다.
시간 기반의 범위 필터를 걸고 싶다면, 이런 식으로 할 수 있다.
{{변수명}}으로 입력하면 자동으로 변수가 생성된다.
그리고 [[]]은 컨텍스트 안에 들어있는 변수들이 입력된 상태에서만 저 구문을 활성화한다는 의미다. 값이 없으면 무시된다.
그리고 변수의 기본 타입은 텍스트이기 때문에, 날짜 타입으로 바꿔줘야 한다.
우측에서 세부설정을 조정할 수 있다.
그럼 이런식으로 만들어진다.
위에서 날짜를 선택해서 지정하면, 그에 맞춰서 쿼리가 실행된다.
대시보드 관리
대시보드는 여러개의 컬렉션을 묶어서 보여주는 그룹 단위다.
바로 추가할 수 있고
하나의 대시보드에는 여러개의 탭을 추가할 수 있다.
그럼 이렇게 모아서 볼 수 있는 것이다.