shuzi

Shuzi · 셀프서비스 BI

데이터를,빗어 가지런히.

여러 소스, 여러 정의, 여러 리포트를 하나로 빗어 정리합니다. 데이터에는 버전이, 지표에는 정의가, 답에는 출처가, 권한에는 경계가 있습니다.

어지러운 건 소스입니다.어지러우면 안 되는 건 정의입니다.

  • 1세트의 지표 정의를 리포트, AI, API가 함께 사용
  • 10종의 데이터베이스에 연결 가능. 파일 업로드와 API 수집도 지원
  • 1곳행 수준 권한을 집행하는 곳. 누구도 우회할 수 없음

제품 둘러보기

노트북에서 쓰고,
대화로 묻고,
앱으로 공유합니다.

입구는 셋, 그 아래는 같은 시맨틱 레이어입니다. 어느 문으로 들어와도 같은 정의, 같은 권한, 같은 숫자입니다.

notebook · retail_q3샘플 데이터

SQL

-- 3분기 카테고리별 매출(확정 주문만)
SELECT category,
       SUM(amount) AS revenue
FROM orders
WHERE status = 'confirmed'
  AND quarter = 'Q3'
GROUP BY category
ORDER BY revenue DESC

5행 · 완료

결과

카테고리매출전 분기 대비
의류454만+3.9%
홈448만+8.2%
전자제품304만-1%
뷰티270만+1.9%
식품213만+6%

차트

카테고리별 매출

  • 454의류
  • 448홈
  • 304전자제품
  • 270뷰티
  • 213식품

제한된 SQL 샌드박스에서 실행되며, 읽기 권한이 있는 테이블만 대상으로 합니다.

agent · retail_model샘플 데이터

평소 쓰는 말로 물어보세요. Agent가 시맨틱 레이어를 읽고, 단계를 보여 주고, 답을 차트로 그립니다.

지역과 분기별 매출을 카테고리로 쌓아서 비교해 줘.

  1. cube_list_models1 개 모델
  2. cube_get_metadataretail_model
  3. cube_queryrevenue × region × quarter

권한이 있는 데이터만

세 지역 모두 매출이 분기마다 늘었습니다. 가장 큰 지역: 동부. 모든 지역에서 1위인 카테고리: 의류. 유일하게 줄어든 카테고리: 전자제품.

지역·분기·카테고리별 매출
0200400600800Q1Q2Q3동부Q1Q2Q3남부Q1Q2Q3북부
  • 의류
  • 홈
  • 뷰티
  • 전자제품
  • 식품
app · retail_overview게시됨
샘플 데이터
매출
1689만
+4.0% 전 분기 대비
매출 1위 카테고리
의류
가장 빠른 성장
홈

카테고리별 매출

  • 의류454만
  • 홈448만
  • 뷰티270만
  • 전자제품304만
  • 식품213만

채널 구성 · 의류

  • 온라인58%
  • 매장30%
  • 도매12%

행 단위 권한은 모든 열람자에게 적용됩니다.

가상의 소매업체 샘플 데이터로 만든 예시 화면입니다. 실제 데이터에 연결하지 않았고, 실제 AI도 호출하지 않습니다.

사무실에서 자주 들리는 말

  • 이 숫자는 왜 재무팀 숫자와 안 맞죠?
  • 지난달 리포트를 그때 데이터 그대로 다시 뽑을 수 있나요?
  • 저 사람한테 그 테이블 권한을 누가 줬죠?
  • 숫자 하나 보고 싶을 뿐인데, 또 데이터팀 일정을 기다려야 하네요.
  • AI가 준 숫자, 그대로 써도 될까요?
  • 리포트가 몇 번이나 바뀌어서 어느 게 맞는지 아무도 몰라요.

01 · 정의

하나의 단어,
세 개의 숫자.

재무는 인식 매출로, 영업은 수주액으로, 운영은 입금액으로 셉니다. 각자 리포트와 SQL을 따로 갖고 있어서 주간 회의가 대사 회의가 됩니다.

재무매출

1,203,400.00

SUM(recognized_amt)인식 매출 기준
영업매출

1,318,950.25

SUM(order_amt)수주액 기준
운영매출

1,176,280.40

SUM(cash_received)입금액 기준
revenue = SUM(amount) WHERE status = 'confirmed'셋 중 최대 차이 142,669.85

