Metabase를 활용한 통계데이터 시각화

안녕하세요, VNTG Dataforge 팀 데이터 엔지니어 유성열입니다. 데이터 엔지니어는 기업에서 발생하는 데이터들을 수집하고, 가공, 저장하여 관리하는 업무를 담당합니다. 데이터를 분석하려면 그에 관련된 데이터들이 정리가 되어있어야 하는데, 분석에 필요한 흩어진 데이터를 수집하고 관리하는 역할을 한다고 생각하시면 좋을 것 같습니다. 저는 현재 팀의 업무 프로세스를 이해하고, 수집된 데이터를 시각화하는 일을 담당하고 있습니다.

수집, 가공한 데이터를 분석하기에 앞서 알아보기 쉬운 형태로 시각화하는 작업이 필요한데, 이러한 작업에 사용되는 툴을 BI(Business Intelligence)툴이라고 합니다. BI툴을 이용해 전문가의 도움 없이도 데이터를 시각적으로 구성하고, 그것을 분석하여 기업의 관리자부터 현장 직원까지 데이터를 기반으로 의사결정이 가능합니다. 실제로 많은 기업에서 보고서와 데이터 분석, 의사결정 등에 BI툴을 활용하고 있으며 툴의 종류 또한 다양합니다. 그 중 현재 저희 팀에서 사용하고 있는 ‘메타베이스’라는 툴을 활용하여 시각화와 대시보드를 구성하는 방법에 대해 간단하게 작성해보려고 합니다.

1. 메타베이스란?

메타베이스 대시보드 화면

메타베이스는 오픈소스 BI툴로써 퀘스천이라는 쿼리 기능을 통해 분석하고자 하는 데이터에 질문을 던지고 얻은 결과를 시각화하여 분석할 수 있게 해주는 툴입니다. 오라클, MySQL과 같은 RDB부터 AWS Redshift, 구글 BigQuery 등 DW까지 다양한 데이터소스(Data sources)를 지원하여 방대한 양의 데이터를 통계, 분석할 수 있고, GUI로 구성된 쿼리 에디터를 통해 SQL에 익숙하지 않더라도 클릭만으로 간편하게 시각화 대시보드를 구성하고 분석할 수 있습니다. 이번 포스팅에서는 핵심적인 기능 설명과 퀘스천을 만드는 방법, 만든 퀘스천을 대시보드에 배치하는 것까지 설명을 드리도록 하겠습니다.


2. 화면 구성

먼저, 메타베이스에 접속을 하면 위처럼 메인 화면이 구성되어 있습니다. 화면 구성은 현재 사용자의 권한으로 접근할 수 있는 컬렉션 목록과, 연동된 데이터소스 목록으로 되어 있습니다. 우상단 빨갛게 네모칸 표시된 메인 메뉴에는 쿼리를 만들 수 있는 퀘스천 생성 버튼과 퀘스천을 배치할 수 있는 대시보드 생성 버튼 등이 있습니다. 메인 메뉴에 대해 간단하게 설명드리면 아래와 같습니다.

Ask a question 버튼을 클릭하면 나오는 퀘스천 종류 선택 페이지

① Ask a question : GUI 방식인 심플, 커스텀 퀘스천과 SQL 방식인 네이티브 쿼리 세 종류로 구분되는데, 밑에서 자세하게 다루겠습니다.
② Browse data : 연동된 데이터소스 목록 조회 기능입니다.
③ Create : 대시보드와 펄스를 생성할 수 있습니다.
(펄스는 주기적으로 대시보드 정보를 받아보는 기능인데, 대시보드 구독으로 대체될 예정입니다.)
④ Write SQL : Ask a question의 네이티브 쿼리 기능과 동일합니다.
⑤ Settings : 계정, 어드민 설정이나 사용자 기록 확인이 가능합니다.

