Lovable한국어 문서

Cube에 앱을 연결해 데이터 팀이 이미 정의한 비즈니스 지표로 대시보드와 리포트를 만드세요.

Cube에 앱 연결하기

Cube에 앱을 연결해 데이터 팀이 이미 정의한 비즈니스 지표로 대시보드와 리포트를 만드세요.

Cube는 시맨틱 레이어(semantic layer)를 기반으로 하는 분석 플랫폼입니다. 시맨틱 레이어는 대시보드와 리포트가 함께 재사용하는 공유 지표 정의 모음입니다. Cube 커넥터를 사용하면 Lovable 앱이 직접 만든 대시보드, 리포트, 도구에 이 지표를 표시할 수 있습니다. 이 커넥터는 호스팅 서비스인 Cube Cloud와, 직접 호스팅하는 오픈 소스 버전인 Cube Core 모두에서 작동합니다.

Cube는 앱 + 채팅 커넥터로 제공됩니다. 하나의 공유 연결이 빌드 중 프로젝트 채팅과 게시된 앱 모두에서 작동합니다.

Cube를 사용하면 앱에서 다음과 같은 작업이 가능합니다.

  • 데이터 모델에 있는 측정값(measure, 매출 같은 지표)과 차원(dimension, 지역이나 월 같은 그룹 기준) 목록 조회하기
  • 필터, 정렬 순서, 행 수 제한을 적용해 측정값을 차원별·시간별로 조회하는 구조화된 쿼리 실행하기
  • 구조화된 쿼리로 답할 수 없는 질문에 Semantic SQL(데이터 모델에 대한 SQL 쿼리) 사용하기
  • 데이터 팀이 Cube에서 설정한 규칙으로 연결을 통한 모든 쿼리를 고객 한 곳이나 역할 하나로 제한하기

데이터 팀이 이미 관리하는 지표 정의가 앱에 필요할 때 Cube를 사용하세요. Cube가 이 정의를 바탕으로 데이터 웨어하우스용 SQL을 작성하므로 앱에서 계산을 다시 만들 필요가 없습니다. 이 커넥터는 읽기 전용입니다.

주요 활용 사례 및 예시 앱

다음 예시는 Cube로 만들 수 있는 앱과 시작할 때 쓸 수 있는 프롬프트를 보여 줍니다.

예시 앱프롬프트 예시설명
회사 지표 대시보드Cube를 사용해서 orders 뷰의 월별 매출과 주문 수를 보여 주고 상태별 필터가 있는 대시보드를 만들어줘.다른 리포트와 같은 숫자를 보여 줍니다.
앱이 데이터 모델의 측정값을 월별로 쿼리합니다. 합계는 Cube에서 데이터를 읽는 다른 모든 도구와 일치합니다.
고객 사용량 페이지Cube를 사용해서 고객사 Acme의 최근 12개월 핵심 지표를 보여 주는 사용량 페이지를 만들어줘.고객에게 해당 고객의 데이터를 보여 줍니다.
앱이 Acme용으로 설정된 Cube 연결을 사용합니다. 데이터 모델이 고객별로 필터링하면 Cube는 Acme의 행만 반환하며, 앱을 사용하는 모든 사람이 그 행을 봅니다.
지표 용어집Cube를 사용해서 데이터 모델의 모든 뷰, 측정값, 차원을 제목, 유형과 함께 나열하는 페이지를 만들어줘.데이터 모델에 무엇이 있는지 보여 줍니다.
앱이 데이터 모델을 읽고 측정값과 차원을 큐브나 뷰별로 묶습니다.
지표 탐색기Cube를 사용해서 측정값을 선택하고 차원별로 나눠 결과를 차트로 보여 주는 탐색기를 만들어줘.데이터 팀의 도움 없이 팀이 지표를 탐색하게 합니다.
앱이 사용 가능한 측정값과 차원을 읽고 선택할 때마다 쿼리를 만듭니다.
분기별 이사회 리포트Cube를 사용해서 매출, 신규 고객, 이탈의 분기별 추세를 담은 이사회 리포트 페이지를 만들어줘.하나의 숫자 출처로 정기 리포트를 만듭니다.
앱이 각 측정값을 분기별로 쿼리하고 결과를 리포트로 보여 줍니다.
팀 스코어카드Cube를 사용해서 이번 주 측정값을 지난주와 비교하는 팀 스코어카드를 만들어줘.매주 같은 정의로 비교합니다.
앱이 두 주의 같은 측정값을 쿼리하고 변화를 보여 줍니다.

