Data Validation

문주은·2024년 6월 24일

SAP BW 데이터를 ELT 프로세스를 통해 Snowflake에 적재하는 과정에서 Data Validation 을 확인하기 위한 방법들입니다. 우선은 Data Transformation 과정은 제외하고, SAP BW raw dataset을 Snowflake에 Load가 잘 되었는지 확인했습니다.

1. Data Validation

1-1. Data Quality

  • Accuracy(정확성)
    • 데이터 교차 검증
    • 정기적으로 데이터 검사

  • Consistency(일관성)
    • 데이터 입력 및 형식에 대한 지침을 적용하는 데이터 표준화

  • Completeness(완전성)
    • 모든 데이터가 존재하는지 확인
    • 누락된 데이터가 있는지 검사
    • null 값의 비율 분석
    • 전체 레코드 카운팅

  • Timeliness(적시성)
    • 최신 데이터 반영
    • 타임스탬프 분석
    • 실시간 데이터 모니터링

  • Validity(타당성)
    • 데이터 포맷이 비즈니스 요구 사항을 만족하는지 확인
    • 데이터 유형 확인
    • 수치형 컬럼의 경우 범위 확인
    • 특정 패턴이 일치하는지 확인

  • Uniqueness(유일성)
    • 모든 레코드가 중복이 없는지 확인

1-2. Data Validation Works

1) 데이터 표준 정의

  • 데이터를 잘 이해하고 특성(null 비율, 수치형 데이터 범위, 패턴 등)을 정리

2) 데이터 검증 자동화

  • 데이터 표준을 기반으로 데이터 검증을 자동화

3) 오류 보고

  • 자동화한 검증이 실패했다면 어떤 정의에서 실패했는지 오류 보고

2. Manual Approach

1) Row Count Check

두 데이터베이스에서 동일한 테이블의 레코드 수를 비교하여 데이터가 제대로 복사되었는지 확인합니다.

-- A database
SELECT COUNT(*) FROM A_table;

-- B database
SELECT COUNT(*) FROM B_table;

2) Checksum or Hash Check

각 레코드의 해시 값을 계산하여 데이터의 무결성을 확인합니다.

  • 해시 검증은 master 데이터나, 확정 후 불변 되는 데이터에 매우 적합.
  • e.g. Sales Order 테이블에서 처리 완료 상태인 데이터만 검증하는 로직 추가. (확정 후 불변)
-- A database
SELECT MD5(CONCAT_WS(',', col1, col2, col3, ...)) AS hash_value FROM A_table;

-- B database
SELECT MD5(CONCAT_WS(',', col1, col2, col3, ...)) AS hash_value FROM B_table;

3) Null Value Check

각 컬럼에 대해 NULL 값이 동일하게 존재하는지 확인합니다.

-- A database
SELECT COUNT(*) FROM A_table WHERE col1 IS NULL;

-- B database
SELECT COUNT(*) FROM B_table WHERE col1 IS NULL;

4) Value Range Check

각 컬럼의 값 범위가 동일한지 확인합니다.

-- A database
SELECT MIN(col1), MAX(col1), AVG(col1) FROM A_table;

-- B database
SELECT MIN(col1), MAX(col1), AVG(col1) FROM B_table;

5) Duplicate Check

두 데이터베이스에서 중복된 레코드가 동일하게 존재하는지 확인합니다.

-- A database
SELECT col1, COUNT(*) FROM A_table GROUP BY col1 HAVING COUNT(*) > 1;

-- B database
SELECT col1, COUNT(*) FROM B_table GROUP BY col1 HAVING COUNT(*) > 1;

3. Automatically Approach

profile
Data Engineer

0개의 댓글