본문으로 건너뛰기
최종 수정: 에

Metabase

Metabase는 데이터 분석, 데이터 시각화, 대화형 대시보드, 데이터 드릴다운, SQL 쿼리 편집, 데이터 내보내기 기능을 제공하는 오픈 소스 비즈니스 인텔리전스 도구입니다. Metabase Apache Doris Driver를 사용하면 Apache Doris 데이터베이스와 테이블을 Metabase의 데이터 소스로 연동하여 Doris 내부 데이터와 외부 데이터를 쿼리하고 시각화 대시보드를 만들 수 있습니다.

이 드라이버는 독립형 Metabase 커뮤니티 드라이버이며 Metabase에 기본으로 포함되어 있지 않습니다.

이 문서에서는 사용자 시나리오를 중심으로 다음 작업을 수행하는 방법을 설명합니다.

시나리오사용자 목표주요 작업
Metabase 환경 준비Metabase가 Apache Doris를 데이터 소스로 인식하도록 설정Metabase 설치 후 Doris 드라이버 다운로드 및 설치
Doris 데이터 소스 구성Metabase에서 Doris tpch 데이터베이스에 연결FE 노드, Query Port, Catalog, 데이터베이스, 사용자 이름 및 비밀번호 입력
시각화 분석 구성시간에 따른 운송 방식별 주문 금액 변화 분석질문 생성, SQL 작성, 선 차트 구성 후 대시보드에 저장
고급 기능 사용외부 데이터 소스에 접근하고 쿼리 사용 편의성 개선Catalog, 매개변수화된 쿼리, 파티션 프루닝, 구체화된 뷰 및 캐싱 사용

Metabase 환경 준비​

사전 요구 사항​

구성을 시작하기 전에 다음 환경이 준비되어 있는지 확인합니다.

항목요구 사항
MetabaseMetabase 0.59.6.3 이상을 다운로드하여 설치합니다. 설치 방법은 Metabase 설치 문서를 참조하세요.
JavaMetabase를 실행하려면 Java 21이 필요합니다.
Apache Doris접근 가능한 Apache Doris 클러스터를 준비합니다.
Doris 드라이버Metabase Doris Driver를 다운로드합니다.

드라이버 다운로드 및 검증​

주의

Metabase Doris Driver는 타사에서 제공하고 유지 관리합니다. Apache Doris 프로젝트의 일부가 아니며, Apache Doris 커뮤니티에서 릴리스하거나 보증하지 않습니다. 프로덕션에서 사용하기 전에 드라이버를 직접 평가하고, 다운로드한 파일의 체크섬을 검증하고, 타사 프로젝트의 라이선스를 준수하세요. 드라이버 관련 문제는 해당 드라이버를 제공하는 프로젝트에 보고하세요.

릴리스 JAR 및 체크섬 파일을 다운로드합니다.

curl -LO https://github.com/velodb/metabase-doris-driver/releases/download/v1.0.0/doris.metabase-driver-v1.0.0.jar
curl -LO https://github.com/velodb/metabase-doris-driver/releases/download/v1.0.0/doris.metabase-driver-v1.0.0.jar.sha256
sha256sum -c doris.metabase-driver-v1.0.0.jar.sha256

예상 SHA-256 해시값은 다음과 같습니다.

b23e82f19a7f9226343e42566e1e192b6df7a0dfc48a73d2101fc74bfec243f3

일반 배포 환경에 드라이버 설치​

Metabase를 일반적인 방식으로 배포한 경우 다음과 같이 Doris 드라이버를 설치합니다.

  1. 앞서 설명한 대로 드라이버 릴리스 파일을 다운로드하고 검증합니다.

  2. Metabase 플러그인 디렉터리가 없으면 생성합니다.

    mkdir -p /path/to/metabase/plugins
  3. 릴리스 JAR을 플러그인 디렉터리에 복사합니다.

    cp doris.metabase-driver-v1.0.0.jar /path/to/metabase/plugins/doris.metabase-driver.jar
  4. Metabase 서비스를 다시 시작합니다.

  5. Metabase 시작 로그에서 doris 드라이버가 등록되었는지 확인합니다. 관리자 설정 > 데이터베이스 > 데이터베이스 추가에서 Apache Doris 데이터베이스 유형이 표시되어야 합니다.

Docker 배포 환경에 드라이버 설치​

