본문 바로가기
STORAGE

데이터 프로파일링(Data Profiling)의 모든 것!

2021. 12. 2. 15:38

데이터 프로파일링, Data Profiling

지난해 자사가 참여한 한국원자력연구원의 국가 방사선 반응지도 모델링 플랫폼이 한국데이터산업진흥원으로부터 데이터 품질인증 최고 등급을 받았습니다. 기사 데이터 품질인증(DQC-V, Data Quality Certification-Value)은 시스템 데이터 평과 결과에 따라 플래티넘, 골드, 실버 3개 등급으로 나눠지며 플래티넘 등급은 데이터의 정합성이 99.97% 이상일 때 부여하는데 원자력연구원의 RRM 플랫폼은 방사선 데이터 분석 처리 능력과 예측 시스템의 정확성 등에서 99.98% 이상의 정합률을 확인받았습니다. 본 글을 통해 데이터 품질 진단을 하면서 배운 노하우를 공유하고자 합니다.

시스템에 입력된 데이터라는 이유만으로 매우 정확할 것이라는 사용자들의 막연한 인식과 정보화 사회 초기에 데이터의 규모가 크지 않다는 이유로 데이터 품질에 관한 관심은 낮았습니다. '빅데이터'라는 화두가 떠오를 때도 많은 기업이 '방대한 데이터의 양의 축적'에 우선하기도 했습니다. 하지만 최근에는 '축적된 데이터의 질'에 초점을 맞추고 있습니다. 데이터의 정합성과 신뢰성이 서비스 및 시스템의 질로 직결된다는 것을 인식하기 시작했습니다. 부정확하고 시의적절치 못한 낮은 품질의 데이터를 기반으로 의사결정에 이용한다거나 인공지능 모델을 통한 결과를 예측한다면 그 결과의 정확성을 보장하기 어렵기 때문입니다. 데이터 품질 관리에 관한 관심은 국가적인 차원에서도 높아지고 있습니다. 지난 2020년 5월 과학기술정보통신부는 디지털 뉴딜 정책의 하나로 인공지능 시대에 필요한 데이터 품질 표준안을 개발할 계획이라고 발표하였고, 2021년 2월 인공지능 학습용 데이터 품질관리 지침을 공개를 공개하였습니다. 이처럼 '빅데이터의 활용'이 주목받으면서 데이터 품질 관리에 관한 관심과 중요성이 다시금 높아지고 있습니다.

데이터 품질 진단

데이터 품질 관리는 정보 시스템에서 필수 불가결한 기반 프로세스이지만 실무자 대부분이 어떻게 데이터의 품질을 진단하고 관리하는지 모르기 때문에 시도조차 하지 못하고 있다는 생각이 듭니다. 데이터 품질 관리의 첫걸음은 시스템에서 사용하는 데이터 중 어느 부분에서 오류가 있고 어떻게 개선할지 확인하는 '데이터 품질 진단'입니다. '데이터 품질 진단'이 낯선 분들을 위해 본 글에서는 여러 절차 및 기법 중에서도 가장 기본적이고 핵심적인 데이터 프로파일링 기법에 관해서 이야기하고자 합니다.

데이터 프로파일링

범죄 관련 TV 프로그램이나 영화에서 프로파일링에 대해 한 번쯤은 들어본 적이 있을 것입니다. 프로파일링이 본래 자료수집을 의미하지만 범죄 유형을 분석 및 추론하는 방법입니다. 데이터 프로파일링도 이와 크게 다르지 않습니다. 데이터 품질에서의 데이터 프로파일링은 데이터 현황 분석을 위한 자료수집과 오류 또는 잠재적 이슈를 찾아내는 방법입니다. 조금 더 자세하게 설명하면 데이터 프로파일링은 메타데이터(설계상)와 실제 데이터(DB)에 대하여 통계적 분석을 시행해 데이터 품질 문제를 확인하는 것입니다. 이를 위해 데이터 프로파일링은 메타데이터 수집과 데이터 현상을 분석하는 단계로 나누어 진행합니다.

 

메타데이터 수집
그림1. 메타데이터 수집


메타데이터 수집 및 분석

데이터 프로파일링을 위한 메타데이터는 실제 운영 중인 데이터베이스의 테이블 명, 컬럼 명, 제약조건 등의 정보입니다. 테이블 정의서, 컬럼 정의서와 같은 데이터 관리 문서의 정보도 포함됩니다. 추출된 테이블 및 컬럼에 대한 정보와 데이터 관리 문서를 매핑하여 불일치 사항을 분석하면 됩니다.

테이블명 불일치 분석
그림2. 테이블명 불일치 분석 결과 예시

 

