대시보드 숫자가 틀렸을 때 확인하는 순서

2026.10.04
  • 시리즈 13/16
  • 데이터
  • 대시보드
  • 데이터품질

대시보드에 조치 완료가 0건, 지연이 수천 건으로 나왔다. 화면 로직을 몇 차례 고쳤지만 그대로였다. 원인은 세 군데에 있었다. 화면이 실제로 호출하는 경로가 생각과 달랐고, 판정에 쓰던 컬럼은 대부분 비어 있었으며, 조치율 공식에도 오류가 있었다. 이후로는 숫자가 이상하면 아래 순서대로 확인한다.

문제

조치 완료 0건, 지연 수천 건. 이후에도 조치율 항상 100%, 근거 조항 미기재 100%, 화면 간 건수 차이

원인

추측으로 화면 로직만 수정. 실제 데이터 경로, 컬럼 채움률, 공식을 확인하지 않음

해결

DB 직접 집계로 기준값을 먼저 만들고 화면 숫자와 하나씩 대조

확인 순서

  1. DB에서 기준값 만들기상태별 건수를 SQL로 직접 집계. 화면 숫자는 이 값과 비교
  2. 화면이 실제로 부르는 경로 확인Microflow를 열어 어떤 액티비티가 데이터를 만드는지 확인
  3. 판정 컬럼 채움률 확인상태 판정에 쓰는 컬럼이 전체 데이터에 채워져 있는지
  4. 조회 컬럼 누락 확인집계에 쓰는 컬럼이 서버 조회에 포함됐는지
  5. 공식과 반올림 확인분모, 제외 대상, 반올림 방식
  6. 합계 검증상태별 건수의 합이 전체와 같은지

1. DB 기준값

SQL
SELECT CASE
         WHEN clearDetails IS NOT NULL OR clearDate IS NOT NULL THEN '조치완료'
         WHEN excluded = 1                                      THEN '제외'
         WHEN dueDate IS NULL                                   THEN '기한미지정'
         WHEN dueDate < CURRENT_DATE                            THEN '지연'
         ELSE '조치예정'
       END AS 상태,
       COUNT(*) AS 건수
FROM report$issue_flat
GROUP BY 상태;

2. 실제 경로가 달랐다

집계 Java Action을 몇 번 수정했는데 화면이 바뀌지 않았다. Microflow를 열어 보니 Java Action이 아니라 Retrieve와 Export to JSON 조합으로 데이터를 만들고 있었다. 고친 코드는 호출되지 않는 코드였다.

이름보다 Microflow 안을 본다이름에 JSON이 들어간다고 Java Action이라는 보장은 없다. 수정 전에 화면 데이터소스부터 실제 액티비티까지 한 번 따라가 본다.

3. 판정 컬럼이 대부분 비어 있었다

약 87%상태 컬럼이 빈 행
1개 유형상태 컬럼을 쓰는 점검

완료 여부를 상태 컬럼으로 판정했는데, 이 컬럼은 특정 점검 유형에서만 쓰는 값이었다. 나머지 유형은 조치 내용이나 조치 완료일이 있으면 완료로 본다. 현업 담당자에게 기준을 확인하고 판정식을 바꿨다.

판정식
조치완료 = 조치내용 있음 OR 조치완료일 있음

4. 조회에서 빠진 컬럼

근거 조항 미기재가 100%로 나왔다. 집계 쿼리 SELECT 절에 근거 조항, 점검 기관, 점검 기간 컬럼이 빠져 있었다. 값이 없는 것이 아니라 가져오지 않은 것이었다.

5. 공식과 반올림

구분변경 전변경 후
분모전체전체 − 제외
반올림반올림내림
결과미완료가 있어도 100%미완료가 있으면 100% 미만
JS
function completionRate(done, total, excluded) {
  var base = total - excluded;
  if (base <= 0) return 0;
  return Math.floor(done / base * 1000) / 10;   // 99.96% → 99.9%
}

6. 합계가 안 맞을 때 생긴 상태값

상태별 건수를 더하면 전체보다 적었다. 하나는 화면 칩 목록에 "조치예정"이 빠져 있었고, 하나는 판정 규칙에 해당하지 않는 데이터였다.

데이터처음 판단최종 처리
조치 기한이 없는 건지연에 포함기한미지정 상태 신설
기한이 2년 넘게 지난 미완료지연에 포함장기 미정리로 분리 집계
검출일이 없는 건화면마다 다르게 처리모든 화면에서 같은 규칙 적용
숫자보다 정의가 먼저기한이 없는 건은 늦은 것이 아니라 아직 정해지지 않은 것이었다. 같은 숫자라도 어느 상태에 넣느냐에 따라 보고 내용이 달라진다. 상태 정의는 현업과 합의해서 정한다.

점검 목록

  • 화면 숫자와 비교할 DB 기준값이 있는가
  • 데이터소스부터 실제 액티비티까지 따라가 봤는가
  • 판정 컬럼이 전체 유형에 채워지는 값인가
  • 집계 쿼리가 필요한 컬럼을 모두 가져오는가
  • 상태별 합계가 전체와 같은가
  • 여러 화면이 같은 판정 규칙을 쓰는가
시리즈 목차 16편
  1. PI 담당자가 로우코드로 사내 시스템을 직접 만들고 운영한 기록
  2. Mendix Datagrid2 대신 HTMLSnippet과 JS로 목록 화면 만들기
  3. Mendix SPA에서 HTMLSnippet JS가 꼬이는 이유: 이벤트 중복과 DOM 공존
  4. Mendix mx.data.commit이 조용히 실패할 때
  5. Mendix Java heap OOM 추적기: base64 이미지 컬럼
  6. Mendix 커밋 롤백, 용량 문제가 아니었다: FileDocument 전환기
  7. Mendix 첫 접속 지연 줄이기: 워밍업과 캐시
  8. Mendix SAML SSO 자동 로그인과 딥링크 유지
  9. Mendix Studio Pro에서 안 바뀌는 스타일 main.scss로 바꾸기
  10. Mendix MPK 파일 열어서 마이크로플로우 구조 보기
  11. SSO 로그 테이블로 MAU와 재방문율 구하는 SQL
  12. Mendix DateTime이 BI 도구에서 하루 빠르게 보이는 이유
  13. 대시보드 숫자가 틀렸을 때 확인하는 순서 (현재 글)
  14. 보기 좋은 대시보드에서 할 일을 알려주는 대시보드로
  15. 여러 점검 시스템을 하나로 합치는 데이터 모델
  16. 데이터 비전공자에게 분석 결과 보고하기
  • #대시보드
  • #데이터품질
  • #집계오류
  • #Mendix
  • #SQL
  • #PI

댓글