Docker로 Metabase를 시작하는 경우 doris.metabase-driver.jar를 마운트하여 시작하는 것이 좋습니다. Docker 컨테이너 내부의 플러그인 경로는 /plugins/입니다.

  1. 드라이버 릴리스 파일을 다운로드하고 검증합니다.

  2. 사전 요구 사항을 충족하는 Metabase 이미지로 컨테이너를 시작합니다.

    docker run -d \
    -p 3000:3000 \
    --name metabase \
    -v "$(pwd)/doris.metabase-driver-v1.0.0.jar:/plugins/doris.metabase-driver.jar:ro" \
    metabase/metabase

Doris 데이터 소스 구성​

Metabase와 metabase-doris-driver를 설치한 후 Metabase에서 Doris tpch 데이터베이스에 연결하는 데이터 소스를 추가할 수 있습니다.

연결 매개변수​

Apache Doris에 연결할 때 필요한 필드는 다음과 같습니다.

매개변수의미예시
표시 이름데이터 소스의 표시 이름Doris-TPCH
호스트Doris FE 노드 주소127.0.0.1
포트Doris Query Port(MySQL 프로토콜 포트). 기본값은 90309030
CatalogCatalog 이름. 선택 사항이며 기본값은 internalinternal
데이터베이스(선택 사항)선택한 Catalog의 데이터베이스. 선택 사항이며 비워 두면 Catalog에서 조회 가능한 모든 데이터베이스를 검색함tpch
사용자 이름사용자 이름root
비밀번호비밀번호your_password
SSLJDBC TLS 활성화. 드라이버는 MariaDB sslMode=trust를 사용하며 서버 인증서나 호스트 이름을 검증하지 않음false
스키마 동기화 포함 목록선택 사항. 데이터베이스(선택 사항)가 비어 있을 때 사용. 쉼표로 구분된 데이터베이스 허용 목록tpch
스키마 동기화 제외 목록선택 사항. 데이터베이스(선택 사항)가 비어 있을 때 사용. 쉼표로 구분된 데이터베이스 차단 목록. 제외 규칙이 포함 규칙보다 우선함information_schema
추가 JDBC 연결 문자열 옵션기타 MariaDB JDBC URL 매개변수connectTimeout=10000

다음과 같이 Catalog 및 데이터베이스 범위를 선택합니다.

  • 내부 테이블: Catalog를 internal로 유지하고 tpch와 같은 데이터베이스를 입력합니다.
  • 외부 테이블: 외부 Catalog와 해당 Catalog에서 조회 가능한 데이터베이스를 입력합니다.
  • 여러 데이터베이스: 데이터베이스(선택 사항)를 비워 둡니다. 드라이버는 구성된 계정으로 조회 가능한 데이터베이스를 검색하고, 포함 목록과 제외 목록을 적용한 후 해당 데이터베이스의 테이블을 나열합니다.

데이터베이스(선택 사항)가 비어 있으면 드라이버는 기본적으로 information_schema, __internal_schema, mysql을 제외합니다. 포함 및 제외 규칙은 대소문자를 구분하지 않고 일치 여부를 확인하며, 동일한 데이터베이스가 두 목록에 모두 있으면 제외 규칙이 우선합니다. 데이터베이스(선택 사항)를 명시적으로 설정하면 동기화 범위가 해당 데이터베이스로 제한되며, 포함 및 제외 설정은 동기화 범위에 영향을 주지 않습니다.

구성 단계​

  1. Metabase를 시작하고 로그인합니다.

  2. 오른쪽 위의 톱니바퀴 아이콘을 클릭하고 관리자 설정을 선택합니다.

Metabase 관리자 설정

  1. 왼쪽 메뉴에서 데이터베이스를 선택하고 오른쪽 위의 데이터베이스 추가 버튼을 클릭합니다.

데이터베이스 추가

  1. 데이터베이스 유형 드롭다운에서 Apache Doris를 선택합니다.

Apache Doris 선택

  1. 연결 정보를 입력합니다.

    매개변수예시 값
    표시 이름Doris-TPCH
    호스트127.0.0.1
    포트9030
    Cataloginternal
    데이터베이스(선택 사항)tpch
    사용자 이름admin
    비밀번호******

연결 정보 입력

  1. 저장을 클릭하여 구성을 저장합니다.

  2. Metabase가 연결을 테스트하고 데이터베이스 메타데이터 동기화를 시작합니다. 연결에 성공하면 성공 메시지가 표시됩니다.

연결 성공

데이터 소스 구성이 완료되면 Metabase에서 시각화를 만들 수 있습니다.

시각화 대시보드 만들기​

이 예제에서는 TPC-H 데이터를 데이터 소스로 사용합니다. Doris TPC-H 데이터 소스를 구축하는 방법은 Doris TPC-H 벤치마크 문서를 참조하세요.

