eunzae's develog

[데이터품질관리]데이터 값 핵심품질항목 정의(CTQ) 본문

Database/Data Architecture

[데이터품질관리]데이터 값 핵심품질항목 정의(CTQ)

eunzae 2023. 11. 16. 14:30

데이터 값 핵심품질항목(CTQ) 정의 시

시스템 중요도 산정을 위한 데이터를 뽑는 쿼리입니다.  

WITH PK_TBL AS --PK테이블 임시생성
     (SELECT A.TABLE_NAME
           , B.COLUMN_NAME
      FROM   ALL_CONSTRAINTS  A
           , ALL_CONS_COLUMNS B
      WHERE  1=1
      AND    A.OWNER = '오너명'
      AND    A.CONSTRAINT_TYPE = 'P'
      AND    A.OWNER = B.OWNER
      AND    A.CONSTRAINT_NAME = B.CONSTRAINT_NAME
      AND    A.CONSTRAINT_NAME NOT LIKE 'BIN$%') 
SELECT A.COLUMN_NAME                                                                 -- 컬럼 영문명
     , MAX(C.COMMENTS) LCOL_NAME                                                     -- 컬럼 한글명 
     , COUNT(DISTINCT SUBSTR(A.TABLE_NAME,0,3)) AS SYS_CNT                           -- 시스템분포수(주제영역 1레벨 기준),(각 기관에 맞게 쿼리 수정)
     , 1  AS DB_CNT                                                                  -- DB분포수(각 기관에 맞게 쿼리 수정)
     , COUNT(*) AS COLUMN_CNT                                                        -- 테이블분포수
     , COUNT(*) AS COLUMN_CNT                                                        -- 컬럼분포수
     , MAX(CASE WHEN B.COLUMN_NAME IS NULL THEN 'N' ELSE 'Y' END) AS PK_YN           -- PK사용여부(1개라도 PK)
     , SUM(NVL2(B.COLUMN_NAME,1,0)) AS PK_CNT                                        -- PK컬럼수
     , SUM(NVL2(B.COLUMN_NAME,0,1)) AS NOT_PK_CNT                                    -- PK아닌컬럼수
     , MAX(DECODE(SUBSTR(A.TABLE_NAME,-1,1),'M','Y','N')) AS MST_YN                  -- MASTER여부(각 기관에 맞게 쿼리 수정)
FROM   ALL_TAB_COLUMNS A
INNER JOIN ALL_COL_COMMENTS C
        ON(   
               A.OWNER = C.OWNER
           AND A.TABLE_NAME = C.TABLE_NAME
           AND A.COLUMN_NAME = C.COLUMN_NAME
          )
LEFT OUTER JOIN PK_TBL B 
        ON (
               A.TABLE_NAME = B.TABLE_NAME
           AND A.COLUMN_NAME = B.COLUMN_NAME
           )
WHERE  1=1
AND    A.OWNER = '오너명'
AND    A.TABLE_NAME NOT LIKE '%2023%'--백업 테이블 제외
GROUP BY A.COLUMN_NAME
ORDER BY 1 ASC
;