본문으로 건너뛰기

거버넌스 쿼리

PII 마스킹, 데이터 품질, 감사 등 거버넌스 기능을 검증하는 쿼리 예제입니다.

PII 마스킹 시연

PII 마스킹 정책이 활성화된 상태에서 실행하면, name은 해시 마스킹, phonecard_number는 부분 마스킹이 적용됩니다.

SELECT
c.name, -- PII: 해시 마스킹
c.phone, -- PII: 부분 마스킹
t.card_number, -- PII: 부분 마스킹
t.amount,
t.txn_datetime,
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;

데이터 품질 -- NULL 비율 점검 (Completeness)

SELECT
COUNT(*) AS total,
SUM(CASE WHEN email IS NULL THEN 1 ELSE 0 END) AS null_email,
ROUND(CAST(SUM(CASE WHEN email IS NULL THEN 1 ELSE 0 END) AS DOUBLE) / COUNT(*) * 100, 2) AS null_email_pct,
SUM(CASE WHEN gender IS NULL THEN 1 ELSE 0 END) AS null_gender,
SUM(CASE WHEN phone = '010-0000' THEN 1 ELSE 0 END) AS invalid_phone
FROM sourcedb.public.customers;

데이터 품질 -- 고아 FK 점검 (Consistency)

SELECT COUNT(*) AS orphan_transactions
FROM iceberg.card.transactions t
LEFT JOIN sourcedb.public.customers c ON t.customer_id = c.customer_id
WHERE c.customer_id IS NULL;

데이터 품질 -- 미래 날짜 점검 (Freshness)

SELECT COUNT(*) AS future_date_count
FROM iceberg.card.transactions
WHERE CAST(txn_datetime AS TIMESTAMP) > LOCALTIMESTAMP;

데이터 품질 -- NULL MCC 코드 점검

SELECT
COUNT(*) AS total,
SUM(CASE WHEN mcc_code IS NULL THEN 1 ELSE 0 END) AS null_mcc,
ROUND(CAST(SUM(CASE WHEN mcc_code IS NULL THEN 1 ELSE 0 END) AS DOUBLE) / COUNT(*) * 100, 2) AS null_mcc_pct
FROM iceberg.card.transactions;

상담 데이터 일관성 점검

사기 신고(fraud_report)인데 감정 분석이 positive인 비정상 레코드를 조회합니다.

SELECT COUNT(*) AS inconsistent_count
FROM card_crm.public.consultations
WHERE category = 'fraud_report'
AND sentiment = 'positive';