dbt Semantic Layer에 앱을 연결해 dbt에서 정의한 거버넌스 metric을 dimension과 시간 기준으로 나눠 warehouse SQL 없이 쿼리합니다.
dbt Semantic Layer에 앱 연결하기
dbt Semantic Layer에 앱을 연결해 dbt에서 정의한 거버넌스 metric을 dimension과 시간 기준으로 나눠 warehouse SQL을 작성하지 않고 쿼리하세요.
dbt Semantic Layer는 거버넌스 metric을 위한 dbt Cloud의 API입니다. 데이터 팀이 MetricFlow로 dbt에 유지하는 정의로, 어디서 쿼리하든 일관되게 계산됩니다. 이 connector를 사용하면 Lovable 앱이 warehouse에 SQL을 작성하는 대신 해당 metric을 직접 쿼리할 수 있습니다.
dbt Semantic Layer를 연결하면 앱은 다음 작업이 가능합니다:
- dimension과 시간 grain으로 나눈 거버넌스 metric 쿼리
- metadata 쿼리로 dbt 프로젝트에 정의된 metric과 dimension 탐색
- 결과 필터링, 정렬, 개수 제한
- BI 스택 전반에서 사용하는 동일한 metric 정의 읽기
- 대시보드, 임베디드 분석, metric 탐색기 구동
이 connector는 read-only입니다. 앱은 metric 값을 읽고, 데이터 팀은 계속해서 dbt에서 metric을 정의하고 유지합니다.
주요 활용 사례 및 예시 앱
| 예시 앱 | 프롬프트 예시 | 설명 |
|---|---|---|
| 전사 KPI 대시보드 | dbt Semantic Layer를 사용해 월별 매출과 활성 고객을 지역별 필터와 함께 보여주는 KPI 대시보드를 만들어줘. | 거버넌스 metric을 앱 안의 차트로 바꿉니다. 앱이 metric 값을 월별·지역별로 쿼리하고 모두가 신뢰할 수 있는 추세를 렌더링합니다. |
| 임베디드 분석 | dbt Semantic Layer를 사용해 각 계정의 핵심 metric을 시간에 따라 보여주는 고객 대상 사용량 페이지를 만들어줘. | 자체 데이터 스택의 metric을 고객에게 보여줍니다. 앱이 계정 dimension으로 metric을 나눠 제품 안에 표시합니다. |
| metric 탐색기 | dbt Semantic Layer를 사용해 metric을 고르고 원하는 dimension으로 나눠 결과를 차트로 그리는 metric 탐색기를 만들어줘. | 정의된 metric 위에서의 셀프 서비스 탐색. 앱이 metadata 쿼리로 사용 가능한 metric과 dimension을 탐색하고 사용자가 조합할 수 있게 합니다. |
| 자연어 metric 질문 | dbt Semantic Layer를 사용해 "지난 분기 지역별 매출은 얼마였어?" 같은 질문에 답하는 채팅 인터페이스를 만들어줘. | 거버넌스된 수치로 질문에 답합니다. 앱이 각 질문을 metric 쿼리로 매핑하므로 답이 생성된 SQL이 아니라 dbt 정의에서 나옵니다. |
| 이사회 및 경영진 보고 | dbt Semantic Layer를 사용해 핵심 metric의 분기별 추세를 담은 경영진 보고 페이지를 만들어줘. | 단일 진실 공급원에서 나오는 정기 보고. 앱이 경영진이 주시하는 metric의 분기 grain을 쿼리해 보고서로 배치합니다. |
| 팀 스코어카드 | dbt Semantic Layer를 사용해 이번 주 metric을 지난주와 비교하는 팀 스코어카드를 만들어줘. | 일관된 정의로 성과를 추적합니다. 앱이 동일한 metric을 주간 grain으로 쿼리하고 주 대비 변화를 강조합니다. |
dbt Semantic Layer 연결 방식
- Queries: 앱은 Semantic Layer의
/api/graphqlendpoint에 있는 GraphQL API를 통해 metric을 쿼리합니다. dbt의 MetricFlow가 metric 정의에서 warehouse SQL을 생성합니다. - Gateway: 요청은 Lovable의 connector 게이트웨이를 통해 프록시되며, dbt service token이 주입됩니다. token은 앱 코드에 노출되지 않습니다.
- Environment: 모든 Semantic Layer 쿼리에는
environmentId인수가 포함됩니다. Lovable이 연결에서 environment ID를 연결된 프로젝트로 동기화하므로 앱 코드에서 사용할 수 있습니다.
Semantic Layer 쿼리는 dbt Cloud 계정과 데이터 warehouse를 통해 실행됩니다. 사용량은 dbt Cloud 요금제에 반영되며, warehouse 컴퓨트 비용은 Lovable이 아니라 warehouse 제공업체가 청구합니다.
dbt Semantic Layer 연결하기
dbt Semantic Layer를 연결할 수 있는 사람은 요금제와 워크스페이스 설정에 따라 달라집니다. 자세한 내용은 연결을 만들 수 있는 사람을 참고하세요.
각 연결은 하나의 dbt environment를 쿼리합니다. 예를 들어 staging과 production 환경을 분리하려고 서로 다른 environment ID나 service token으로 여러 연결을 만들 수 있습니다.
사전 준비
dbt Semantic Layer를 연결하기 전에 다음을 준비하세요:
- dbt Semantic Layer가 포함된 요금제(Starter, Enterprise, Enterprise+)의 dbt Cloud 계정
- 쿼리하려는 environment에 구성된 dbt Semantic Layer와 dbt 프로젝트에 정의된 MetricFlow metric
- Lovable 워크스페이스에서 연결을 만들 수 있는 권한
Step 1: dbt Cloud에서 자격 증명 얻기
dbt Cloud에서 세 가지 값이 필요합니다. Semantic Layer host, environment ID, service token입니다.
Semantic Layer 설정 열기
dbt Cloud에 로그인해 Account settings를 열고 프로젝트를 선택한 뒤 해당 프로젝트의 Semantic Layer 설정을 엽니다.
Semantic Layer host 복사
Semantic Layer 설정에 표시된 GraphQL API host를 복사합니다 (예: semantic-layer.cloud.getdbt.com). host는 리전별로 다르므로 dbt가 계정에 보여주는 정확한 값을 복사하세요.
environment ID 복사
Semantic Layer가 구성된 environment의 숫자 ID를 복사합니다. 앱이 metric을 쿼리하는 대상 environment입니다.
service token 생성
Account settings → API tokens → Service tokens로 이동해 Semantic Layer Only와 Metadata Only 권한 집합을 가진 token을 만듭니다. token을 복사하세요. dbtc_로 시작합니다.
service token은 비밀번호처럼 동작합니다. 안전하게 보관하고 공개적으로 공유하지 마세요. 다음 단계에서 필요합니다.
자세한 안내는 dbt 문서를 참고하세요: Set up the dbt Semantic Layer.
Step 2: dbt Semantic Layer를 Lovable에 연결
Connectors에서 dbt Semantic Layer 열기
Connectors → App connectors로 이동해 dbt Semantic Layer를 선택합니다.
연결 추가
Add connection을 클릭합니다.
연결 구성
- Display name: 연결 이름을 지정합니다 (예:
dbt Semantic Layer Prod). - Semantic Layer host: Semantic Layer 설정에 있는 GraphQL API host를 입력합니다 (예:
semantic-layer.cloud.getdbt.com).https://나 경로 없이 호스트 이름만 입력하세요. - Environment ID: Semantic Layer 설정에 있는 숫자 dbt environment ID를 입력합니다.
- Service token: dbt service token을 붙여넣습니다(
dbtc_로 시작).
이 연결을 사용할 사람 선택
Who can use this connection에서 워크스페이스 내 누가 이 연결을 사용할 수 있는지 결정합니다:
- Only you(기본값): 연결을 만든 사람만 연결과 관련 데이터를 사용할 수 있습니다.
- Invite specific people: 본인과 명시적으로 추가된 워크스페이스 구성원만 연결과 관련 데이터를 사용할 수 있습니다.
- Invite entire workspace: Invite entire workspace를 클릭하면 Lovable 워크스페이스의 모든 구성원이 연결을 사용할 수 있습니다.
자세한 내용은 연결을 관리할 수 있는 사람을 참고하세요.
연결
Connect를 클릭합니다. Lovable이 dbt environment에 대해 자격 증명을 검증하므로 host, environment ID, service token이 잘못되면 연결이 실패합니다.
연결되면 프로젝트에서 빌드하는 사람은 (구성된 연결 수준 접근에 따라) Lovable 채팅에서 프로젝트를 dbt Semantic Layer에 연결하도록 요청할 수 있습니다. 이후 Lovable 앱이 dbt 프로젝트에 정의된 metric과 dimension을 쿼리할 수 있습니다.
제한 사항
dbt Semantic Layer connector는 read-only입니다. 다음은 할 수 없습니다:
- dbt model, metric, job 생성·수정 또는 dbt run 트리거
- dbt 프로젝트에 정의된 metric과 dimension 밖의 데이터 쿼리
- dbt Core 단독 연결(Semantic Layer가 활성화된 dbt Cloud가 필요함)
- 연결당 둘 이상의 dbt environment 쿼리(environment마다 별도의 연결을 만드세요)
- end-user별 dbt 인증 지원(각 연결은 연결된 프로젝트가 공유하는 하나의 service token을 사용함)
dbt Semantic Layer 연결에서 프로젝트 연결 해제
Editor 이상 권한을 가진 사용자는 연결 자체를 삭제하지 않고 특정 프로젝트만 연결 해제할 수 있습니다. 연결은 다른 프로젝트에서 계속 사용할 수 있습니다.
연결 해제 방법:
Connectors 열기
Connectors를 열고 App connectors로 이동한 뒤 **dbt Semantic Layer**를 선택합니다.
연결 열기
관리할 연결을 엽니다.
프로젝트 선택
Linked projects에서 연결 해제할 프로젝트를 선택합니다.
확인
Unlink projects를 클릭하고 확인합니다.
연결 해제 후 해당 프로젝트는 이 연결을 통해 dbt Semantic Layer에 접근할 수 없습니다. 프로젝트에 dbt Semantic Layer가 다시 필요하면 사용 가능한 아무 연결에나 연결할 수 있습니다.
dbt Semantic Layer 연결 삭제
워크스페이스 admin 또는 owner가 dbt Semantic Layer 연결을 삭제할 수 있습니다. 다른 구성원은 자신이 만든 연결이거나 명시적으로 접근 권한을 부여받은 경우 연결을 삭제할 수 있습니다.
연결 삭제는 영구적이며 되돌릴 수 없습니다. 연결된 모든 프로젝트에서 인증 정보가 제거되며, 새 연결을 만들기 전까지 이 연결을 사용하던 앱은 동작을 멈춥니다.
삭제 전에 Linked projects 섹션에서 현재 이 연결을 사용 중인 프로젝트를 먼저 확인하세요.
삭제 방법:
Connectors 열기
Connectors를 열고 App connectors로 이동한 뒤 **dbt Semantic Layer**를 선택합니다.
연결 열기
삭제할 연결을 엽니다.
연결된 프로젝트 확인
Linked projects 섹션을 확인합니다.
삭제
Delete this connection에서 Delete를 클릭하고 확인합니다.