Cube 연결 작동 방식

데이터 팀은 각 지표를 Cube 데이터 모델이라는 한곳에서 정의합니다. 데이터 모델은 지표를 큐브(cube)와 뷰(view)로 묶습니다. 큐브는 보통 데이터베이스의 테이블에 대응하고, 뷰는 앱과 리포트에서 쓰도록 여러 큐브를 결합합니다.

Lovable은 Cube용 코드를 작성할 때 기본적으로 데이터 모델을 먼저 읽습니다. 데이터 모델에서 찾은 측정값과 차원 이름을 사용하며, 뷰를 우선합니다. Lovable은 대부분의 쿼리를 구조화된 쿼리로 작성합니다. 구조화된 쿼리는 사용할 측정값, 차원, 필터를 나열합니다. 구조화된 쿼리로 답할 수 없는 질문에는 Semantic SQL을 사용합니다.

Lovable은 기본적으로 자신이 작성하는 각 구조화된 쿼리에 행 수 제한을 추가합니다. 쿼리에 행 수 제한이 없으면 Cube는 최대 10,000행을 반환합니다. 쿼리에서 설정할 수 있는 행 수 제한은 최대 50,000행입니다. 데이터 팀은 Cube에서 두 값을 모두 변경할 수 있습니다.

Lovable은 커넥터 게이트웨이를 통해 Cube에 요청을 보냅니다. 게이트웨이는 자격 증명을 보관하고 각 요청에 토큰을 추가합니다. Cube 자격 증명은 게시된 앱에 노출되지 않습니다.

이 토큰은 JWT(JSON Web Token)로, 요청이 허용되었음을 증명하는 짧은 서명된 텍스트입니다. 기본적으로 Cube는 배포의 API 시크릿으로 서명된 토큰만 받아들입니다. API 시크릿은 Cube 구성에 들어 있는 비밀 값입니다. 토큰에는 요청을 설명하는 값도 담깁니다. 예를 들어 고객사 Acme용 토큰에는 "tenant": "acme" 같은 값이 들어갑니다. Cube는 이 값을 보안 컨텍스트(security context)라고 부릅니다. 액세스 정책 같은 Cube 배포의 규칙은 보안 컨텍스트를 사용해 쿼리가 반환할 데이터를 결정합니다.

연결을 통한 모든 쿼리는 프로젝트 채팅에서든 게시된 앱에서든 같은 보안 컨텍스트를 사용합니다. 따라서 앱을 사용하는 모든 사람이 같은 접근 권한을 갖습니다.

배포에서 CUBEJS_DEV_MODE=true를 설정했다면 보안 컨텍스트에 의존하지 마세요. 이 설정은 로컬 테스트용인 개발 모드를 시작합니다. 개발 모드에서는 토큰이 유효하지 않아도 Cube가 쿼리에 응답하며, 이때 보안 컨텍스트를 전혀 적용하지 않습니다. Connect에서 실행하는 테스트도 통과합니다.

프로젝트 채팅에서 Lovable은 승인을 요청하지 않고 데이터 모델을 읽고 구조화된 쿼리를 실행합니다. SELECT나 WITH로 시작하는 Semantic SQL 쿼리도 묻지 않고 실행합니다. 그 밖의 요청에는 데이터를 읽기만 하더라도 Lovable이 먼저 승인을 요청합니다. SQL 문이 둘 이상 들어 있는 Semantic SQL 쿼리가 그 예입니다. 승인 요청을 멈추려면 연결을 열고 Connection settings 아래에서 Ask before making changes를 Always allow로 설정하세요. 이 설정은 본인과 이 연결에만 적용됩니다. 게시된 앱은 승인을 요청하지 않습니다. 프로젝트 채팅에서 커넥터 작업 승인하기를 참고하세요.

