[Data Engineering] Staging Table 이란

가을·2026년 3월 4일

Big Query에서 테이블 CSV 업로드시 etl_lod_dt 어떻게 넣을지 알아보다가 정리함

데이터 엔지니어링: Staging Table 가이드

정의

Staging Table이란 소스 시스템(CSV, API, DB 등)에서 추출한 데이터를 최종 타겟 테이블(Data Warehouse)에 적재하기 전, 임시로 저장하는 중간 단계의 테이블을 의미

흔히 ETL(Extract, Transform, Load) 과정에서 'T'를 안정적으로 수행하기 위한 대기실 역할


왜 필요한가?

① 데이터 안정성 및 정합성 확보

외부 데이터(CSV 등)는 형식이 불완전할 수 있음

바로 최종 테이블에 넣다가 에러가 나면 전체 파이프라인이 꼬이지만, 스테이징을 거치면 데이터 검증이 가능

② 최종 테이블 성능 최적화

빅쿼리 같은 컬럼형 DB에서 UPDATEDELETE는 비용이 비쌈

스테이징에서 모든 가공(컬럼 추가, 데이터 정제)을 마친 후 최종 테이블에는 INSERT만 수행하여 비용을 절감

③ ETL 프로세스의 분리 (Decoupling)

추출(Load)과 변환(Transform) 단계를 분리하여, 중간에 작업이 실패하더라도 처음부터 다시 데이터를 가져올 필요 없이 스테이징 테이블부터 재시작할 수 있음

④ 추가 메타데이터 삽입

적재 시간(etl_lod_dt)이나 소스 출처(src_nm) 같은 관리용 컬럼을 원본 수정 없이 이 단계에서 자유롭게 추가


3. 현업 프로세스 예시

현업에서는 보통 아래와 같은 3단계 구조로 진행

1단계 : RAW (Staging) 단계

작업 : CSV 파일을 그대로 빅쿼리 임시 테이블에 업로드

특징 : 스키마 가공을 최소화하고 원본 그대로를 유지, 보통 테이블명 앞에 stg_ 또는 tmp_를 붙임

2단계: 가공 및 정제 (Transformation) 단계

작업: SQL을 이용하여 데이터를 변환

etl_lod_dt 추가 (CURRENT_TIMESTAMP())

데이터 타입 변환 (문자열 -> 숫자 등)

결측치 처리 및 중복 제거

SQL 예시 :

-- 임시 테이블에서 최종 테이블로 데이터 이관
INSERT INTO dim.dim_serving (repr_fd_cd, srv_unit, srv_amt, src_nm, is_actv, etl_lod_dt)
SELECT 
    repr_fd_cd,
    srv_unit,
    CAST(srv_amt AS NUMERIC),         -- 타입 변환
    'CSV_UPLOAD' as src_nm,           -- 소스 명시
    is_actv,
    CURRENT_TIMESTAMP() as etl_lod_dt -- 적재 시간 추가
FROM dim.stg_dim_serving;

3단계: 정리 (Cleanup) 단계

작업 : 적재가 완료된 스테이징 테이블을 삭제(Drop)하거나 일정 기간 후 자동 삭제되도록 설정(Expiration)


4. 실무 활용 팁

구분전략설명
명명 규칙stg_[테이블명]스테이징 테이블임을 명확히 함
자동화Write Truncate매번 적재할 때 기존 스테이징 데이터를 밀어버리고 새로 부음 (Overwrite)
유효 기간Table Expiration빅쿼리 설정에서 스테이징 테이블의 수명을 1~2일로 설정하여 자동 삭제 유도
추적성Audit Columnsetl_lod_dt 외에도 job_id 등을 추가해 어떤 작업으로 들어온 데이터인지 기록

0개의 댓글