컬럼명 및 자료형 불일치 분석
그림3. 컬럼명 불일치 분석 결과 예시

 

데이터 관리 문서는 아니지만, 데이터 프로파일링 수행을 위하여 작성하면 도움이 되는 문서들이 있습니다. 도메인 규칙 정의서와 코드 매핑 정의서입니다. 필자는 컬럼 정의서에 도메인 부분과 코드 매핑, 도메인 규칙을 같이 작성하여 관리하고 있습니다.

도메인 규칙 정의서, 코드 매핑 정의서
그림4. 도메인규칙정의서와 코드매핑정의서 예시

 

컬럼 속성 분석

데이터 프로파일링 수행을 위하여 컬럼 속성 분석을 통해 일차적인 품질 현황을 파악합니다. 컬럼 속성 분석은 대상 컬럼의 비 유효한 값을 확인하여 기초 데이터로 활용하고자 작성하는 문서입니다. 아래의 컬럼 프로파일링 분석 예시처럼 컬럼의 실제 데이터 현황을 조회합니다. 컬럼의 총 건수, 유일값 수, NULL값 수, 공백값 수, 최댓값, 최솟값, 최대 빈도, 최소빈도 등 기초 집계값을 산출하여 값이 유효한 범위 내에 있는지 판단합니다.

 

컬럼 속성 분석
그림5. 컬럼 속성 분석 예시

 

컬럼 속성 분석을 통해 오류로 추정되는 사실을 발견할 수 있습니다. 위 컬럼 속성 분석 예시의 빨간색 네모 상자 부분을 확인해 보면 CUSTOMER 테이블의 NAME 컬럼에는 공백값이 5건 존재하고 REG_DT의 최댓값이 9999-12-31 최솟값이 1900-01-01로 유효하지 않은 날짜가 존재함을 알 수 있습니다.

기초 집계값은 SQL 문을 활용하여 수집할 수 있습니다.

 

컬럼 속성 분석 SQL
그림6. 컬럼 속성 분석 SQL 예시

 

프로파일링 기법에 대해 누락값, 허용범위, 허용값, 분석, 날짜 유형, 유일값 유형별로 자세히 알아보겠습니다.

 

컬럼 속성 분석 산출물
그림7. 컬럼 속성 분석 산출물 예시

 

누락값 분석

누락값 분석은 반드시 입력되어야 하는 데 누락이 발생한 컬럼을 발견하는 절차입니다. 누락값에는 NULL값, 공백값 또는 숫자 '0' 등이 해당합니다. NULL 허용 컬럼일지라도 아래 예시처럼 NULL과 공백이 혼재하는 경우와 총건수와 NULL 건수가 같아 미사용으로 추정되는 컬럼을 발견하는 일도 포함됩니다.

 

누락값 분석
그림8. 누락값 분석 예시

 

허용범위 분석

허용범위 분석은 값이 가져야 할 범위 내에 그 값이 있는지를 파악하는 절차입니다. 허용범위는 해당 속성의 도메인 유형에 따라 정해집니다. 아래 예시의 MAGAZINE 테이블의 권, 호, 페이지 등의 컬럼은 0 이상의 값을 가져야 하지만 최솟값이 -999 등으로 이루어진 것으로 보아 NULL 대신 무의미한 값을 부여한 데이터일 가능성이 큽니다. 해당값이 오류 데이터라면 NULL값을 부여해야 합니다.

 

허용범위 분석
그림9. 허용범위 분석 예시

 

허용값 분석

허용값 분석은 해당 컬럼의 허용값 목록이나 집합에 포함되지 않는 값을 발견하는 절차입니다. 코드 매핑 정의서에 기술한 코드 성격의 컬럼이 분석 대상에 해당합니다. 아래 예시에서는 등록되지 않은 코드가 포함되어 있거나 의미는 유사하나 다른 값으로 혼재된 경우를 확인할 수 있습니다.

 

허용값 분석
그림10. 허용값 분석 예시

 

패턴 분석

해당 컬럼의 문자열 유형을 따르지 않는 오류 유형을 발견하는 절차입니다. 데이터 집계할 때 문자일 경우 C, 숫자일 경우 9, 공백일 경우 S를 반환하는 함수를 만들어 사용합니다. 해당 컬럼의 데이터를 패턴화하여 SQL로 조회하면 비정상적인 형태를 보인 값을 오류로 추정할 수 있습니다.

 

패턴 분석
그림11. 패턴 분석 예시

 

누락값, 허용범위, 허용값, 패턴 분석 예시는 다음 그림과 같습니다.

 

누락 값, 혀용범위, 패턴 분석 결과
그림12. 누락값, 허용범위, 허용값, 패턴 분석 결과 예시

 