샘플 데이터입니다. 정의를 공유하면 리포트, AI 어시스턴트, API가 모두 같은 정의를 읽습니다.

02 · 다섯 가지 동작

소스에서 답까지,
다섯 가지 동작.

모든 단계에 버전, 정의, 기록이 있습니다. 약속이 아니라 구조로 보장합니다.

01 / 05 · 수집

지난달 리포트를 그때 데이터 그대로 다시 뽑을 수 있나요?

소스가 아무리 제각각이어도
같은 모양으로 쌓입니다.

데이터베이스, API, 업로드한 파일을 워크플로로 가져오고 변환하고 병합해 버전이 있는 불변 스냅샷으로 저장합니다. 새로고침할 때마다 새 버전이 생기고, 문제가 생기면 이전 버전으로 되돌릴 수 있습니다.

  • 워크플로 기반 수집수집과 변환을 시각적으로 구성합니다. 서로 다른 소스의 데이터는 먼저 관리되는 스냅샷으로 동기화한 뒤 함께 분석합니다.
  • 불변 버전게시된 스냅샷은 수정되지 않습니다. 추적과 롤백이 가능하고, 참조 중인 버전이 실수로 삭제되지 않습니다.
  • 읽기와 쓰기의 분리쓰기는 스케줄러만 수행하고, 쿼리는 읽기 전용 복제본을 사용합니다. API가 모르는 사이에 데이터를 바꾸는 일은 없습니다.
자세히 보기
workflow · revenue_daily샘플 데이터

소스

  • PostgreSQL
  • SQL Server
  • REST API
  • CSV · XLSX

워크플로

  1. 01추출
  2. 02변환
  3. 03키 기준 병합

스냅샷

  • v13parquet 불변
  • v12parquet
  • v11parquet

snapshot v13 · parquet · immutable

02 / 05 · 모델링

이 숫자는 왜 재무팀 숫자와 안 맞죠?

정의는 한 번만.

캔버스에서 테이블, 조인, 차원, 측정값을 시맨틱 모델로 구성하고 검증한 뒤 게시합니다. 리포트, AI 어시스턴트, 오픈 API가 같은 정의를 읽으므로 각자 따로 계산하는 일이 없습니다.

  • 시각적 모델링테이블, 조인, 차원, 측정값을 캔버스에서 구성하며, 필요하면 네이티브 정의도 볼 수 있습니다.
  • 초안에서 게시까지먼저 검증하고, 전체를 새 리비전으로 게시합니다. 과거의 정의는 바뀌지 않습니다.
  • 일관된 계산 기준보고서, AI 어시스턴트와 공개 API가 같은 시맨틱 모델로 계산하며 결과를 검증할 수 있습니다.
자세히 보기
semantic_model · valuation샘플 데이터
valuationsrevenue · count
funds
regions
calendar
products
measures:
  - name: revenue
    type: sum
    sql: amount
    filters:
      - sql: "{CUBE}.status = 'confirmed'"       

ref(revenue)

  • 리포트
  • AI 어시스턴트
  • API
  • PG 포트
  • MCP

revenue = SUM(amount) WHERE status = 'confirmed'

03 / 05 · 탐색

숫자 하나 보고 싶을 뿐인데, 또 데이터팀 일정을 기다려야 하네요.

현업이 직접 클릭하고
분석가는 줄 서지 않습니다.

게시된 모델에서 차원을 고르고, 측정값을 끌어 놓고, 차트를 바꾸고, 필터를 더하세요. 숫자 뒤에 있는 이유는 클릭 한 번이면 보입니다.

  • 끌어서 탐색차원, 측정값, 차트 유형을 자유롭게 바꾸면 결과가 즉시 갱신됩니다.
  • 드릴다운과 필터합계에서 상세로 내려가며, 필터는 차트와 함께 저장됩니다.
  • 분석가를 위한 SQL분석가는 데이터를 준비할 때 SQL을 쓸 수 있습니다. 다만 결과는 관리되는 테이블로 저장되어야 리포트에서 사용할 수 있습니다.
자세히 보기
explore · revenue_model샘플 데이터

차원

측정값

매출

view → members → query → chart

04 / 05 · 질문

AI가 준 숫자, 그대로 써도 될까요?

데이터에 묻고,
출처가 있는 답을 받으세요.