메인 메뉴 기능들 중 퀘스천과 대시보드를 생성하는 , 번 버튼을 주의깊게 보시면 될 것 같습니다. 퀘스천이나 대시보드를 생성하기에 앞서 저장할 경로와, 어떤 데이터에 질문을 던질 것인지 먼저 설정을 해야 하기 때문에, 퀘스천과 대시보드를 저장하는 컬렉션과, 데이터소스의 필드 설정에 대해 먼저 설명을 드리겠습니다.


3. 컬렉션

메인 화면에서 목록에 있는 컬렉션을 클릭하거나 Browse all items를 클릭하면 컬렉션 목록 페이지로 이동할 수 있습니다. 컬렉션은 간단하게 퀘스천, 대시보드가 저장되는 폴더라고 생각하시면 됩니다. 컬렉션은 다른 사용자와 공유되는 Our analytics와 사용자 개인 공간인 Your personal collection 두 가지로 나뉩니다. 왼쪽 목록에서 이동하려는 컬렉션을 클릭하면 해당 컬렉션에 저장된 대시보드와 퀘스천 목록을 조회할 수 있습니다.

①컬렉션 접근 권한 설정 ②컬렉션 수정/삭제 ③컬렉션 생성

그리고 컬렉션 이름 우측에는 컬렉션 메뉴가 있는데 번호 순서대로 각각 권한 설정, 컬렉션 수정 및 삭제, 생성 기능입니다.

컬렉션 생성창

③번 컬렉션 생성만 간단하게 설명드리면, 컬렉션 이름과 설명(선택사항)을 적고, 컬렉션이 저장될 경로를 설정한 다음 Create 버튼을 누르면 컬렉션을 생성할 수 있습니다. 아래에서 설명할 퀘스천과 대시보드도 동일한 방식으로 생성할 수 있습니다.


4. 연동된 데이터소스

다음은 중요한 부분인 데이터소스 조회와 설정입니다. 퀘스천을 작성하기 전에 어떤 데이터에 질문을 던져야 하는지 찾아보고, 설정할 수 있는 기능입니다. 메인 화면에서 메인 메뉴의 Browse data 아이콘이나 데이터소스 목록 중 하나를 클릭하면 해당 데이터소스의 스키마와 테이블 정보를 확인할 수 있습니다. 테이블 목록에 마우스를 오버하면 아래처럼 사전 아이콘이 나오는데, 클릭하면 테이블의 상세정보를 확인할 수 있습니다.

테이블 상세 정보 조회

테이블의 컬럼을 메타베이스에서는 필드라고 하는데 필드명은 해당 컬럼의 별명이라고 생각하시면 됩니다. 심플, 커스텀 퀘스천을 만들 때 필드명으로 조회되므로 상세하게 설정하면 보다 쉽게 퀘스천을 만들 수 있습니다.

필드타입 설정

그리고 실제 데이터타입 대신 필드타입(Field Types)이 사용되는데, 필드타입 Entity Key, Foreign Key는 RDB의 PK, FK와 동일한 개념입니다. DB에서 PK, FK로 설정된 컬럼을 Entity Key, Foreign Key로 설정하면 퀘스천을 작성할 때 사용자가 직접 테이블을 조인하지 않아도 키가 연결된 테이블끼리 자동으로 조인되어 편리하게 사용할 수 있게 해줍니다.

필드타입이 제대로 설정되어있지 않다면 조인된 테이블 컬럼을 자동으로 불러오거나 대시보드에서의 필터 적용 등 메타베이스의 편리한 기능들을 제대로 활용할 수 없기 때문에 퀘스천을 만들기 전에 반드시 체크하고 넘어가야 하는 중요한 부분이라고 할 수 있겠습니다.


5. 퀘스천

다음은 퀘스천입니다. 퀘스천은 연동된 데이터소스에 질문(쿼리)을 던지고 그에 대한 답을 시각적으로 표현해주는 기능입니다. 앞서 Ask a question 메뉴에서 설명드렸던 것처럼, GUI 방식으로 쿼리를 작성할 수 있는 심플, 커스텀 퀘스천과 직접 SQL로 작성하는 네이티브 쿼리 세 가지 방식이 있습니다.