날짜 유형 분석

대상 컬럼이 DBMS의 DATE 관련 자료형을 가지면 날짜 패턴 및 유효성 검증은 문제가 없습니다. 하지만 문자형 데이터 타입에 날짜 데이터를 입력하면 아래 예시와 같은 사례가 발생할 수 있습니다. 이러면 패턴 검증을 통하여 쉽게 검증할 수 있습니다.

 

날짜 유형 분석
그림13. 날짜 유형 분석 예시

 

유일값 분석

유일값 분석은 업무적 의미에서 유일해야 하는 컬럼에 중복이 발생하였는지를 파악하는 절차입니다. DBMS의 제약조건으로 PK(Primary Key)가 설정된 컬럼이나 UNIQE가 설정된 컬럼은 문제가 없습니다. 아래 예시처럼 CUSTOMER 테이블의 EMAIL 컬럼은 PK 컬럼이 아니지만, 업무적으로 고객의 이메일은 유일해야 하는 경우 최대 빈도를 통하여 중복된 데이터를 확인할 수 있습니다.

 

유일값 분석
그림14. 유일값 분석 예시

 

날짜 유형, 유일값 분석 예시는 다음 그림과 같습니다.

날짜 유형, 유일 값 분석
그림15. 날짜 유형, 유일값 분석 결과 예시

 

구조 분석

데이터 구조 분석은 주조 결함으로 인해 일관되지 못한 데이터를 발견하는 분석 기법입니다. 아래 예시는 주문 테이블에 고객 테이블에는 존재하지 않는 데이터가 존재합니다. 이러면 데이터의 일관성이 없는 오류 데이터로 볼 수 있습니다. ERD(Entity-Relationship Diagram) 등 설계 시에는 관계를 설정해두고 실제 데이터베이스에는 제약조건을 적용하지 않고 개발하는 경우 이러한 사례가 빈번하게 발생합니다.

 

구조 분석
그림16. 구조 분석 예시

 

구조 분석은 다음과 같이 SQL 문을 작성하여 실제 데이터베이스 적용된 테이블 간의 관계 현황을 확인할 수 있습니다.

 

구조 분석 SQL
그림17. 구조 분석 SQL 예시

 

구조 분석 결과
그림18. 구조 분석 결과 예시

 

프로파일링 결과 리뷰 및 종합

데이터 프로파일링 기법을 통해 분석한 오류 추정 데이터는 실제 오류 데이터 인지 예외 데이터인지 담당자들과 확인 후 수정을 진행합니다. 예를 들어 대상 컬럼의 값이 11이고 도메인 허용범위가 1부터 10까지였다면 값이 11인 데이터는 오류로 추정될 수 있습니다. 하지만 업무상 해당 컬럼의 값의 범위가 11까지 변경되거나 확장된다면 대상 컬럼은 오류 데이터가 아니고 도메인의 허용범위를 수정해야 합니다. 유형별 프로파일링 결과를 통해 해당 업무 담당자와의 논의 후 최종 오류 현황을 산출하여 프로파일링 결과 보고서를 작성합니다.

 

프로파일링 결과 보고서
그림19. 프로파일링 결과 보고서 예시

 

업무규칙

데이터 품질 진단 방법에는 데이터 프로파일링 이외에도 업무규칙 정의서를 바탕으로 평가를 진행하는 방법이 있지만 본 글에서는 생략합니다.

 

업무규칙
그림20. 업무규칙

 

데이터 품질 관리

서두에 '빅데이터의 활용'에 따른 데이터 품질 관리의 높은 관심사를 언급했지만 사실 데이터양과 관계없이 데이터 품질 관리는 중요합니다. 큰 시스템이든 작은 시스템이든 데이터의 값이 부정확하거나 데이터 구조가 달라 데이터를 담을 수 없는 경우에 다양한 오류가 발생합니다. 시스템 유지관리를 진행하다 보면 초기 데이터들로는 문제가 없었는데 새로운 데이터가 축적되면서 생기는 오류도 심심치 않게 확인할 수 있습니다. 앞서 설명한 데이터 프로파일링에 대해 알고 있다면 설계 단계에서부터 데이터 품질을 고려한 설계가 가능할 것입니다. 시스템 운영 시에도 유형별 데이터 프로파일링 기법을 통해 오류로 추정되는 데이터를 진단하고 개선하는 작업만으로도 데이터 품질을 높일 수 있습니다. 본 글을 통해 데이터 품질 관리를 망설이지 않았으면 하는 기대감을 가져봅니다.

 

참고자료


EDITOR

조일흠

BS실 · Developer

댓글