부서별 데이터 분석
각 부서(마케팅, 재무, HR)의 담당자가 GenD 플랫폼에서 자신에게 허용된 데이터를 분석하는 실전 시나리오를 안내합니다.
아래는 부서 스코프가 걸린 analyst 계정이 보는 카탈로그입니다. 같은 화면을 admin 이 열면 권한별 접근 비교 의 전체 뷰처럼 카탈로그가 훨씬 많이 보입니다 — 이 차이가 워크스페이스 + DataGrant 가 만들어내는 격리입니다.

:::note 부서 이름은 예시입니다
이 문서의 marketing / finance / hr 은 설명용 시나리오 이름이며, 실제 배포에
그 이름의 그룹이 있어야 한다는 뜻은 아닙니다. GenD 의 격리 단위는
워크스페이스(/tenants/<slug>) 이고, 부서 구분은 그 안에서 DataGrant 로 표현합니다.
위 캡처도 실제 운영 워크스페이스 스코프 계정으로 찍은 것입니다.
:::
사전 준비
- 샘플 데이터가 적재되어 있어야 합니다 (
make seed-demo) - 부서에 대응하는 워크스페이스(
/tenants/<slug>) 와 소속 계정이 있어야 합니다 - 각 부서 범위에 맞는 DataGrant 가 부여되어 있어야 합니다
부서별 데이터 접근 범위
| 부서 | 접근 카탈로그 | 주요 테이블 | 주요 업무 |
|---|---|---|---|
| 마케팅 | card_crm, iceberg.card | customer_segments, marketing_consents, transactions | 고객 세그먼트, 캠페인 분석 |
| 재무 | sourcedb, iceberg.card, card_log | credit_assessments, transactions, app_events | 신용 평가, 비용 모니터링 |
| HR | sourcedb.public.customers | customers | 직원/고객 인사 데이터 (PII 마스킹) |
Gold 마트부터 시작하기 (분석가 권장)
분석 작업의 첫 진입점은 항상 Medallion Gold 계층입니다. Gold 테이블은 비즈니스 집계·PII 마스킹·스키마 통일이 모두 끝난 상태이므로 안전하게 직접 쿼리할 수 있습니다.
- 카탈로그 트리에서 테이블을 클릭해 상세 패널을 열고, 헤더에 노란색 Gold 배지가 있는지 확인합니다.
- About 패널의
Medallion: Gold행이 보이면 분석 안전. Bronze(갈색)/Silver(회색) 배지면 PII 노출 가능성·미정제 상태이니 데이터 엔지니어에 문의 후 사용합니다. - 분석 마트를 더 빠르게 찾으려면 데이터 마트 메뉴의 목록 화면에서 Gold 배지 행만 골라봅니다.
-- Gold 계층 분석 마트 예시 (시드 데이터)
SELECT * FROM iceberg.datax_analytics.store_sales_summary LIMIT 10;
SELECT * FROM iceberg.datax_analytics.catalog_sales_ranking LIMIT 10;
Bronze/Silver/Gold가 익숙하지 않다면 Medallion 데이터 레이어를 먼저 1분만 읽어보세요.
시나리오 A: 마케팅 부서 — 고객 세그먼트 분석
"우리 고객 중 이탈 위험이 높은 세그먼트는 어디인가?"
A-1. 카탈로그 접근 확인
마케팅 부서 사용자로 로그인하면, DataGrant에 의해 card_crm과 iceberg.card만 카탈로그 트리에 표시됩니다.
카탈로그 트리:
├── card_crm
│ └── public
│ ├── consultations
│ ├── customer_segments
│ └── marketing_consents
└── iceberg
└── card
├── transactions
├── merchants
└── products
A-2. 고객 세그먼트별 현황 분석
SQL 에디터에서 고객 세그먼트 분포를 확인합니다.
SELECT
segment_name,
COUNT(*) AS customer_count,
ROUND(AVG(lifetime_value), 0) AS avg_ltv,
ROUND(AVG(churn_probability), 3) AS avg_churn_prob
FROM card_crm.public.customer_segments
GROUP BY segment_name
ORDER BY customer_count DESC;
예상 결과:
| segment_name | customer_count | avg_ltv | avg_churn_prob |
|---|---|---|---|
| high_value | 20,000 | 850,000 | 0.05 |
| at_risk | 15,000 | 320,000 | 0.45 |
| new | 25,000 | 180,000 | 0.15 |
| dormant | 18,000 | 95,000 | 0.72 |
| churned | 22,000 | 50,000 | 0.95 |
A-3. 이탈 위험 고객의 거래 패턴
이탈 확률 50% 이상인 고객의 최근 거래 패턴을 분석합니다.
SELECT
cs.segment_name,
t.channel,
COUNT(*) AS txn_count,
ROUND(AVG(t.amount), 0) AS avg_amount,
ROUND(SUM(t.amount), 0) AS total_amount
FROM card_crm.public.customer_segments cs
JOIN iceberg.card.transactions t
ON cs.customer_id = t.customer_id
WHERE cs.churn_probability >= 0.5
GROUP BY cs.segment_name, t.channel
ORDER BY total_amount DESC
LIMIT 10;
card_crm(PostgreSQL)과 iceberg(Iceberg) 카탈로그를 자동으로 Federation JOIN합니다.
A-4. 마케팅 동의 현황
캠페인 발송 전, 마케팅 동의 현황을 확인합니다.
SELECT
consent_type,
consent_status,
COUNT(*) AS cnt
FROM card_crm.public.marketing_consents
GROUP BY consent_type, consent_status
ORDER BY consent_type, consent_status;
시나리오 B: 재무 부서 — 신용 평가 분석
"신용등급별 연체율과 DTI 분포를 파악하라"
B-1. 카탈로그 접근 확인
재무 부서 사용자는 sourcedb, iceberg.card, card_log에 접근할 수 있습니다.
B-2. 신용등급별 연체 현황

