중복된 레코드들 체크
하기최근 데이터
존재 여부 체크 Primary key uniqueness
지켜지는지 체크값 비어 있는 컬럼
들이 있는지 체크📌 네 가지 품질 확인 방법을 SQL을 사용해서 확인해 보자
-- 기존에 해당 테이블이 있었다면 DROP하여 테이블 삭제
DROP TABLE IF EXISTS ADHOC.SESSION_SUMMARY;
-- CTAS를 이용해 ADHOC 데이터베이스에 테이블 생성
CREATE TABLE ADHOC.SESSION_SUMMARY
AS SELECT B.*
, A.TS
FROM RAW_DATA.SESSION_TIMESTAMP A
JOIN RAW_DATA.USER_SESSION_CHANNEL B
ON A.SESSION_ID = B.SESSION_ID
DISTINCT
를 이용해 COUNT 한 수를 비교한다. 일치하지 않는다면 중복된 데이터가 있는 것.SELECT COUNT(1)
FROM ADHOC.SESSION_SUMMARY; -- 이 테이블의 모든 데이터 카운트
SELECT COUNT(1)
FROM (
SELECT DISTINCT USERID
, SESSIONID
, TS
, CHANNEL
FROM ADHOC.SESSION_SUMMARY
) -- 중복 제거를 해서 다시 카운트
CTE
를 사용해서 중복 제거를 한 후 카운트를 해 볼 수도 있다.WITH DS AS (
SELECT DISTINCT USERID
, SESSIONID
, TS
, CHANNEL
FROM ADHOC.SESSION_SUMMARY
)
SELECT COUNT(1)
FROM DS;
최소(MIN)
와 최대(MAX)
를 보면 이 데이터가 처음 생성된 데이터는 언제 생성이 되었는지, 가장 마지막에 생성된 데이터는 언제 생성되었는지를 확인해 줄 수 있다. SELECT MIN(TS)
, MAX(TS)
FROM ADHOC.SESSION_SUMMARY
Primary Key Uniqueness
가 깨진 것이기 때문에 ORDER BY
에서 COUNT한 값을 내림차순하여 하나만 조회해 온다.LIMIT 1
을 걸어도 조회되는 하나의 데이터의 COUNT는 1일 것이다. Primary Key Uniqueness
가 깨진 것이다.SELECT SESSIONID
, COUNT(1)
FROM ADHOC.SESSION_SUMMARY
GROUP BY 1
ORDER BY 2 DESC
LIMIT 1
CASE-WHEN
절을 사용해서 각 컬럼들에 NULL인 값이 있다면 1이 출력되게 하는 방식으로 각 컬럼의 데이터들을 확인한다.SELECT COUNT(CASE WHEN SESSIONID IS NULL
THEN 1 END) SESSION_NULL_CNT
, COUNT(CASE WHEN USERID IS NULL
THEN 1 END) USERID_NULL_CNT
, COUNT(CASE WHEN TS IS NULL
THEN 1 END) TS_NULL_CNT
, COUNT(CASE WHEN CHANNEL IS NULL
THEN 1 END) CHANNEL_NULL_CNT
FROM ADHOC.SESSION_SUMMARY