자연어로 질문하세요. 어시스턴트는 시맨틱 레이어를 통해서만 데이터에 접근합니다. 모델 목록 보기, 메타데이터 읽기, 쿼리 실행. 모든 단계가 공개되고 질문한 사람 본인의 권한으로 실행됩니다.

  • 단계가 보입니다어떤 도구를 썼고 어떤 멤버를 조회했는지 한눈에 보이며 검토할 수 있습니다.
  • 같은 권한 경계당신에게 보이지 않는 모델과 행은 어시스턴트에게도 보이지 않습니다.
  • 모델 서비스는 선택관리자가 OpenAI 호환 제공자, 모델, 키를 설정하며, 키는 암호화되어 저장됩니다.
자세히 보기
ask · revenue_model샘플 데이터

어느 지역의 매출이 더 높나요?

  1. cube_list_models1 개 모델
  2. cube_get_metadatarevenue_model
  3. cube_queryrevenue × region

권한이 있는 데이터만

샘플 답변: 북부 지역의 매출이 더 높습니다. 지역과 분기를 선택하면 범위별 샘플 결과를 볼 수 있습니다.

북부
1,003,000.00
남부
666,000.00

cube_list_models → cube_get_metadata → cube_query

05 / 05 · 게시

리포트가 몇 번이나 바뀌어서 어느 게 맞는지 아무도 몰라요.

모든 변경에 흔적이 남고,
모든 버전으로 돌아갈 수 있습니다.

차트가 대시보드가 되고, 초안은 자동 저장되며, 게시하면 불변 버전이 고정됩니다. 문제가 생기면 이전 어느 버전으로든 복원하고, 환경 간 이전은 YAML로 내보내서 합니다.

  • 자동 저장되는 초안편집 내용이 서버에 자동 저장되므로 다른 컴퓨터에서도 이어서 작업할 수 있습니다.
  • 게시와 복원게시하면 이력 버전이 고정됩니다. 복원할 때는 먼저 현재 초안을 보관한 뒤 선택한 버전으로 돌아갑니다.
  • 코드로서의 리포트차트와 대시보드를 YAML로 내보냅니다. 묶음 단위로 검증하고 가져오며, 하나라도 실패하면 전체가 롤백됩니다.
자세히 보기
valuation.dashboard.yml샘플 데이터
valuation게시됨 · v7자동 저장됨
매출 합계1,669,000.00

버전

  • v7현재
  • v6·
  • v5·

↺ 복원: v6

⇣ YAML 내보내기

dashboard.yml · version 1 · dry-run → apply

03 · 데이터 구조

다섯 개의 층,
하나의 단일 출처.

원천 데이터에서 화면 속 답까지, 각 층은 하나의 역할과 하나의 경계를 가집니다. 층을 골라 그 안에 무엇이 있는지 보세요.

  • 사람이 만지는 모든 것은 아래 층을 읽고, 우회하지 않습니다. 노트북, Agent, 대시보드, 데이터 앱, JSON API, MCP, PG 포트가 모두 같은 문을 지납니다.

    • 노트북·SQL
    • Agent 대화
    • 대시보드·앱
    • API · MCP · PG 포트
  • 행 단위 권한은 단 한 곳에서만 적용됩니다. 판단할 수 없으면 쿼리를 통과시키지 않고 거부합니다.

    • 적용 지점은 하나
    • 불확실하면 거부
    • 어디서나 같은 행
  • 매출은 필터 조건과 함께 한 번만 정의되고, 모든 차트·답변·API 호출이 그것을 재사용합니다. 게시된 모델은 읽는 스냅샷을 고정하므로, 쿼리 중간에 새 데이터와 옛 데이터가 섞이지 않습니다.

    • 차원
    • 측정값
    • 조인
    • 스냅샷 고정
  • 새로 고칠 때마다 변경할 수 없는 새 버전이 기록되며, 제자리에서 고치는 일은 없습니다. 쓰기는 스케줄러만 하고, 나머지는 모두 읽기 전용입니다.

    • 변경 불가
    • Parquet
    • 기본 키 필수
  • 열 가지 데이터베이스에 연결하고, 파일을 올리고, API에서 가져옵니다. 워크플로가 일정에 따라 추출·변환·병합합니다.

    • 10종 데이터베이스
    • CSV · Excel
    • API 수집
    • 예약 워크플로

개념도입니다. 층 이름은 제품 아키텍처를 단순화한 것입니다.

