본문으로 건너뛰기

사기 탐지 시나리오

샘플 데이터를 활용하여 카드 사기 거래를 분석하는 시나리오를 안내합니다.

SQL 에디터

사전 준비

  • 샘플 데이터가 적재되어 있어야 합니다 (make seed-demo)
  • iceberg.card.transactionsiceberg.card.fraud_labels 테이블이 필요합니다

1단계: 사기 라벨 현황 파악

전체 사기 라벨 분포를 확인합니다. 전체 거래의 약 1%가 사기 의심 대상이며, 그중 80%가 실제 사기입니다.

SELECT
fraud_type,
investigation_status,
COUNT(*) AS cnt,
ROUND(AVG(confidence_score), 3) AS avg_confidence
FROM iceberg.card.fraud_labels
GROUP BY fraud_type, investigation_status
ORDER BY cnt DESC;

2단계: MCC 코드별 사기 비율 분석

어떤 업종에서 사기가 많이 발생하는지 확인합니다.

SELECT
t.mcc_code,
COUNT(*) AS total_txn,
SUM(CASE WHEN f.is_fraud = true THEN 1 ELSE 0 END) AS confirmed_fraud,
ROUND(
CAST(SUM(CASE WHEN f.is_fraud = true THEN 1 ELSE 0 END) AS DOUBLE)
/ NULLIF(COUNT(*), 0) * 100, 2
) AS fraud_rate_pct
FROM iceberg.card.transactions t
LEFT JOIN iceberg.card.fraud_labels f ON t.txn_id = f.txn_id
GROUP BY t.mcc_code
HAVING COUNT(*) >= 100
ORDER BY fraud_rate_pct DESC
LIMIT 10;

3단계: 고액 사기 거래 상세 조회

확신도(confidence_score) 0.9 이상인 고액 사기 거래를 Federation JOIN으로 조회합니다.

SELECT
c.name, c.phone,
t.amount, t.channel, t.country,
f.fraud_type, f.confidence_score
FROM iceberg.card.transactions t
JOIN sourcedb.public.customers c ON t.customer_id = c.customer_id
JOIN iceberg.card.fraud_labels f ON t.txn_id = f.txn_id
WHERE f.is_fraud = true AND f.confidence_score >= 0.9
ORDER BY t.amount DESC
LIMIT 20;
노트

PII 마스킹 정책이 활성화되어 있으면 namephone이 마스킹되어 표시됩니다.

4단계: 채널별 사기 패턴

온라인/모바일 채널에서의 사기 비율을 분석합니다.

SELECT
t.channel,
COUNT(*) AS total,
SUM(CASE WHEN f.is_fraud = true THEN 1 ELSE 0 END) AS fraud_count,
ROUND(
CAST(SUM(CASE WHEN f.is_fraud = true THEN 1 ELSE 0 END) AS DOUBLE)
/ COUNT(*) * 100, 2
) AS fraud_rate_pct
FROM iceberg.card.transactions t
LEFT JOIN iceberg.card.fraud_labels f ON t.txn_id = f.txn_id
GROUP BY t.channel
ORDER BY fraud_rate_pct DESC;

5단계: 고객 상담과 연계

사기 신고 상담 기록과 실제 사기 라벨을 비교 분석합니다.

SELECT COUNT(*) AS fraud_consultations
FROM card_crm.public.consultations
WHERE category = 'fraud_report';

AI Agent Chat으로 수행하기

위의 모든 단계를 AI Agent Chat에서 자연어로 수행할 수 있습니다. 각 페이지 상단의 AI에게 요청 버튼을 클릭하면 현재 화면을 유지하면서 우측에 AI 채팅 패널이 열립니다.

AI Agent Chat 사이드 패널에서 대화

대화 예시

사용자: "iceberg 카탈로그에서 fraud 관련 테이블 찾아줘"
AI: [list_tables 호출] → iceberg.card 스키마에 fraud_labels 테이블이 있습니다. 컬럼: txn_id, is_fraud, fraud_type, confidence_score, investigation_status.

사용자: "card_transactions 테이블에서 fraud_label이 1인 건수 알려줘"
AI: [execute_query 호출] → fraud_labels에서 is_fraud = true인 건수를 조회합니다. 총 247건의 확인된 사기 거래가 있습니다.

사용자: "사기 거래의 평균 금액과 정상 거래의 평균 금액 비교해줘"
AI: [execute_query 호출] → transactions와 fraud_labels를 JOIN하여 비교합니다. 사기 거래 평균: ₩892,340, 정상 거래 평균: ₩156,780. 사기 거래가 약 5.7배 높습니다.

AI Agent Chat은 44개 플랫폼 도구를 활용하여 데이터 탐색, SQL 생성, 거버넌스 조회 등을 자동으로 수행합니다. 자세한 내용은 AI Agent Chat 가이드를 참조하세요.

다음 단계