본문으로 건너뛰기

4축 점수 계산

품질 점수

GenD의 데이터 품질 점수는 completeness(완전성)·validity(유효성)·freshness(최신성)·consistency(일관성) 4개 축으로 구성됩니다. 각 축 점수는 그 축에 매핑된 규칙 타입의 통과율이며, 측정된 축만 가중 평균하여 종합 점수(composite)를 산출합니다.

점수는 해당 테이블의 최근 체크 결과(최신 100건) 를 규칙 타입별로 묶어 계산합니다.

축 ↔ 규칙 타입 매핑

각 축은 아래 규칙 타입들의 검사 결과를 모읍니다. 축 점수 = 통과한 규칙 수 / 유효한(에러 아닌) 규칙 수.

묶이는 rule_type가중치"통과" 기준
completeness (완전성)not_null0.30대상 컬럼 NULL 0건
validity (유효성)unique · range · regex0.30중복/범위 이탈/패턴 불일치 0건
freshness (최신성)freshness0.20마지막 갱신이 max_hours 이내
consistency (일관성)row_count · custom0.20행 수 임계 충족 / 사용자 SQL passed=true
유효성(validity)은 "유일성"이 아닙니다

unique 규칙은 별도 축이 아니라 validity 축에 range·regex 와 함께 묶입니다. UI의 "유효성" 컬럼이 이 축입니다.

종합 점수 (composite)

측정된 축만 가중 평균하며, 측정 불가 축의 가중치는 빼고 나머지를 재정규화합니다.

composite = Σ(축점수 × 가중치) / Σ(가중치) # 측정된 축에 대해서만 합산
  • 측정 불가 축: 해당 축에 유효한 규칙이 하나도 없으면 그 축은 "측정 불가"로 처리되어 종합에서 제외됩니다(0점으로 가정하지 않음). UI에는 로 표시됩니다.
  • 에러 체크 제외: 테이블 부재(table_not_found), SQL 생성 실패(sql_generation_failed), 실행 오류(execution_error) 등 error_kind 가 붙은 체크는 데이터 품질 위반이 아니라 측정 불가이므로 점수에서 빠집니다. 이 덕분에 존재하지 않는 테이블이 "정상" 등급처럼 보이지 않습니다.
  • 측정 가능한 축이 0개이면 종합 0.0 / 등급 F + 사유를 기록합니다.

등급 구간

등급종합 점수
A≥ 0.95
B≥ 0.85
C≥ 0.70
D≥ 0.50
F< 0.50 (또는 측정 가능한 체크 없음)

산출 예시

completeness 100% · validity 50% · freshness — · consistency — 인 테이블:

측정된 축: completeness(0.30), validity(0.30) # freshness·consistency 는 규칙 없음 → 제외
composite = (1.00×0.30 + 0.50×0.30) / (0.30+0.30) = 0.45 / 0.60 = 0.75 → 75% → C

사용 방법

  1. 대상 테이블에 대해 품질 스캔(또는 점수 산정)을 요청합니다.
  2. Trino를 통해 활성 규칙을 실행하여 체크 결과를 생성합니다.
  3. 체크 결과를 4축으로 묶어 종합 점수를 계산하고 이력에 저장합니다.
  4. 대시보드에서 시간별 품질 추이를 확인합니다.

API 엔드포인트

MethodPathDescription
POST/api/v1/quality/scan테이블 종합 스캔 (활성 규칙 실행 + 점수 산정)
POST/api/v1/quality/scores/compute기존 체크 결과로 점수 산정
GET/api/v1/quality/scores품질 점수 목록 조회
GET/api/v1/quality/dashboard품질 대시보드

관련 문서