04 · AI가 만든

말로 설명하면
동작하는 앱이 나옵니다.

보고 싶은 것을 Agent에게 말해 주세요. 시맨틱 레이어를 읽고 단일 파일 데이터 앱을 작성해 바로 미리 보여 줍니다. 확인한 뒤 데이터 앱으로 저장하세요.

지역과 카테고리별 매출 대시보드를 만들어 줘.

app · sales_overviewAgent가 생성

매출 개요

1689만매출 · Q3 · 샘플 데이터

045090013501800Q1Q2Q3전체 지역
  • 의류
  • 홈
  • 뷰티
  • 전자제품
  • 식품
샌드박스 · 내 권한

가격을 바꿔 보고 매출과 마진이 어떻게 되는지 보게 해 줘.

app · price_whatifAgent가 생성

가격 시뮬레이션

매출
474만
+22만
매출총이익률
62.8%
+1.8

매출 예측

오늘
샌드박스 · 내 권한

가입 코호트별 고객 유지율을 보여 줘.

app · retentionAgent가 생성

유지율

코호트·월별 유지율

샌드박스 · 내 권한

고객을 매출과 성장 기준으로 찍고 이상치를 표시해 줘.

app · account_mapAgent가 생성

고객 지도

매출 →↑ 성장이상치
샌드박스 · 내 권한

가상의 소매업체 샘플 데이터로 만든 예시 앱입니다. 생성된 앱은 네트워크가 막힌 샌드박스에서 실행되며, 호스트를 통해 내 권한으로 데이터를 읽습니다.

05 · 거버넌스

같은 테이블, 다른 사람,
다른 행.

인증, 스페이스 권한, 행 수준 권한, 감사가 겹겹이 조여 줍니다. 행 수준 권한은 시맨틱 레이어에서 한 번만 집행되며, 리포트, AI 어시스턴트, API, PG 포트에 똑같이 적용됩니다. 판단을 받지 못하면 허용이 아니라 거부합니다.

체험: 신원 전환

로그인한 사용자
투자 기업지역평가액
싱허 1호동부1,284,500.00
윈산 자산동부963,200.50
란완 에너지남부752,100.00
베이천 파크북부1,438,700.25
하이탕 펀드남부612,000.00
쑹시 솔라동부884,000.00
위안슈 물류북부523,300.00
랑룬 테크남부709,800.00
칭허 애그리북부381,600.75

보이는 행 9 / 9

필터 — (no filter)

합계 7,549,201.50

네 개의 진입점, 하나의 결과

  • 리포트7,549,201.50
  • AI 어시스턴트7,549,201.50
  • API7,549,201.50
  • PG 포트7,549,201.50
  1. 01

    신원

    계정과 OIDC 로그인. 데이터에 접근하기 전에 먼저 누구인지 확인합니다.

  2. 02

    스페이스 및 리소스 권한

    자산은 개인 또는 팀 스페이스에 속하며, 폴더와 리소스는 구성원에게 부여합니다.

  3. 03

    행 수준 권한

    권한 테이블이 각자가 볼 수 있는 행을 결정하며, 시맨틱 레이어에서 한 번만 집행됩니다.

  4. 04

    감사

    주요 작업은 기록으로 남아, 누가 언제 무엇을 했는지 조회할 수 있습니다.

  • 샌드박스 안의 SQL

    SQL 콘솔은 제한된 DuckDB 샌드박스에서 실행되며 외부 파일 접근이 꺼져 있습니다.

  • 아웃바운드 정책

    워크플로와 연결에서 나가는 요청은 모두 하나의 전역 아웃바운드 접근 정책을 따릅니다.

  • AI도 같은 권한

    어시스턴트는 질문한 사람으로서 조회하며, 그보다 넓은 권한을 물려받지 않습니다.

06 · 개방성

들여오기도 쉽고,
내보내기도 쉽게.

네이티브 JSON API, MCP, PG 프로토콜 포트, 그리고 YAML 형태의 차트와 대시보드. 데이터와 정의를 화면 안에 가두지 않습니다.

데이터 소스

  • PostgreSQL
  • MySQL
  • Oracle
  • SQL Server
  • ClickHouse
  • Doris · StarRocks
  • 파일 · API 가져오기