SELECT
ca.risk_grade,
COUNT(*) AS assessment_count,
ROUND(AVG(ca.credit_score), 0) AS avg_score,
ROUND(AVG(ca.dti_ratio), 3) AS avg_dti,
SUM(CASE WHEN ca.is_delinquent = true THEN 1 ELSE 0 END) AS delinquent_count,
ROUND(
CAST(SUM(CASE WHEN ca.is_delinquent = true THEN 1 ELSE 0 END) AS DOUBLE)
/ NULLIF(COUNT(*), 0) * 100, 2
) AS delinquency_rate_pct
FROM sourcedb.public.credit_assessments ca
GROUP BY ca.risk_grade
ORDER BY ca.risk_grade;
예상 결과:
| risk_grade | assessment_count | avg_score | avg_dti | delinquent_count | delinquency_rate_pct |
|---|---|---|---|---|---|
| A | 40,000 | 780 | 0.25 | 200 | 0.50 |
| B | 60,000 | 680 | 0.35 | 1,800 | 3.00 |
| C | 50,000 | 580 | 0.45 | 5,000 | 10.00 |
| D | 30,000 | 480 | 0.55 | 6,000 | 20.00 |
| E | 20,000 | 380 | 0.65 | 8,000 | 40.00 |
B-3. 고위험 고객의 거래 패턴
D/E 등급 고객의 고액 거래를 모니터링합니다.
SELECT
c.name,
ca.risk_grade,
ca.credit_score,
t.amount,
t.channel,
t.txn_datetime
FROM sourcedb.public.credit_assessments ca
JOIN sourcedb.public.customers c ON ca.customer_id = c.customer_id
JOIN iceberg.card.transactions t ON ca.customer_id = t.customer_id
WHERE ca.risk_grade IN ('D', 'E')
AND t.amount >= 500000
ORDER BY t.amount DESC
LIMIT 20;
PII 마스킹 정책이 활성화되어 있으면 name 컬럼이 해시 마스킹되어 표시됩니다.
B-4. 비용 대시보드 확인

사이드바 하단 ⚙ 관리 콘솔 → 운영 & 모니터링 → 비용 대시보드 메뉴에서 쿼리 비용을 모니터링합니다. 부서별 쿼리 사용량과 스캔 바이트 통계를 확인할 수 있습니다.
시나리오 C: HR 부서 — 인사 데이터 조회
"고객/직원 데이터를 PII 마스킹이 적용된 상태로 조회"
C-1. 제한된 접근 범위
HR 부서 사용자는 sourcedb.public.customers 테이블에만 접근할 수 있으며, 다음 정책이 적용됩니다:
| 정책 | 유형 | 효과 |
|---|---|---|
hr_active_only | Row Filter | 활성 고객만 표시 (is_active = true) |
hr_mask_income | Column Mask | 연소득 비공개 처리 |
C-2. PII 마스킹 적용 상태 확인

사이드바 하단 ⚙ 관리 콘솔 → 접근 제어 & 보안 → PII 관리 페이지에서 마스킹 정책이 올바르게 설정되어 있는지 확인합니다.
C-3. 마스킹된 데이터 조회
SELECT
customer_id,
name,
phone,
email,
annual_income,
credit_score
FROM sourcedb.public.customers
WHERE is_active = true
LIMIT 10;
HR 사용자에게 표시되는 결과 (마스킹 적용):
| customer_id | name | phone | annual_income | credit_score | |
|---|---|---|---|---|---|
| C001 | a3f2b1... | 010-****-1234 | k***@g***.com | 비공개 | 750 |
| C002 | b7e4c3... | 010-****-5678 | l***@n***.com | 비공개 | 680 |
name은 해시 마스킹, phone/email은 부분 마스킹, annual_income은 비공개 처리됩니다. Row Filter에 의해 is_active = false인 비활성 고객은 결과에 포함되지 않습니다.
데이터 품질 확인
각 부서의 데이터를 분석하기 전, 사이드바 → 거버넌스 → 데이터 품질 페이지에서 데이터 품질 점수를 확인하는 것을 권장합니다.

4축 품질 점수:
- 완전성(Completeness): NULL 비율
- 유일성(Uniqueness): 중복 비율
- 최신성(Freshness): 마지막 업데이트 시간
- 일관성(Consistency): 참조 정합성
AI Agent Chat으로 수행하기
위의 모든 분석을 AI Agent Chat에서 자연어로 수행할 수 있습니다. 각 페이지 상단의 AI에게 요청 버튼을 클릭하면 현재 화면을 유지하면서 우측에 AI 채팅 패널이 열립니다.
마케팅 부서 대화 예시
사용자: "이탈 위험 고객 세그먼트별 거래 패턴 보여줘"
AI: [execute_query 호출] → at_risk 세그먼트의 온라인 채널 이용률이
전체 평균보다 30% 낮습니다. 모바일 앱 활성화 캠페인을 추천합니다.
재무 부서 대화 예시
사용자: "D등급 이상 고객의 50만원 이상 거래 건수 추이를 보여줘"
AI: [execute_query 호출] → 최근 3개월간 D/E등급 고액 거래가 15% 증가했습니다.
리스크 관리팀 검토를 권장합니다.