Next
cube quick start
Cube.dev 소개 영상
Cube.dev는 시맨틱레이어를 근간으로 파워풀한 BI를 제공하는 솔루션/시맨틱레이어를 오픈소스로 제공합니다.

큰 흐름은 다음과 같습니다.
Semantic Layer - Agent - Semantic Layer Runtime - DB

용어 설명
- cube
- 비즈니스 개체(고객, 품목, 주문)를 나타내며, 각 개체 간의 관계를 정의 (이것을 기반으로 에이전트가 데이터를 탐색하는 지식 그래프로 형성)
- view
- 데이터 소비자가 상호작용하는 인터페이스 생성 (AI에이전트, BI사용자 및 앱을 위한 최종 데이터 제품), 큐브를 기반한 데이터 그래프
API를 통해 AI에이전트, 애플리케이션 및 도구가 표준 프로토콜로 시맨틱 레이어와 상호 작용 합니다.(REST, GraphSQL, SQL 표준을 사용)
Cube-core에서 제공하는 주요 API 중 REST 주요 항목
- 등록된 cube meta 조회
- 실 데이터 조회
- 쿼리 변환
- 일반 SQL → Cube SQL
- Cube SQL → 일반 SQL
Cube.dev REST API: https://cube.dev/docs/product/apis-integrations/core-data-apis/rest-api/reference#example
## 등록된 데이터 조회
curl -H "Authorization: TOKEN" -G http://localhost:4000/cubejs-api/v1/meta
## 실 데이터 조회
curl -H "Authorization: TOKEN" -G --data-urlencode 'query={"measures":["users.count"]}' http://localhost:4000/cubejs-api/v1/load
### Request with http method POST
### Use POST to fix problem with query length limits
curl -X POST -H "Content-Type: application/json" -H "Authorization: TOKEN" --data '{"query":{"measures":["users.count"]}}' http://localhost:4000/cubejs-api/v1/load
## 쿼리 변환
### 일반 SQL -> Cube SQL
curl -X POST -H "Authorization: TOKEN" -H "Content-Type: application/json" -d '{"query": "SELECT 123 AS value UNION ALL SELECT 456 AS value UNION ALL SELECT 789 AS value"}' http://localhost:4000/cubejs-api/v1/cubesql
### Cube SQL -> 일반 SQL
curl -H "Authorization: TOKEN" -G --data-urlencode 'query={"measures":["orders.count"]}' --data-urlencode 'format=rest' http://localhost:4000/cubejs-api/v1/sql사전적 의미
시맨틱 레이어(Semantic Layer)란 복잡한 _원시 데이터_를 비즈니스 사용자에게 친숙하고 _의미 있는 용어_로 변환해주는 중간 번역 계층
→ db, table, column 정보와 pk, 다른 테이블 과의 연관 관계가 정리되어 저장된 레이어
CREATE TABLE items (
item_code VARCHAR(50),
original_item_name TEXT,
category VARCHAR(100),
item_name VARCHAR(255),
food_type VARCHAR(100),
capacity_calories VARCHAR(100),
ingredients TEXT,
nutrition_facts TEXT,
allergy_info TEXT,
manufacturer VARCHAR(255),
report_number VARCHAR(100),
remarks TEXT,
PRIMARY KEY (item_code, original_item_name)
);cubes:
- name: users
sql_table: users
title: "사용자(User) 데이터"
description: >
서비스에 가입한 사용자 정보를 담고 있는 기본 테이블입니다.
사용자 생성일자, 소속 조직, 국가 정보를 기반으로
사용자 증가 추이, 조직별 사용자 분포, 국가별 사용자 분석 등에 활용됩니다.
joins:
- name: organizations
sql: "{CUBE}.organization_id = {organizations.id}"
relationship: many_to_one
dimensions:
- name: organization_id
sql: organization_id
type: number
title: "조직 ID"
description: "사용자가 속한 조직(Organization)의 고유 식별자"
primary_key: true
meta:
synonyms: ["회사ID", "조직코드", "organization", "org_id"]
filterable: true
sortable: true
- name: created_at
sql: created_at
type: time
title: "사용자 가입일"
description: "사용자가 서비스에 가입한 날짜 및 시간"
meta:
synonyms: ["가입일", "생성일", "등록일", "회원가입일"]
filterable: true
sortable: true
- name: country
sql: country
type: string
title: "국가"
description: "사용자가 등록한 국가 정보"
meta:
synonyms: ["국적", "지역", "country_name", "사용자 국가"]
filterable: true
sortable: true
measures:
- name: count
type: count
sql: id
title: "전체 사용자 수"
description: "등록된 전체 사용자 수를 집계합니다."
meta:
synonyms: ["사용자수", "회원수", "총회원", "유저수"]