Cube Core

  1. 데이터 모델링차원, 측정값, 조인, 뷰를 한 번만 정의
  2. 접근 제어행 권한의 유일한 적용 지점, 뷰만 공개
  3. 스냅샷 고정모든 쿼리는 불변 데이터 버전을 읽음
  4. 개방 APIJSON API · MCP · PG 포트

시맨틱 레이어

소비자

  • 대시보드와 데이터 앱워크스페이스 안
  • AI 에이전트MCP
  • 외부 시스템JSON API
  • BI 도구와 ExcelPG 포트 · Power Query
예시 그림입니다. PG 포트는 관리자가 배포 시 열며 내부망 전용입니다. Excel은 Power Query로 JSON API를 호출하거나 CSV를 가져옵니다. Cube Core 자체에는 Excel 직접 연결이 없습니다.
POST /api/v1/query
Authorization: Bearer <token>

{
  "model_id": "valuation",
  "view": "asset_view",
  "query": {
    "measures": ["asset_view.revenue"],
    "dimensions": ["asset_view.region"],
    "order": [["asset_view.revenue", "desc"]],
    "limit": 100
  }
}

// → { "data": [ … ], "release_id": "…", "snapshot_set_id": "…" }

네이티브 JSON 쿼리이며, 결과에 게시 버전과 스냅샷 식별자가 함께 포함됩니다.

지원하는 데이터베이스

  • PostgreSQL
  • MySQL
  • Oracle
  • SQL Server
  • ClickHouse
  • TiDB
  • Doris
  • StarRocks
  • KingbaseES
  • DuckDB

CSV / XLSX 업로드와 API 수집도 지원합니다.

데이터베이스 연결은 SSH 점프 호스트와 상호 TLS를 지원합니다

07 · 누가 쓰나요

하나의 플랫폼,
세 가지 역할이 각자 필요한 것을.

비즈니스 팀

  • 이전데이터팀이 숫자를 뽑아 주기를 기다림

    지금게시된 모델을 직접 탐색

  • 이전숫자가 어디서 왔는지 설명하지 못함

    지금AI 답변에 도구 단계와 정의가 함께 제공됨

  • 이전리포트마다 숫자가 다름

    지금하나의 공통 지표 정의 사용

자세히 보기

데이터 팀

  • 이전리포트마다 SQL 하나씩

    지금준비는 한 번, 모델링도 한 번, 게시도 한 번

  • 이전수작업 새로고침, 추적하기 어려운 오류

    지금워크플로로 새로고침하며 매번 새 버전 생성

  • 이전정의를 바꾸면 다 깨질까 두려움

    지금초안으로 검증하고 새 리비전으로 전체 게시

자세히 보기

IT 및 경영진

  • 이전관행과 단체 채팅에 의존하는 권한

    지금스페이스 권한과 행 수준 권한을 한 곳에서 집행

  • 이전내보내기와 스크린샷이 곳곳에

    지금조회는 인가된 API를 거치고 작업은 감사됨

  • 이전AI가 권한을 넘을까 걱정

    지금AI는 질문자와 같은 권한, 단계도 확인 가능

자세히 보기

자주 묻는 질문

Shuzi는 무엇인가요?

Shuzi는 데이터 수집, 준비, 시맨틱 모델링, 분석, 게시를 하나의 흐름으로 연결해 팀이 공통의 지표 정의로 일하게 해 줍니다.

SQL을 알아야 하나요?

비즈니스 사용자는 게시된 리포트, 탐색 화면, AI 어시스턴트를 쓸 수 있습니다. 분석가는 데이터 준비 단계에서 SQL을 쓸 수 있습니다.

AI가 제가 볼 수 없는 데이터를 볼 수 있나요?

아니요. 어시스턴트는 질문한 사람으로서 같은 권한 체계와 행 수준 권한을 거쳐 조회합니다.

다른 도구에서도 조회할 수 있나요?

네. 게시된 모델은 JSON API, MCP, PG 포트로 사용할 수 있으며, 실제 접근에는 인증과 권한이 필요합니다.

이 사이트의 데이터는 실제 데이터인가요?

아니요. 이 사이트는 로컬 샘플 데이터와 미리 정해 둔 답변만 사용합니다. 실제 데이터는 로그인 후 본인의 권한 범위에서 사용할 수 있습니다.

데이터를어지러움에서 선명함으로.

먼저 샘플로 체험해 보고, 그다음 자신의 데이터를 가져오세요.