심플 퀘스천

심플 퀘스천

심플 퀘스천은 테이블(①, ②)만 선택하면 바로 테이블의 데이터를 화면에 출력해주며, 필터와 서머라이즈 탭(③)으로 필터링되는 데이터를 바로바로 확인하면서 퀘스천을 작성할 수 있는 기능입니다. 간단하게 하나의 테이블에서 데이터를 시각화 하고자 할 때 사용할 수 있습니다. 서머라이즈나 필터를 바꿀 때마다 차트가 새로고침 되는 만큼, 데이터 양이 많다면 시간이 오래 걸릴 수도 있습니다.

커스텀 퀘스천

커스텀 퀘스천

커스텀 퀘스천은 데이터소스, 테이블을 선택하는 것은 심플 퀘스천과 동일하지만, 먼저 데이터를 출력하고 필터링을 하는 게 아닌 쿼리 에디터 페이지에서 테이블 조인이나, 커스텀 컬럼, 수식 등 심플 퀘스천보다 복잡한 쿼리를 작성한 후 시각화를 할 때 사용하는 퀘스천 기능입니다. 조건 설정을 하고 시각화(⑤)를 한 이후에는 심플퀘스천 화면으로 넘어가며 심플 퀘스천과 동일하게 편집이 가능하고, 심플 퀘스천 우측 상단 三 모양 아이콘(심플퀘스천 그림 ③)을 클릭하면 다시 커스텀 퀘스천 에디터 화면으로 넘어와 쿼리를 편집할 수 있고, 三 아이콘 옆에 있는 SQL로 보기/변환 버튼을 클릭하면 현재 작성한 쿼리가 SQL로 어떻게 변환되는지 확인하고, 네이티브 쿼리 에디터로 변환할 수도 있습니다.

네이티브 쿼리

SQL로 작성한 네이티브 쿼리

네이티브 쿼리는 클릭으로 작성할 수 있는 GUI 쿼리 에디터 방식이 아닌 직접 SQL로 쿼리를 작성하는 퀘스천 기능입니다. SQL에 익숙한 사용자라면 심플, 커스텀 방식보다 편리할 수 있지만 피벗같은 시각화 기능은 네이티브 쿼리에서 제대로 지원하지 않기 때문에 심플, 커스텀 퀘스천을 주로 사용하고, 복합키로 테이블 조인을 거는 등의 기능은 현재 메타베이스에서 지원되지 않기 때문에 GUI 쿼리 에디터로 퀘스천을 만들기 힘든 경우 네이티브 쿼리를 사용하는 것을 추천합니다. 그리고 GUI 쿼리 에디터의 경우는 클릭으로 작성한 퀘스천을 데이터소스에 맞는 SQL로 알아서 변환해주지만, 네이티브 쿼리는 변환해주지 않으므로 사용할 데이터소스에서 지원하는 문법에 맞게 작성해야 하는 차이가 있습니다. 또한 WHERE절에 변수(13 Sql Parameters)를 직접 선언해야 대시보드 필터와 매핑이 가능합니다.

시각화

위 세 가지 방법 중 하나로 쿼리를 작성하여 데이터를 가져왔다면, 이제 그 데이터를 어떻게 효과적으로 보여줄지를 선택해야 합니다. 저는 심플 퀘스천을 기준으로 설명을 드리겠습니다.

만약 샘플 데이터를 활용해서 “최근 3년 동안의 월별 주문 수는 얼마일까?” 라는 질문을 던진다면 아래처럼 퀘스천을 작성하고, 데이터를 보면서 편집할 수 있습니다.

먼저 심플 퀘스천에서 설명드린 것처럼 Sample Dataset의 ORDERS 테이블을 선택해서 데이터를 출력한 다음,

