소요 시간: ~1시간 | 사전 조건: 02. 가상 데이터 생성 완료 (17개 Bronze 테이블 필요) 핵심 메시지: “Raw 데이터를 신뢰할 수 있는 분석용 데이터로 바꾸는 과정을 자연어 한 줄로 자동화한다”
이 모듈에서 사용하는 Databricks 기능
| 기능 | 설명 | 공식 문서 |
|---|---|---|
| SDP (Spark Declarative Pipelines) | 이전 이름 DLT(Delta Live Tables). 데이터 파이프라인을 SQL/Python으로 “선언적”으로 정의하면, 실행 순서·증분 처리·에러 복구를 Databricks가 자동 관리합니다. | docs |
| Expectations | SDP에서 데이터 품질 규칙을 선언하는 기능. expect("규칙명", "조건")으로 위반 레코드를 감지·격리합니다. | docs |
| Medallion Architecture | Bronze(원본) → Silver(정제) → Gold(집계) 3단계 데이터 레이어 패턴. 원본을 보존하면서 단계적으로 데이터 품질을 높입니다. | docs |
| Databricks Jobs | 노트북/파이프라인을 스케줄링하여 자동 실행하는 기능. 매일 6시에 파이프라인 실행 같은 자동화에 사용합니다. | docs |
개요
17개 Bronze 테이블의 Raw 로그 데이터에는 결측치, 중복, 이상치, 타입 불일치 등 현실 세계의 데이터 품질 문제가 존재합니다. 이 모듈에서는:- 수동 CTAS로 Bronze→Silver→Gold 변환 로직을 이해한 뒤
- **SDP(Spark Declarative Pipeline)**로 동일 로직을 선언적으로 자동화합니다
참고: 데이터 품질 위반 레코드를 격리하는 quarantine 스키마는 01. 환경 설정에서 이미 생성했습니다.
Genie Code에서 전체 파이프라인을 한 번의 대화로 생성합니다.
Part A: 데이터 품질 문제 이해하기
Bronze 데이터에 의도적으로 포함된 품질 이슈
| 이슈 유형 | 테이블 | 구체적 문제 | 영향 |
|---|---|---|---|
| 결측치 (NULL) | viewing_logs | program_title이 NULL (OTT 시청 시) | Genie Space 질의 시 빈 결과 |
| 결측치 (NULL) | media_playback_events | hdr_type이 NULL (SDR 콘텐츠) | 대시보드 HDR 비율 왜곡 |
| 결측치 (NULL) | streaming_buffer_events | cdn_host가 NULL (로컬 재생) | 네트워크 분석 누락 |
| 중복 레코드 | system_boot_events | 동일 device+timestamp 중복 (로그 재전송) | 부팅 횟수 과집계 |
| 중복 레코드 | acr_events | 30초 간격 fingerprint 중복 (네트워크 재시도) | ACR 매칭 통계 왜곡 |
| 이상치 | resource_utilization | cpu_usage_pct > 100 (센서 오류) | 평균 CPU 사용률 왜곡 |
| 이상치 | viewing_logs | duration_sec < 0 또는 > 86400 | 시청 시간 합계 오류 |
| 이상치 | streaming_buffer_events | latency_ms > 10000 (네트워크 장애) | 평균 레이턴시 왜곡 |
| 타입 불일치 | wifi_connection_events | signal_strength_dbm이 양수 (부호 오류) | 신호 분석 반전 |
| 참조 무결성 | 모든 테이블 | 존재하지 않는 device_id (삭제된 디바이스) | 조인 시 데이터 손실 |
| 타임스탬프 이상 | app_launch_events | session_end < session_start | 세션 시간 음수 |
| 비즈니스 규칙 위반 | ad_impressions | AD_COMPLETE 이벤트 뒤에 AD_START | 퍼널 분석 오류 |
Genie Code 프롬프트: 데이터 품질 진단
품질 진단 결과 해석
Part B: Silver Layer — 정제 & 표준화
Silver 변환 원칙
| 원칙 | 적용 규칙 |
|---|---|
| 중복 제거 | event_id 기준 DEDUP, 최신 타임스탬프 우선 |
| NULL 처리 | 비즈니스 키는 DROP, 분석 컬럼은 DEFAULT 값 채움 |
| 이상치 필터링 | 물리적 불가능 값 DROP, 통계적 이상치는 FLAG 컬럼 추가 |
| 타입 정규화 | 타임스탬프 UTC 통일, 문자열 TRIM/LOWER |
| 참조 무결성 | devices 마스터에 없는 device_id는 quarantine 테이블로 분리 |
| 파티셔닝 | 날짜 기반 파티션 (event_date) 추가 |
Silver 테이블 목록
| Silver 테이블 | 원본 Bronze | 주요 변환 |
|---|---|---|
silver.devices_cleaned | devices | 중복 제거, region/country 표준화 |
silver.viewing_sessions | viewing_logs | 중복 제거, NULL program_title → “Unknown”, 이상 duration 필터, 세션 ID 부여 |
silver.app_sessions | app_launch_events | BEGIN/END 쌍 매칭, 세션 duration 계산, 고아 이벤트 필터 |
silver.system_metrics | resource_utilization | 이상치 클리핑(0~100%), 1분 → 5분 집계, 결측 구간 보간 |
silver.boot_events | system_boot_events | 중복 제거, ON/OFF 쌍 매칭 |
silver.streaming_quality | streaming_buffer_events | latency 이상치 필터, bitrate 변환 정규화 |
silver.media_sessions | media_playback_events | START/STOP 쌍 매칭, NULL hdr_type → “SDR” |
silver.network_events | wifi_connection_events | signal_strength 부호 보정, CONNECTED/DISCONNECTED 쌍 매칭 |
silver.ad_funnel | ad_impressions | VAST 이벤트 시퀀스 정합성 검증, 순서 역전 필터 |
silver.acr_content | acr_events | 중복 fingerprint 제거, match_confidence < 0.5 필터 |
silver.voice_interactions | voice_command_events | transcript 정규화, 빈 transcript 필터 |
silver.iot_interactions | thinq_device_events | command/ack 쌍 매칭, 응답시간 이상치 필터 |
silver.panel_health | panel_diagnostics | OLED/LCD 분리, 시간순 정렬 |
silver.error_events | error_crash_events | 중복 제거, severity 표준화 |
silver.firmware_history | firmware_updates | OTA 시퀀스 완성도 검증, 실패 건 flag |
💡 VAST(Video Ad Serving Template)란? 디지털 광고 표준 프로토콜입니다. 광고 이벤트가AD_START→FIRST_QUARTILE→MIDPOINT→THIRD_QUARTILE→AD_COMPLETE순서로 발생하며, 이 순서가 역전된 레코드는 네트워크 재전송으로 인한 데이터 오류입니다.
Genie Code 코드 생성 → 확인 → 적용 흐름
Genie Code가 코드를 생성하면 다음 순서로 진행합니다:- Plan 확인: Genie Code가 “이렇게 할 예정입니다”라는 실행 계획을 보여줍니다. 읽어보고 의도한 작업이 맞는지 확인합니다.
- Allow 클릭: 계획이 맞으면 **“Allow in this thread”**를 클릭합니다. (절대 “Always allow” 금지!)
- 코드 생성 확인: 노트북에 초록색으로 새 코드가 표시됩니다. 우측 Genie Code 패널에 Accept all 버튼이 나타납니다.
- Accept all 클릭: 코드를 수락하면 노트북에 반영됩니다.
- 실행: 노트북 상단의 Run all 또는 셀별 실행 버튼(▶)으로 코드를 실행합니다.
📸 [스크린샷]: 초록색 코드 → Accept all 버튼 → 노트북 반영
💡 팁: 코드가 마음에 들지 않으면 Accept all 대신 Reject all을 클릭하고, 구체적인 수정 사항을 프롬프트로 요청하세요.
Genie Code 프롬프트: Silver 테이블 생성 (핵심 5개)
전체 15개를 한번에 하면 너무 길어지므로, 핵심 테이블 5개를 먼저 만들고 나머지는 동일 패턴으로 확장합니다.
Silver 1: viewing_sessions (시청 세션)
Silver 2: system_metrics (시스템 메트릭)
Silver 3: ad_funnel (광고 퍼널)
Silver 4: streaming_quality (스트리밍 품질)
Silver 5: error_events (에러 이벤트)
나머지 Silver 테이블 (10개) — 동일 패턴 적용
위 5개 핵심 테이블의 프롬프트 구조를 그대로 따라서 나머지 10개도 생성합니다. Genie Code에 아래 프롬프트를 입력하면 한 번에 처리할 수 있습니다:💡 팁: 한 번에 10개를 다 만들면 시간이 오래 걸립니다. 3~4개씩 나누어 요청하는 것을 권장합니다.
Silver 전체 확인 프롬프트
Part C: Gold Layer — 비즈니스 집계 테이블
Gold 테이블 설계
Gold 테이블은 대시보드, Genie Space, ML 모델, 에이전트가 직접 소비하는 테이블입니다.| Gold 테이블 | 소비자 | 그레인 | 설명 |
|---|---|---|---|
gold.daily_viewing_summary | 대시보드, Genie | 디바이스 × 일 | 일별 시청 통계 |
gold.content_popularity | 대시보드, Genie | 프로그램 × 일 | 콘텐츠별 인기도 |
gold.hourly_engagement | 대시보드 | 시간대 × 일 | 시간대별 활성 사용자 |
gold.ad_campaign_kpi | 대시보드, Genie | 캠페인 × 일 | 광고 캠페인 KPI |
gold.device_health_score | 대시보드, ML | 디바이스 × 일 | 디바이스 건강 점수 |
gold.streaming_qoe | 대시보드, Genie | 앱 × 지역 × 일 | 스트리밍 QoE 지표 |
gold.voice_usage_analytics | 대시보드 | 어시스턴트 × 의도 × 일 | 음성 사용 분석 |
gold.iot_ecosystem_stats | 대시보드, Genie | 디바이스유형 × 일 | IoT 생태계 통계 |
gold.error_rate_by_firmware | 대시보드, Genie | 펌웨어 × 일 | 펌웨어별 에러율 |
gold.user_engagement_360 | ML, 에이전트 | 디바이스 | 사용자 360도 프로파일 |
Genie Code 프롬프트: Gold 테이블 생성
Gold 1: daily_viewing_summary
Gold 2: content_popularity
Gold 3: ad_campaign_kpi
Gold 4: device_health_score
Gold 5: streaming_qoe (Quality of Experience)
Gold 6: user_engagement_360 (사용자 프로파일)
Part D: SDP 파이프라인으로 자동화
수동 CTAS → SDP 전환의 의미
| 항목 | 수동 CTAS | SDP (Lakeflow) |
|---|---|---|
| 실행 방식 | 노트북에서 수동 Run | 파이프라인 자동 스케줄링 |
| 증분 처리 | 전체 재처리 (Full Refresh) | 자동 증분 (Incremental) |
| 데이터 품질 | 코드에서 직접 필터 | @dlt.expect 선언적 규칙 |
| 의존성 관리 | 실행 순서 수동 관리 | DAG 자동 해석 |
| 에러 복구 | 수동 재실행 | 자동 재시도 + 격리 |
Genie Code 프롬프트: SDP 파이프라인 생성
Genie Code 프롬프트: SDP 파이프라인 실행
파이프라인 실행 결과 확인
참고: SDP 파이프라인은 Databricks UI의 “Pipelines” 메뉴에서도 확인할 수 있습니다. DAG(방향성 비순환 그래프) 형태로 테이블 간 의존성과 처리 상태를 시각적으로 보여줍니다.
기대 결과: Expectations 대시보드
파이프라인 실행 후 SDP UI에서 확인할 수 있는 데이터 품질 메트릭:| 테이블 | Expectation | 통과율 | 위반 건수 |
|---|---|---|---|
| viewing_sessions | valid_duration | 99.2% | ~4,000 |
| system_metrics | valid_cpu | 98.0% | ~4,000 |
| ad_funnel | valid_sequence | 97.5% | ~5,000 |
| streaming_quality | valid_latency | 99.5% | ~750 |
| error_events | valid_severity | 99.8% | ~80 |
Part E: 파이프라인 Job 스케줄링
Genie Code 프롬프트 (AI Dev Kit MCP 활용)
핵심 포인트 정리
| 배운 것 | Databricks 기능 | 비즈니스 가치 |
|---|---|---|
| 데이터 품질 진단 | SQL, DataFrame API | Raw 데이터의 신뢰성 파악 |
| 결측치/이상치 처리 | CTAS, Window 함수 | 분석 결과의 정확도 향상 |
| 선언적 파이프라인 | SDP (Lakeflow) | 운영 부담 최소화, 자동 증분 처리 |
| 데이터 품질 규칙 | Expectations | 품질 위반 자동 감지 및 격리 |
| Gold Layer 설계 | Materialized View | 대시보드/Genie/ML이 바로 소비 가능한 데이터 |
| Job 스케줄링 | Databricks Jobs | 일일 자동 리프레시 |
다음 단계
- 04. 대시보드 & Genie Space — Gold 테이블로 대시보드와 Genie Space 구축, 정확도 고도화