Cube 연결 방법

Cube 연결을 만들 수 있는 사람은 플랜과 워크스페이스 설정에 따라 달라집니다. 앱 + 채팅 커넥터는 Free, Pro, Business 플랜에서 기본적으로 사용할 수 있습니다. Enterprise 플랜에서는 처음에 사실상 비활성화되어 있습니다. admin이 Connectors → Admin settings → App + chat connectors에서 변경하기 전까지 연결 및 클라이언트를 만들 수 있는 사용자 설정의 기본값이 No one이기 때문입니다.

서로 다른 배포나 보안 컨텍스트로 Cube 연결을 여러 개 만들 수 있습니다. 환경, 팀, 고객을 분리할 때 유용합니다.

연결이 만들어지면 연결을 사용할 프로젝트에 링크할 수 있습니다. 프로젝트에서 빌드하는 사람은 누구나 프로젝트 채팅에서 Lovable에게 자신의 프로젝트를 이 연결에 링크해 달라고 요청할 수 있습니다.

사전 요구사항

Cube를 연결하기 전에 다음을 준비하세요.

Cube Core는 기본적으로 일반 HTTP로 제공됩니다. HTTPS로 제공하려면 Cube Core 앞에 리버스 프록시를 두세요. 리버스 프록시는 HTTPS 요청을 받아 Cube로 전달하는 웹 서버입니다.

Cube 쿼리는 Cube 배포와 데이터 웨어하우스에서 실행됩니다. Cube Cloud 사용량은 Cube Cloud 플랜에 집계되고, 쿼리가 사용한 처리량은 웨어하우스 제공업체가 청구합니다. Lovable은 이 쿼리에 요금을 청구하지 않습니다. 일부 Cube Cloud 플랜은 하루 쿼리 수를 제한합니다. 이 한도에는 Cube Cloud 계정의 모든 도구에서 보낸 쿼리가 포함됩니다. 앱이 데이터를 자주 불러오면 이 한도에 도달할 수 있으며, 그러면 Cube Cloud가 쿼리를 중단합니다. Cube 문서의 Limits and quotas를 참고하세요.

연결 방식 선택

연결 방식은 두 가지이며, API 시크릿으로 토큰에 서명하는 주체가 서로 다릅니다.

  • API 시크릿 방식에서는 배포의 API 시크릿을 Lovable에 제공합니다. Lovable이 매시간 새 토큰에 서명하므로 연결이 만료되지 않습니다. 보안 컨텍스트는 Lovable에서 설정합니다. API 시크릿을 Lovable과 공유할 수 있다면 이 방식을 사용하세요.
  • API 토큰 방식에서는 이미 가지고 있는 토큰을 붙여 넣습니다. Lovable은 API 시크릿을 받지 않습니다. 토큰에 담긴 값이 보안 컨텍스트가 됩니다. 토큰이 만료되면 토큰을 교체할 때까지 앱의 쿼리가 실패합니다. API 시크릿을 공유할 수 없다면 이 방식을 사용하세요.

연결 양식에서 이 방식의 라벨은 Connect with your API secret입니다.

1단계: 호스트와 API 시크릿 가져오기

Cube 배포에서 두 가지 값을 가져와야 합니다.

배포 호스트 찾기

Cube Cloud에서 배포의 Settings → API Credentials를 열고 REST API 탭을 선택합니다. Endpoint URL에서 https://와 경로를 뺀 호스트 이름만 복사합니다. 예를 들면 purple-reindeer.gcp-us-central1.cubecloudapp.dev입니다.

Cube Core에서는 배포의 공개 호스트 이름을 사용합니다. HTTPS 포트가 443이 아니면 포트를 추가합니다. 예를 들면 cube.example.com:8443입니다.

