데이터 웨어하우스의 경우 PK Uniqueness를 보장하지 않는 경우가 많다. PK Uniqueness를 보장하기 위해선 레코드 하나하나 다 검사하면서 처리해야 하는데, 그렇게 되면 메모리를 너무 많이 잡아먹기 때문. 데이터 웨어하우스에는 수만건의 데이터를 적재해야 하는 경우가 많은데, 그렇게 할 경우 너무 많은 시간과 비용을 차지하게 된다.
최소한의 방법으로 PK Uniqueness를 확인하는 방법을 정리한다. 여기에선 아주 간단한 버전만 알아보고, 다음 포스팅에서 조금 더 심화된 내용을 다룰 예정
+ 그 외 데이터 엔지니어링 시작 전 확인해보면 좋을 것들을 함께 정리!
중복 데이터 있는지 확인하기 (PK에 대해서 실행하면 특히 좋음)
-- 아래 두 쿼리의 결과를 비교하기
SELECT COUNT(1) FROM test_channel;
SELECT COUNT(1) FROM (
SELECT DISTINCT * FROM test_channel
);
-- channelname이 PK인 경우
SELECT channelname, COUNT(1)
FROM test_channel
GROUP BY 1
ORDER BY 2 DESC;
데이터 생성 시점들 확인해보기
간혹 데이터 파이프라인 에러 등으로 데이터가 안 들어온 경우 체크할 수 있음
SELECT LEFT(ts, 7), COUNT(1)
FROM raw_data.session_timestamp
GROUP BY 1;
값에 NULL 있는지 체크
주의할 점은 null이나 boolean에 대해서는 !=, == 가 아니라 IS, IS NOT 사용해야 한다는 점
SELECT COUNT(1)
FROM test_channel
WHERE value IS NOT NULL;
'Database' 카테고리의 다른 글
DB Concurrency Control - Isolation with Lock, Snapshot Isolation, MVCC (0) | 2023.10.02 |
---|---|
DB Concurrency Control - Read phenomena, Isolation level (0) | 2023.09.28 |
DB Concurrency Control - Schedule, Serializability, Recoverability (0) | 2023.09.28 |
[SQL] COUNT(*), COUNT(1), COUNT(expression)의 이해 (0) | 2023.06.18 |
외부에서 MySQL DB 접속하기 (0) | 2023.02.14 |