비용 분석을 위해 시간에 따른 운송 방식별 주문 금액 증가 추이를 분석해야 한다고 가정해 보겠습니다. 다음 절차에 따라 시각화를 구성할 수 있습니다.

질문 만들기​

  1. 홈 페이지 오른쪽 위의 새로 만들기 + 버튼을 클릭하고 질문을 선택합니다.

새 질문 만들기

  1. 데이터 소스를 선택합니다.

    매개변수예시 값
    데이터베이스Doris TPCH
    테이블lineitem

테이블 선택

SQL로 사용자 지정 지표 만들기​

매출을 계산하려면 사용자 지정 SQL 표현식을 사용해야 합니다.

  1. 오른쪽 위의 SQL 보기를 클릭한 다음 이 질문을 SQL로 변환을 클릭하여 SQL을 편집합니다.

SQL 모드로 전환

  1. 다음 SQL 쿼리를 입력합니다.

    SELECT
    DATE_FORMAT(l_shipdate, '%Y-%m') AS ship_month,
    l_shipmode,
    SUM(l_extendedprice * (1 - l_discount)) AS revenue
    FROM lineitem
    WHERE l_shipdate >= '1995-01-01'
    AND l_shipdate < '1997-01-01'
    GROUP BY
    DATE_FORMAT(l_shipdate, '%Y-%m'),
    l_shipmode
    ORDER BY ship_month, l_shipmode
  2. 오른쪽 아래의 시각화 버튼을 클릭하여 결과를 확인합니다.

결과 확인

시각화 차트 구성​

  1. 기본적으로 결과는 테이블로 표시됩니다. 왼쪽 아래의 시각화 버튼을 클릭하고 선 차트 유형을 선택합니다.

선 차트 선택

  1. 필요에 따라 차트 매개변수를 구성합니다. Metabase는 다음 구성을 자동으로 생성합니다.

    구성예시 값의미
    X축ship_month배송 월
    Y축revenue매출
    계열l_shipmode운송 방식
  2. 차트 스타일을 사용자 지정합니다.

    • 설정 아이콘을 클릭하여 색상, 레이블, 범례 위치 등을 조정합니다.
    • 표시 탭에서 축 제목, 숫자 형식 등을 설정할 수 있습니다.
  3. 차트 구성이 완료되면 오른쪽 위의 저장을 클릭하여 저장합니다.

  4. 질문 이름으로 my-tpch를 입력하고 저장할 컬렉션을 선택합니다.

질문 이름 지정

대시보드 만들기​

  1. + 새로 만들기 > 대시보드를 클릭하여 새 대시보드를 만들고, 대시보드 이름으로 my-tpch를 입력합니다.

대시보드 만들기

  1. 차트 추가를 클릭하여 저장한 질문을 대시보드에 추가합니다.

질문 추가

  1. 차트 위치와 크기를 조정하고 오른쪽 위의 저장을 클릭하여 대시보드를 저장합니다.

대시보드 저장

이제 Metabase를 Apache Doris에 연결하고 데이터 분석 및 시각화 대시보드 생성을 완료했습니다.

드라이버 기능 및 제한 사항​

다음 표는 드라이버의 기능과 현재 지원 범위를 요약한 것입니다.

기능지원 상태 및 범위
내부 CatalogDoris 내부 테이블의 동기화 및 쿼리 지원
네이티브 SQL지원됨. SQL은 구성된 Doris 계정의 권한으로 실행되며, 드라이버는 구문을 읽기 전용으로 제한하지 않음
쿼리 빌더그룹 집계 및 일 단위 버킷화 지원
외부 CatalogDoris 외부 Catalog에 있는 데이터의 동기화 및 쿼리 지원. 사용 가능한 범위와 메타데이터의 완전성은 개별 커넥터에 따라 다름
네이티브 템플릿 매개변수숫자, 텍스트 및 선택적 블록 지원
복합 타입최상위 ARRAY, MAP, JSON 및 내부 구조를 노출하지 않는 복합 필드는 표시되지만, 중첩 하위 필드는 확장되지 않음
키 및 인덱스 메타데이터기본 키, 외래 키, 인덱스 및 테이블 권한은 동기화되지 않음
Metabase 쓰기 기능데이터 업로드, 다시 쓰기, 작업, 데이터 편집 및 영구 저장 모델은 지원되지 않음

고급 시나리오​

Catalog를 사용하여 외부 데이터에 접근​

연결 페이지에서 Catalog 및 데이터베이스(선택 사항)를 설정하여 Doris 외부 Catalog의 테이블을 동기화합니다.

구성예시 값설명
Cataloghive_catalog이름이 hive_catalog인 Doris Catalog 선택
Database (optional)warehouseCatalog의 warehouse 데이터베이스 선택

