데이터 정제는 전환에서 걸러진 오류 데이터를 유형별로 세고 고쳐, 다시 전환하면 통과하게 만드는 일입니다. 오류를 찾아 세는 데이터 품질 분석과 오류 데이터 측정이 앞에 오고, 고친 내용을 정제요청서와 정제보고서로 남깁니다.
검증에서 어긋난 건수를 찾아내도 거기서 끝이 아닙니다. 빠진 행을 하나씩 손으로 넣으면 다음 전환에서 같은 행이 또 빠지고, 옛 시스템이 그대로 돌고 있으면 더러운 데이터가 계속 쌓입니다. 그래서 걸린 것을 유형으로 묶어 세고, 옛 시스템이나 전환 프로그램을 고친 뒤 같은 전환을 다시 돌립니다. 아래 그림은 들어온 6건이 체 넷을 지나며 걸러지고, 고친 뒤 다시 흘러 통과하는 모습을 보여 줍니다.
1오류 데이터 측정 — 정상과 오류를 센다
데이터 품질 분석은 원천 시스템의 데이터와 목적 시스템의 데이터를 맞춰 보아 오류를 찾는 일입니다. 눈으로 훑는 것이 아니라 세는 일이라, 다음 두 가지를 모두 셉니다.
| 무엇을 | 어떻게 센다 |
|---|---|
| 정상 데이터 | 업무 영역과 표마다 건수를 센다 |
| 오류 데이터 | 업무마다 어디에서 어떤 유형으로 났는지 확인하고 건수를 센다 |
이렇게 센 결과를 적은 것이 오류 관리 목록입니다. 오류마다 어느 행인지, 어떤 유형인지, 어디를 고칠지, 처리 상태와 심각도를 적습니다. 고칠 수 없는 오류는 고객과 협의한 결과를 적습니다.
2정제 유형 넷
오류를 유형으로 묶으면 고치는 방법도 묶입니다.
| 유형 | 묻는 것 | 학사 데이터에서는 |
|---|---|---|
| 완전성 | 꼭 있어야 하는 값이 비었나 | 이름이 비어 있다 |
| 유효성 | 값이 정해진 범위·형식에 맞나 | 학년이 1~4 밖인 5학년이다 |
| 일치성 | 다른 표의 값과 맞나 | 학과 표에 없는 학과명 기계다 |
| 유일성 | 같은 것이 두 번 들어 있나 | 같은 학생이 두 행으로 있다 |
유효성과 일치성이 헷갈립니다. 그 열 하나만 보고 틀렸다고 말할 수 있으면 유효성이고, 다른 표를 봐야 틀렸다고 말할 수 있으면 일치성입니다. 5학년은 학년 열만 보고 틀렸다고 알 수 있지만, 기계는 학과 표를 열어 봐야 없는 학과임을 알 수 있습니다.
3어디를 고치나 — 정제요청서와 정제보고서
오류 관리 목록을 바탕으로 항목마다 쓰는 문서가 정제요청서입니다. 유형과 함께 고칠 곳을 정합니다.
| 정제 방법 | 고치는 곳 | 고르는 때 |
|---|---|---|
| 원천 | 쓰던 시스템의 데이터를 고친다 | 데이터 자체가 틀렸다 — 비어 있거나 범위 밖이다 |
| 전환 | 전환 프로그램의 규칙을 고친다 | 데이터는 맞지만 새 시스템이 받을 꼴로 바꾸지 못했다 |
| 둘 다 | 양쪽을 함께 고친다 | 데이터도 틀렸고 규칙도 빠졌다 |
고친 결과를 적는 문서가 정제보고서입니다. 정제 번호마다 오류의 원인, 실제로 고친 건수, 앞으로의 대응 방안을 적습니다. 눈으로 비교하는 데서 끝내지 않고 다시 전환해 같은 오류가 또 나는지 확인한 결과까지 적습니다.
예제
옛 학사 시스템에서 받은 6건입니다. 학년은 1에서 4까지만 쓸 수 있고, 학과명은 학과 표에 있는 이름이어야 합니다. 어느 행이 어떤 유형인지 한 번에 분류해 봅니다. 블록마다 처음 데이터에서 시작합니다 — 앞 블록이 만들거나 바꾼 것은 남아 있지 않습니다.
CREATE TABLE 구학생 (
학번 NUMBER,
이름 VARCHAR2(10 CHAR),
학년 VARCHAR2(10 CHAR),
학과명 VARCHAR2(10 CHAR)
);
INSERT INTO 구학생 VALUES
(201, '한지우', '3학년',
'컴퓨터'),
(201, '한지우', '3학년',
'컴퓨터'),
(202, NULL, '1학년', '전자'),
(203, '류지호', '2학년',
'기계'),
(204, '백나윤', '5학년',
'전자'),
(205, '서가온', '2학년',
'컴퓨터');
SELECT 학번, 이름,
CASE
WHEN 이름 IS NULL
THEN '완전성'
WHEN SUBSTR(학년, 1, 1)
NOT IN ('1','2','3','4')
THEN '유효성'
WHEN 학과명 NOT IN (
SELECT 학과명
FROM 학과)
THEN '일치성'
WHEN COUNT(*) OVER (
PARTITION BY 학번) > 1
THEN '유일성'
ELSE '정상'
END AS 정제유형
FROM 구학생
ORDER BY 학번;
| 학번 | 이름 | 정제유형 |
|---|---|---|
| 201 | 한지우 | 유일성 |
| 201 | 한지우 | 유일성 |
| 202 | NULL | 완전성 |
| 203 | 류지호 | 일치성 |
| 204 | 백나윤 | 유효성 |
| 205 | 서가온 | 정상 |
이 결과를 유형별로 세면 오류 관리 목록이 됩니다. 6건 가운데 정상은 1건뿐입니다.
| 정제 유형 | 건수 | 정제 방법 |
|---|---|---|
| 유일성 | 2 | 원천 — 한 행을 지운다 |
| 완전성 | 1 | 원천 — 이름을 채운다 |
| 유효성 | 1 | 원천 — 학년을 바로잡는다 |
| 일치성 | 1 | 원천 또는 전환 — 학과를 더하거나 규칙을 고친다 |
| 정상 | 1 | 없음 |
CASE는 위에서부터 조건을 견주어 맞는 첫 WHEN만 씁니다. 201번 두 행은 이름·학년·학과명이 모두 맞아 마지막 유일성에서 걸립니다. 이 6건은 행마다 걸리는 것이 하나뿐이라 WHEN의 차례를 바꿔도 결과가 같습니다. 다만 이름이 비면서 학년도 5학년인 행처럼 둘에 걸리는 행이 있으면 앞에 둔 WHEN이 이기므로, 세는 차례를 2절 표와 같은 완전성 → 유효성 → 일치성 → 유일성으로 정해 두고 씁니다.
시험 포인트
- 필기: 정제는 오류를 찾아 세는 데서 시작합니다 — 데이터 품질 분석으로 원천과 목적 데이터를 맞춰 보고, 오류 데이터 측정으로 정상 건수와 오류 건수를 센 뒤 오류 관리 목록을 적습니다. 그 목록으로 정제요청서를 쓰고, 고친 결과를 정제보고서로 남깁니다. 이 차례를 섞어 놓고 고르게 합니다. 정제 유형 넷은 완전성·유효성·일치성·유일성, 정제 방법은 원천·전환·둘 다입니다.
- 실기: 이름을 한글 이름과 영문으로 함께 씁니다 — 데이터 정제(Data Cleansing). 다음 문서 이름은 한글로 씁니다 — 오류 관리 목록, 정제요청서, 정제보고서. 정제 유형 넷의 이름도 한글로 씁니다 — 완전성, 유효성, 일치성, 유일성.
확인 문제
1. 쇼핑몰이 주문 데이터를 새 시스템으로 옮깁니다. 옛 시스템은 배송 상태를 배송중·배송완료라는 글자로 두었고, 새 시스템은 S·C 코드로 받습니다. 옛 데이터의 배송 상태는 모두 두 글자 가운데 하나로 바르게 들어 있는데, 전환 프로그램이 코드로 바꾸는 규칙을 빠뜨려 적재가 모두 실패했습니다. 정제 방법으로 알맞은 것을 고르세요.
- ① 원천 — 옛 시스템의 배송 상태를
S·C로 모두 고칩니다. - ② 전환 — 전환 프로그램에 배송 상태를 코드로 바꾸는 규칙을 넣습니다.
- ③ 원천 — 배송 상태가 빈 주문을 찾아 채웁니다.
- ④ 둘 다 — 옛 데이터를 고치고 전환 규칙도 함께 넣습니다.
정답
②입니다. 옛 데이터는 바르게 들어 있고 빠진 것은 전환 규칙이라, 전환 프로그램을 고치면 됩니다.
- ① 옛 시스템은 아직 돌고 있어 그 글자를 쓰는 화면과 보고서가 함께 깨집니다. 데이터가 맞을 때는 원천을 건드리지 않습니다.
- ③ 빈 값을 채우는 것은 완전성 오류의 정제입니다. 이 문제의 배송 상태는 비어 있지 않습니다.
- ④ 양쪽을 고치는 것은 데이터도 틀렸고 규칙도 빠졌을 때입니다. 여기서는 데이터가 틀리지 않았습니다.
2. 도서관이 회원 데이터를 옮기며 네 가지 오류를 찾았습니다. (가)~(라)가 어느 정제 유형인지 이름을 한글로 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.
- (가) 같은 회원이 회원번호까지 똑같이 두 행으로 들어 있습니다.
- (나) 회원 등급이
일반·우수둘 가운데 하나여야 하는데특별인 행이 있습니다. - (다) 연락처가 비어 있는 행이 있습니다.
- (라) 대출 기록의 도서번호가 도서 표에 없는 번호입니다.
정답
받는 답: (가) 유일성 · (나) 유효성 · (다) 완전성 · (라) 일치성
(가)의 실마리는 '같은 것이 두 번', (나)는 '그 열만 보고 쓸 수 없는 값임을 알 수 있다', (다)는 '있어야 할 값이 비었다', (라)는 '다른 표를 봐야 없는 값임을 알 수 있다'입니다.
- 틀리는 꼴 (나)와 (라)를 바꿔 쓴 꼴: 그 열 하나만 보고 판단되면 유효성, 다른 표를 열어 봐야 판단되면 일치성입니다.
- 틀리는 꼴 (다)에 유효성: 값이 아예 없는 쪽이 완전성입니다. 유효성은 값이 있으면서 쓸 수 없는 값일 때입니다.
- 틀리는 꼴 (가)에 무결성: 레슨이 쓰는 정제 유형 이름은 유일성입니다.
3. 병원이 예약 데이터를 옮기며 만든 산출물 넷입니다. 각각을 무엇이라 부르는지 (가)는 한글 이름과 영문으로 함께, (나)~(라)는 한글 이름으로 쓰세요. 답을 끝까지 쓴 뒤 정답을 펼치세요.
- (가) 찾아낸 오류를 세고 고쳐 다시 전환할 수 있게 만드는 일 전체
- (나) 오류마다 어느 행인지, 어떤 유형인지, 어디를 고칠지와 상태·심각도를 적은 목록
- (다) (나)를 바탕으로 항목마다 고칠 곳을 정해 내는 문서
- (라) 고친 원인과 실제 건수, 다시 전환해 확인한 결과를 적은 문서
정답
받는 답: (가) 데이터 정제(Data Cleansing) · (나) 오류 관리 목록 · (다) 정제요청서 · (라) 정제보고서
(나)는 센 결과를 모아 적은 것이고, (다)는 그 목록으로 고쳐 달라고 내는 것, (라)는 고친 뒤 결과를 돌려주는 것입니다. 목록 → 요청 → 보고 차례입니다.
- 같은 이름의 다른 꼴: (가)를 한글 이름만, 또는 영문만 쓴 꼴 — 문제가 한글 이름과 영문을 함께 쓰라고 했습니다.
- 틀리는 꼴 (다)와 (라)를 바꿔 쓴 꼴: 고치기 전에 내는 쪽이 정제요청서, 고친 뒤 결과를 적는 쪽이 정제보고서입니다.
- 틀리는 꼴 (나)에 정제요청서: 요청서는 목록을 바탕으로 항목마다 따로 쓰는 문서입니다. 센 결과를 모아 적은 쪽이 오류 관리 목록입니다.