API 시크릿 복사

API 시크릿은 배포 구성에 있는 CUBEJS_API_SECRET의 값입니다. Cube Cloud에서는 배포의 Settings → Environment Variables를 엽니다. CUBEJS_API_SECRET을 찾아 값 옆의 복사 아이콘을 클릭합니다. Cube Core에서는 배포의 .env 파일이나 환경에서 값을 복사합니다.

배포의 CUBEJS_API_SECRETS에 시크릿 목록이 있다면 그 목록에서 시크릿 하나를 복사합니다.

API 시크릿을 안전하게 보관하고 공개적으로 공유하지 마세요. API 시크릿을 가진 사람은 배포에 대한 전체 접근 권한이 있는 토큰을 만들 수 있습니다. API 시크릿은 연결 양식에만 붙여 넣으세요. 프롬프트나 채팅 메시지, 앱 코드에는 넣지 마세요.

자세한 내용은 Cube 문서의 REST (JSON) API와 Security context를 참고하세요.

2단계: Cube를 Lovable에 연결

연결 양식을 열고 1단계에서 준비한 값을 입력합니다.

Connectors에서 Cube 열기

Connectors를 열고 Cube를 선택합니다. 카탈로그를 여는 다른 위치는 커넥터를 찾는 위치를 참고하세요.

연결 추가

Add connection을 클릭하고 App + chat connector를 선택합니다. 양식은 접을 수 있는 Details, Configure connection, Sharing 섹션으로 나뉩니다.

연결 이름 지정

Details 아래에 Lovable이 연결 이름을 자동으로 채우며, 이 이름은 바꿀 수 있습니다. 이름은 Lovable 내부에서 연결을 식별하는 데만 사용됩니다.

Connect with your API secret 선택

Configure connection 아래에서 Connect with your API secret을 선택합니다.

연결 구성

Configure connection 아래에 다음 값을 입력합니다.

  1. Deployment host: 1단계에서 확인한 호스트 이름입니다.
  2. API secret: 1단계에서 복사한 API 시크릿입니다.
  3. Security context(선택 사항): 데이터 모델이 고객이나 역할별로 필터링한다면 Advanced settings를 클릭합니다. 그런 다음 {"tenant": "acme"}처럼 값을 JSON 객체로 입력합니다. 그렇지 않으면 이 필드를 비워 둡니다. Lovable은 이 값을 각 토큰에 추가합니다.

보안 컨텍스트에는 다음 규칙이 적용됩니다.

  • 2 KB 이하의 JSON 객체여야 합니다.
  • 최대 4단계까지 중첩할 수 있습니다. 가장 바깥 객체가 첫 번째 단계입니다. 다른 목록이나 객체 안에 있는 목록이나 객체는 한 단계씩 깊어집니다. 예를 들어 {"tenant": "acme"}는 1단계이고, {"user": {"roles": ["admin"]}}는 3단계입니다.
  • 시간 값인 exp, iat, nbf를 포함할 수 없습니다. 각 토큰의 유효 시점은 Lovable이 제어하기 때문입니다.

액세스 정책에서 Cube Cloud 그룹이나 사용자 속성을 사용한다면 이 값을 cubeCloud 객체에 넣습니다. 예를 들면 {"cubeCloud": {"groups": ["marketing"], "userAttributes": {"country": "United States"}}}입니다. 그러면 Cube는 Cube Cloud에 로그인한 사용자에게 적용할 때와 같은 방식으로 정책을 적용합니다. Cube 문서의 Using cloud groups and user attributes with Core Data APIs를 참고하세요.

이 연결을 사용할 수 있는 사람 선택

Sharing 아래에서 연결은 기본적으로 본인만 사용할 수 있으며 Private 라벨이 표시됩니다. 공유하려면 Share with others를 클릭합니다. 그런 다음 이메일로 워크스페이스 멤버를 추가하거나 Invite entire workspace를 클릭해 Lovable 워크스페이스의 모든 사람이 연결을 사용할 수 있게 합니다.