우측 상단 필터에서 날짜(CREATED_AT)를 Previous 3 Years로 설정하고, 서머라이즈 탭으로 가서 날짜(CREATED_AT)를 월로 그룹바이(by month) 해주면 최근 3년 동안의 데이터를 월 단위로 묶게 됩니다. 그리고 Count를 선택하면 GUI로 간단하게 최근 3년 동안의 월별 주문 수에 대한 데이터를 가져올 수 있습니다. 서머라이즈, 필터 조건을 선택하면 메타베이스에서 지원하는 차트 중 자동으로 가져온 데이터에 맞는 시각화 차트를 선택해주는데, 메타베이스에서는 16가지의 시각화를 지원하고 있습니다.



  각 시각화에 대해 간단히 소개합니다.

  - Line : 각 데이터가 선분으로 연결된 차트
  - Bar : 각 데이터를 막대로 나타낸 차트
  - Combo : 선분과 막대가 조합된 차트
  - Area : 라인차트에서 영역에 색이 추가된 차트
  - Row : 가로로 표현된 막대차트
  - Waterfall : 등락과 총합을 표현하는 차트
  - Scatter : 데이터의 양과 분포를 표현하는 차트
  - Pie : 카테고리별 비율을 나타내는 차트
  - Funnel : 가로 깔대기 모양 차트
  - Trend : 이전 데이터 대비 증감 표현 차트
  - Progress : 진행도를 나타내는 차트
  - Gauge : 온도 등 게이지를 나타내는 차트
  - Number : 하나의 숫자 표현
  - Table : 일반적인 테이블 차트
  - Pivot Table : 피벗테이블 차트
  - Map : 지역 정보 데이터를 지도에 표시할 수 있는 차트



Bar 차트로 시각화


Bar 차트 옵션

지금은 Bar 차트로 퀘스천을 시각화해보겠습니다. 퀘스천 작성 화면의 좌측 하단 Visualization 버튼을 클릭해서 Bar를 선택하면 차트 형태가 막대로 바뀌고 Settings로 탭이 넘어가는데, 해당 탭에서는 각 시각화에 맞는 옵션을 설정할 수 있습니다. 방금 설정한 Bar 차트의 경우는 위 그림처럼 축, 데이터 누적 여부, 레이블 설정 등이 가능합니다.

퀘스천 저장

시각화 설정까지 마쳤으니 이제 퀘스천을 저장할 차례입니다. 퀘스천 작성 화면 우측 상단 Save 아이콘을 클릭하면 컬렉션을 생성할 때와 마찬가지로 퀘스천을 저장할 수 있습니다. 지금까지 세 가지 퀘스천에 대해 알아보고 그 중 심플 퀘스천을 작성해 시각화하고 저장하는 방법을 알아봤습니다. 마지막으로 방금 만든 퀘스천을 대시보드에 배치하고, 대시보드 필터를 적용해보겠습니다.


6. 대시보드

대시보드는 작성한 퀘스천들을 한 화면에 모아서 볼 수 있는 게시판과 같은 기능이라고 볼 수 있습니다. 그리고 퀘스천들을 하나의 화면에서 보는 것뿐만 아니라, 배치한 퀘스천에 대시보드 필터를 적용하여 퀘스천을 새로 만들지 않고도 필터링된 데이터로 퀘스천을 갱신할 수도 있습니다.

대시보드 생성은 먼저 메인 메뉴에서 + 아이콘을 클릭, New dashboard를 선택하시면 새로운 대시보드를 만들 수 있습니다. 대시보드를 생성하는 것도 컬렉션, 퀘스천 생성과 다르지 않습니다.

대시보드를 생성하면 바로 대시보드 화면으로 이동하는데, 바로 아까 만들었던 퀘스천을 추가해보도록 하겠습니다. 대시보드 메뉴는 위 그림의 빨간 네모칸처럼 되어있는데, 메뉴에서 연필 아이콘을 클릭하면 대시보드 편집 아이콘으로 바뀌게 됩니다.