Catalog 구성

SQL 쿼리에서 Catalog를 명시적으로 지정합니다.

SELECT * FROM hive.warehouse.orders LIMIT 100;

매개변수화된 쿼리 사용​

드라이버는 기본적인 네이티브 SQL 템플릿 매개변수를 지원합니다. 다음 예제에서는 숫자 매개변수, 텍스트 매개변수 및 선택적 블록을 사용합니다.

SELECT
category,
COUNT(*) AS row_count,
SUM(amount) AS total_amount
FROM orders
WHERE amount > {{min_amount}}
[[AND category = {{category}}]]
GROUP BY category

category에 값이 없으면 Metabase는 선택적 블록 전체를 제거합니다.

템플릿 기능지원 상태
숫자 변수지원됨
텍스트 변수지원됨
선택적 블록 [[ ... ]]지원됨
필드 필터지원되지 않음
{{#card-id}}와 같은 카드 참조지원되지 않음
동적 테이블 참조지원되지 않음

데이터 타입​

메타데이터 동기화 중에 드라이버는 다음 표와 같이 Doris 타입을 Metabase 기본 타입에 매핑합니다.

Doris 타입Metabase 기본 타입
BOOLEANtype/Boolean
TINYINT, SMALLINT, INT, INTEGER, INT(11)과 같은 표시 너비 포함type/Integer
BIGINT, LARGEINT, BIGINT(20)과 같은 표시 너비 포함type/BigInteger
FLOAT, DOUBLEtype/Float
DECIMALtype/Decimal
DATE, DATEV2type/Date
TIME, 초의 소수 부분 정밀도 포함type/Time
DATETIME, DATETIMEV2, TIMESTAMPtype/DateTime
TIMESTAMPTZtype/DateTimeWithTZ
CHAR, VARCHAR, STRING, TEXTtype/Text
JSON, JSONBtype/JSON
ARRAYtype/Array
MAPtype/Dictionary
STRUCT, VARIANT, HLL, BITMAPtype/*

ARRAY, MAP, JSON, STRUCT 또는 VARIANT 값 내부의 중첩 필드는 Metabase 하위 필드로 확장되지 않습니다. LARGEINT는 type/BigInteger에 매핑되며 문자열로 변환할 필요가 없습니다.

성능 튜닝 권장 사항​

권장 사항설명
파티션 프루닝 사용WHERE 절에 파티션 열 필터 조건을 추가합니다. 예: WHERE date >= '2024-01-01' AND date < '2024-02-01'
구체화된 뷰 활용복잡한 집계 쿼리의 경우 Doris에서 구체화된 뷰를 생성하여 쿼리 속도를 높입니다.
결과 집합 크기 제어LIMIT를 사용하여 반환되는 행 수를 제한하고 한 번에 너무 많은 데이터를 불러오지 않도록 합니다.
쿼리 캐싱 사용Metabase는 쿼리 결과를 자동으로 캐싱합니다. 적절한 캐시 시간을 설정하면 성능을 개선할 수 있습니다.

연결 및 사용 팁​

시나리오권장 사항
드라이버 설치doris.metabase-driver.jar가 Metabase의 plugins 디렉터리에 있는지 확인하고 Metabase를 다시 시작합니다.
시간대 설정시간대 문제가 발생하면 JDBC 연결 문자열에 serverTimezone=Asia/Shanghai를 추가합니다.
파티션 테이블 최적화Doris 파티션 테이블을 적절히 생성하고 시간을 기준으로 파티셔닝 및 버킷팅하여 쿼리가 스캔하는 데이터양을 효과적으로 줄입니다.
네트워크 연결VPC 사설 연결을 사용하여 공용 네트워크 접근에 따른 보안 위험을 방지합니다.
권한 제어Doris 사용자 계정의 역할과 접근 권한을 세밀하게 설정하고 최소 권한 원칙을 따릅니다.
메타데이터 동기화Doris의 테이블 구조가 변경되면 Metabase 관리자 페이지에서 지금 데이터베이스 스키마 동기화를 클릭하여 수동으로 동기화합니다.
성능 모니터링느린 쿼리의 경우 Doris에서 SHOW QUERY PROFILE을 사용하여 성능 병목을 분석합니다.

데이터 타입 표시 이상​

Metabase에서 데이터 타입이 비정상적으로 표시되면 먼저 최신 버전의 Doris Driver를 사용하고 있는지 확인합니다. Doris largeint 타입은 SQL에서 명시적으로 변환해야 합니다.

SELECT CAST(large_int_col AS STRING) FROM table