접근 권한이 있는 모든 사람은 같은 보안 컨텍스트로 Cube를 쿼리합니다. 자세한 내용은 연결 및 클라이언트를 사용할 수 있는 사용자를 참고하세요.

연결

Connect를 클릭합니다. Lovable은 연결을 저장하기 전에 서명된 토큰으로 데이터 모델을 읽습니다. 이 테스트로 호스트와 API 시크릿이 올바른지 확인할 수 있습니다.

이 테스트로는 보안 컨텍스트가 제대로 작동하는지 알 수 없습니다. 연결을 프로젝트에 링크한 뒤 Lovable에게 쿼리를 실행해 달라고 요청하세요. 그리고 쿼리가 예상한 행만 반환하는지 확인하세요.

연결 양식에서 이 방식의 라벨은 Connect with an API token입니다.

1단계: 호스트와 API 토큰 가져오기

Cube 배포에서 두 가지 값을 가져와야 합니다.

배포 호스트 찾기

Cube Cloud에서 배포의 Settings → API Credentials를 열고 REST API 탭을 선택합니다. Endpoint URL에서 https://와 경로를 뺀 호스트 이름만 복사합니다. 예를 들면 purple-reindeer.gcp-us-central1.cubecloudapp.dev입니다.

Cube Core에서는 배포의 공개 호스트 이름을 사용합니다. HTTPS 포트가 443이 아니면 포트를 추가합니다. 예를 들면 cube.example.com:8443입니다.

API 토큰 가져오기

Lovable은 만료까지 7일이 남지 않은 토큰을 거부합니다. 만료일이 그보다 늦은 토큰도 그 날짜까지만 작동하므로 만료되지 않는 토큰을 사용하세요.

Cube Cloud에서 Settings → API Credentials를 열고 REST API 탭을 선택합니다. 예시 명령에서 Authorization: 뒤에 토큰이 표시됩니다. 눈 아이콘을 클릭해 토큰을 표시한 다음 복사합니다.

토큰을 직접 만들려면 보안 컨텍스트 값을 JWT에 넣습니다. 그런 다음 배포의 API 시크릿과 HS256 서명 알고리즘으로 JWT에 서명합니다.

API 토큰을 안전하게 보관하고 공개적으로 공유하지 마세요. 토큰은 비밀번호처럼 작동합니다. 토큰은 연결 양식에만 붙여 넣으세요. 프롬프트나 채팅 메시지, 앱 코드에는 넣지 마세요.

자세한 내용은 Cube 문서의 REST (JSON) API와 JSON Web Token authentication을 참고하세요.

2단계: Cube를 Lovable에 연결

연결 양식을 열고 1단계에서 준비한 값을 입력합니다.

Connectors에서 Cube 열기

Connectors를 열고 Cube를 선택합니다. 카탈로그를 여는 다른 위치는 커넥터를 찾는 위치를 참고하세요.

연결 추가

Add connection을 클릭하고 App + chat connector를 선택합니다. 양식은 접을 수 있는 Details, Configure connection, Sharing 섹션으로 나뉩니다.

연결 이름 지정

Details 아래에 Lovable이 연결 이름을 자동으로 채우며, 이 이름은 바꿀 수 있습니다. 이름은 Lovable 내부에서 연결을 식별하는 데만 사용됩니다.

Connect with an API token 선택

Configure connection 아래에서 Connect with an API token을 선택합니다.

연결 구성

Configure connection 아래에 다음 값을 입력합니다.

  1. Deployment host: 1단계에서 확인한 호스트 이름입니다.
  2. API token: 1단계에서 가져온 토큰입니다.

이 연결을 사용할 수 있는 사람 선택

Sharing 아래에서 연결은 기본적으로 본인만 사용할 수 있으며 Private 라벨이 표시됩니다. 공유하려면 Share with others를 클릭합니다. 그런 다음 이메일로 워크스페이스 멤버를 추가하거나 Invite entire workspace를 클릭해 Lovable 워크스페이스의 모든 사람이 연결을 사용할 수 있게 합니다.

