서론
일별 batch를 위한 태블로 대시보드 요청이 들어왔다. 회사에서 주요하게 보는 생산부의 일일 생산량을 C레벨에서 보길 원했기 때문이다. 해당 과제를 진행한 흐름과 고민을 했던 구현 한 가지를 나눠보고자 한다.
본론 - 업무 진행 과정
1. 요구 조건 파악
나에게 주어진 요구조건은 아래와 같다. (만약 대시보드 요청이 처음인 부서라면, 아래의 요청도 없을 경우가 많다.)
- 한 페이지에
- 너무 많은 내용이 담기지 않게
- 연 CAPA와 월 목표량 표시
2. 가안 구상 (+추출할 데이터 형식 구상)
사실, 처음부터 자세하게 구상하면 소모되는 시간이 덜해서 좋을 것이다. 하지만 대시보드를 통해 보고 싶은 것이 있지만, 어떻게 보면 좋을지 요청부서 or 요청자가 가늠을 못하는 경우가 많다. 그래서 항상 가볍게 가안을 만들어본다.
만들어 본 가안 구성은 아래와 같았다. 일별 생산량을 볼 수 있는 선 그래프를 그리고, 해당 그래프에 레이블 값을 표기하면 복잡해지기 때문에, 밑에 표로 다시 넣어주었다. (예시는 실제로는 태블로+임시데이터 로 그려서 제출한다.)
3. 가안에 대한 피드백
- 색상 : 제목, 표의 머리글 등에는 구분이 가능하게 색상 추가
- 회사에서 자주 사용하는 색상, 브랜드 이미지 등이 반영되는 색상을 골라야겠다.
- 주요 부분은 눈에 잘 들어올 수 있게 색상으로 구분하는 것이 필요하다는 것을 배웠다.
- 월 누적
- 총합계
- 2번과 3번은 보고 받는 입장에서 총계 누적이 있으면 수치적으로 빠른 판단이 가능한 것 같았다.
- 일주일이 아니라 전체 일자가 다 보일 수 있게
- 표는 캘린더 형식으로 변경
- 4번과 5번을 함께 반영해서 전체 일자가 보이도록 변경해야겠다.
- CAPA와 근무일수, 목표량 등은 좌측상단에 배치
- 그 외 참고사항은 제일 하단에 배치
- 보고서에서 좌상단에 기본 정보, 좌하단에 기타 참고사항이 있는게 자연스럽다는 부분을 잊고 있었다.
4.1 구현 고민 - 캘린더차트
구현할 때 가장 고민되었던 부분인 '캘린더차트'이다. (기본 캘린더차트 구현 방법은 ‘태블로 캘린더 차트’로 검색했을 때 나오는 글들을 참고했다.)
3월에 해당하는 캘린더차트를 태블로로 구현했을 때, 행에 ‘주’를 넣으면 2024년 중 3월은 9주차~14주차에 해당하기 때문에 ‘9주, 10주, 11주, …14주’와 같이 보인다.
‘음, 거슬리긴 한데,,,’ 마음 속으로 생각하지만, 진행과정 보고의 압박으로 가안을 그대로 제출한다.
당연히 ‘9주~14주를 3월 1주차, 2주차처럼 보이게 할 순 없냐’는 피드백이 돌아온다.
‘아,,, 그러면 어떻게든 구현을 해내야지.’
어떤 업무를 할 때나 늘 예상치 못한 요청이 들어오지만. 우린 답을 찾을 거니까.. 늘 그랬듯이..!
4.2 구현 해결방법 - 캘린더차트
월별 인덱스를 쓰는 등 사람에 따라 다양한 방법으로 해결을 할 것 같다. 그 중 떠오른 방법은,
‘DATEPART(날짜_부분, 날짜, [주_시작]) 라는 함수를 활용해서, [주_시작]부분을 3월로 바꾸면 1주부터 보이지 않을까?’ 였다.
그래서 다음과 같은 계산식을 만들었다.
DATEPART('week', [날짜])-DATEPART('week', DATETRUNC('month', [날짜]))+1
해석 방법
DATEPART('week', [날짜])
: 입력된 날짜[날짜]
가 속한 주차를 반환.
ex) 1월 1주차 ~ 3월 14주차DATEPART('week', DATETRUNC('month', [날짜]))
: 입력된 날짜[날짜]
가 속한 달의 시작 날짜가 속한 주차를 반환. 즉, 입력된 날짜의 달의 시작 주차를 계산.
ex) 3월의 시작 주차 = 9주차DATETRUNC('month', [날짜])
: 입력된 날짜[날짜]
를 속한 달의 첫째 날로 반올림.
ex) 최종 : 3월 9주차 - 3월 9주차 + 1 을 해주면 3월은 ‘1, 2, 3, 4, 5, 6’에 해당하는 값을 가지게 된다.
수식 참고 링크
4.3 결과물 - 캘린더차트
마치며
시각화 단계의 업무를 할 때는, 보통 막대나 선, 표 이상의 것을 잘 활용을 안하게 된다. 그래서 익숙하게 업무를 하다가도, 가끔 새로운 요청이 들어오면 기능을 하나 더 익힐 수 있어 재밌게 진행을 하게 된다.
이렇게 요청사항을 다 완료해서 1차 완성본이 만들어져도, batch 기간이 바뀐다거나, 추가 요청사항으로 인해서 데이터 구성(필요한 컬럼)이 달라질 때도 있다. 그래서 항상 ' 운영DB보다 가볍지만, 추가 요청사항이 들어와도 커버할 수 있을 정도의 집계 데이터'를 어떻게 구성하면 좋을까를 생각하게 되는 것 같다.
댓글