대시보드에 배치할 퀘스천 선택

이제 퀘스천을 대시보드에 배치해보겠습니다. + 모양의 퀘스천 배치(①) 아이콘을 클릭하고 퀘스천이 저장된 경로로 이동하여 아까 만들었던 ‘월별 주문 수’ 퀘스천을 클릭합니다.

퀘스천 배치 및 크기 조절

퀘스천을 배치하면 격자모양이 보이는데, 가로는 최대 18칸, 세로는 제한없이 퀘스천을 배치가 가능하도록 되어 있습니다. 하지만 너무 많은 퀘스천을 배치하게 되면 로딩 속도가 길어지는 등 퍼포먼스가 떨어질 수 있어 한 화면 내에서 대시보드를 구성할 것을 추천드립니다.

대시보드에 배치된 퀘스천

퀘스천을 대시보드에 배치했으니, 다음은 필터를 적용해보겠습니다. 우측 상단 편집 메뉴에서 초록색 네모칸 표시된 필터 추가 아이콘을 클릭하면 아래 그림처럼 필터 종류를 선택할 수 있습니다.

필터 종류는 Time, Location, ID, Other Categories 네 가지로 나뉘는데, 간단하게 설명하면 아래와 같습니다.

  • Time : 날짜, 시간
  • Location : 국가, 도시, 우편번호 등
  • ID : Entity Key(PK), (Foreign Key)FK 등
  • Other Categories : 위 세 가지에 포함되지 않는 기타 분류

지금은 Time 필터를 적용해보겠습니다. 목록에서 Time을 클릭하면 주황색 박스처럼 필터 세부 종류를 고를 수 있는데, All Options가 다른 옵션들을 모두 포함하므로 이것을 선택하겠습니다.

필터를 추가하고 나면 배치한 퀘스천과 매핑을 해야 하는데, 위에서 말씀드린 테이블 설정의 필드타입과 필터의 타입이 일치해야 매핑이 가능합니다. Time 필터를 선택했기 때문에 퀘스천과 매핑할 수 있는 필드도 날짜만 표시되는 것을 볼 수 있습니다. 현재 퀘스천에 사용된 ORDER 테이블의 CREATED_AT을 선택하겠습니다.

대시보드 저장

퀘스천과 대시보드 필터를 매핑하고, 편집 메뉴 위에 있는 Save 버튼을 클릭해 편집한 내용을 저장합니다.

필터 적용 및 비교


필터 설정된 대시보드

퀘스천 좌측 상단에 추가된 필터를 클릭해서 원하는 날짜 구간을 선택하면 선택된 구간의 날짜로 데이터가 새로고침 되는 것을 확인할 수 있습니다. 이처럼 퀘스천을 대시보드에 배치하고 필터를 이용하면 비슷한 퀘스천을 여러 개 만들 필요 없이, 하나의 퀘스천으로 여러 조건의 데이터를 조회할 수 있습니다.


7. 후기

지금까지 BI툴 메타베이스에 대한 기본적인 기능과 간단한 퀘스천 작성, 대시보드 구성까지 해봤습니다. 메타베이스를 처음 접하는 분들을 기준으로 최대한 쉽게 풀어서 쓰려고 했는데 글재주가 없어서 너무 두서없이 작성한 건 아닌가 싶습니다. 그래도 전달이 잘 되었으면 합니다🙂 그리고 툴의 핵심적인 기능들만 추리다보니 글로만 설명하고 넘어간 다른 시각화 차트나 클릭링크같은 기능들은 소개하지 못해 아쉬움이 남는 것 같습니다. 다음에 기회가 된다면 해당 부분에 대해서도 다뤄보고 싶습니다. 긴 글 읽어주셔서 감사합니다.

Share