접근 권한이 있는 모든 사람은 같은 보안 컨텍스트로 Cube를 쿼리합니다. 자세한 내용은 연결 및 클라이언트를 사용할 수 있는 사용자를 참고하세요.

연결

Connect를 클릭합니다. Lovable은 토큰의 만료일을 읽습니다. 그런 다음 데이터 모델을 읽어 호스트와 토큰을 테스트합니다. 두 테스트를 모두 통과하면 Lovable이 연결을 저장합니다.

이 테스트로는 보안 컨텍스트가 제대로 작동하는지 알 수 없습니다. 연결을 프로젝트에 링크한 뒤 Lovable에게 쿼리를 실행해 달라고 요청하세요. 그리고 쿼리가 예상한 행만 반환하는지 확인하세요.

연결되면 프로젝트에서 빌드하는 누구나 프로젝트 채팅에서 Lovable에게 자신의 프로젝트를 Cube에 링크해 달라고 요청할 수 있습니다(구성된 연결 수준 접근 권한에 따라). 그러면 Lovable 앱이 빌드 중에도, 게시한 뒤에도 Cube 데이터 모델의 측정값과 차원을 쿼리할 수 있습니다.

보안 컨텍스트, API 시크릿, 토큰을 변경하려면 연결을 엽니다. Configure connection 아래에 새 값을 입력하고(보안 컨텍스트는 Advanced settings 아래에 있습니다) Update를 클릭합니다.

연결을 삭제해도 Cube에서는 아무것도 바뀌지 않습니다. API 시크릿은 계속 유효하며, 붙여 넣은 토큰도 마찬가지입니다. 이 값들이 더는 작동하지 않게 하려면 Cube에서 API 시크릿을 변경하세요. 배포에서 CUBEJS_API_SECRETS를 사용한다면 그 목록에서 이전 시크릿을 제거하세요.

API 시크릿을 변경하면 이전 시크릿으로 서명된 모든 토큰이 작동을 멈춥니다. 이 토큰을 사용하는 다른 앱과 도구는 새 토큰을 받을 때까지 작동하지 않습니다.

제한 사항

Cube 커넥터로는 다음 작업을 할 수 없습니다.

  • 앱 사용자마다 별도의 보안 컨텍스트 부여하기. 각 연결은 링크된 모든 프로젝트가 공유하는 하나의 보안 컨텍스트를 나타냅니다.
  • 공개 HTTPS 호스트 이름이 없는 배포에 연결하기. 사설 네트워크에 있거나 IP 주소로 접근하는 배포가 그 예입니다.
  • 다른 키로 토큰을 검증하는 배포용 토큰에 서명하기. ID 제공업체(별도의 로그인 서비스)의 키로 토큰을 검증하는 배포가 그 예입니다. 이 경우에는 해당 제공업체에서 발급한 토큰으로 API 토큰 방식을 사용하세요. Lovable은 만료까지 7일 이상 남은 토큰만 받아들입니다.

문제 해결

Connect를 클릭했을 때 Cube가 자격 증명을 받아들이지 않으면 Lovable에 Cube did not validate your credentials. 메시지가 표시됩니다. 이유를 보려면 Show error를 클릭하세요.

Cube 연결 관리

연결은 Connectors에서 관리합니다. **Cube**를 선택한 다음 연결을 여세요.

  • Unlink projects를 사용하면 다른 프로젝트에서는 연결을 계속 사용할 수 있게 두고 특정 프로젝트의 Cube 접근 권한만 제거할 수 있습니다. 단계별 절차는 연결에서 프로젝트 링크 해제를 참고하세요.
  • Delete the connection을 사용하면 워크스페이스에서 연결을 완전히 제거합니다. 삭제는 영구적입니다. 링크된 모든 프로젝트에서 자격 증명이 제거되고, Cube를 사용하는 앱 기능은 새 연결을 추가할 때까지 작동하지 않습니다. 단계와 삭제 권한은 연결 삭제를 참고하세요.

On this page