교차분석표와 6년 추이를 한 번에 자동으로 만들기

업무 자동화4분 읽기

통합 데이터가 준비되면 진짜 일이 시작됩니다. 보고서에 들어갈 교차분석표를 만드는 작업입니다. 유형별로 산업과 교차한 표, 지역별로 교차한 표, 기관형태별로 교차한 표를 각각 수출, 수입, 수지 세 측정값으로 뽑고 여기에 연도와 반기, 분기 합계에 6년 추이와 억달러, 비중 시트까지 더하면 분기마다 만들어야 할 표가 수십 종에 이릅니다. 사람이 이걸 손으로 피벗하던 것이 기존 작업의 핵심 부담이었습니다. 이 표들을 명세 기반으로 한 번에 생성한 설계를 정리합니다.

표를 코드가 아니라 명세로 다룬다

가장 피하고 싶었던 것은 표 하나마다 함수 하나를 짜는 방식입니다. 교차표가 수십 종인데 각각을 별도 코드로 만들면, 새 표가 필요할 때마다 코드를 늘려야 하고 하나를 고치면 다른 하나가 어긋나기 쉽습니다. 그래서 표를 코드가 아니라 데이터로 다뤘습니다. 표 하나를 "행 차원은 무엇, 열 차원은 무엇, 어떤 측정값을 집계하고, 어느 기간 단위인가"라는 명세로 기술하고 이 명세들의 목록을 두는 방식입니다.

명세 하나는 예를 들어 "행은 유형, 열은 ICT산업, 측정값은 수출·수입·수지, 기간은 연간"처럼 표현됩니다. 실제 표 생성 엔진은 이 명세를 받아 통합 데이터에서 해당 차원으로 피벗을 돌립니다. 표의 종류가 늘어도 엔진은 그대로고 명세만 추가됩니다. 로직과 목록을 분리하니, 어떤 표들이 만들어지는지가 코드를 안 읽어도 명세 목록만 보면 한눈에 들어옵니다.

차원과 측정값, 기간의 조합

교차표의 뼈대는 세 가지입니다. 행 차원, 열 차원, 측정값입니다. 이 데이터에서 행 차원은 유형, 지역, 기관형태 중 하나가 되고 열 차원은 ICT산업이 되며 측정값은 수출, 수입, 수지입니다. 여기에 기간 단위가 곱해집니다. 같은 유형 × 산업 교차표라도 연간으로 볼 때와 반기, 분기로 볼 때가 다르고 여러 해를 늘어놓는 6년 추이가 또 다릅니다.

측정값을 시트로 나눈 것은 의도적인 선택이었습니다. 수출, 수입, 수지를 한 표에 욱여넣는 대신 각각 별도 시트로 분리하면, 보고서를 쓰는 사람이 필요한 측정값 시트를 그대로 가져다 쓸 수 있습니다. 표준 분류 코드(유형·지역·기관형태·산업을 가리키는 코드 체계)를 기준으로 행과 열의 순서를 고정해 분기가 바뀌어도 같은 자리에 같은 항목이 오도록 했습니다. 표의 자리가 흔들리지 않아야 사람이 매번 다시 확인하지 않습니다.

합계와 세부가 어긋나지 않게

교차표에서 자주 새는 곳이 합계입니다. 전체 합계 행과 세부 항목 행이 같은 표 안에 있는데, 피벗을 잘못 돌리면 세부의 합이 전체와 맞지 않는 표가 나옵니다. 사람 눈으로는 잡기 어렵고 그대로 보고서가 되면 신뢰가 무너집니다. 그래서 전체를 뜻하는 코드와 세부를 뜻하는 코드를 분류 체계 안에서 구분해 다루고 합계가 세부의 합과 맞는지를 뒤의 검증 단계가 다시 확인하도록 연결했습니다.

6년 추이는 조금 다른 결의 표입니다. 하나의 시점을 교차하는 대신, 같은 항목을 여러 해에 걸쳐 늘어놓아 흐름을 봅니다. 예전에는 이걸 만들려고 연도별 파일 여섯 개를 모두 열어 수치를 옮겨야 했는데, 통합 데이터에 이미 여러 해가 쌓여 있으니 추이 명세 하나로 연도축을 펼치면 됩니다. 사람이 파일을 여닫던 일이 명세 한 줄로 대체된 셈입니다.

명세 기반 설계가 남긴 것

이 방식의 가치는 확장에서 드러납니다. 새로운 각도의 표가 필요해지면 명세를 하나 추가하는 것으로 끝나고 표 생성 엔진과 검증 로직은 건드리지 않습니다. 반대로 어떤 표를 빼야 하면 명세를 지우면 됩니다. 표가 코드가 아니라 목록이기 때문에, 무엇이 만들어지는지를 관리하는 일이 프로그래밍이 아니라 목록 편집에 가까워집니다.

반복되는 산출물이 수십 종일 때는 그것들을 하나씩 코드로 짜는 대신 "무엇을 만들지"를 데이터로 기술하고 "어떻게 만들지"를 엔진 하나로 모으는 편이 오래갑니다. 사람이 분기마다 손으로 다시 피벗하던 표들이 폴더 지정 한 번에 명세대로 한꺼번에 만들어지는 구조로 바뀌었습니다.

이 교차표의 재료가 되는 정규화는 이기종 엑셀 정규화에서, 만들어진 표가 맞는지 확인하는 검증은 셀 단위 무오차 검증에서 다룹니다. 전체 사례는 무역 통계 엑셀 교차분석 자동화에서 볼 수 있습니다.

자주 묻는 질문

표를 명세로 다룬다는 게 무슨 뜻인가요?

표 하나를 "행 차원, 열 차원, 측정값, 기간"이라는 항목으로 기술한 데이터로 두고 표 생성 엔진이 그 명세를 받아 피벗을 돌리게 하는 방식입니다. 표 종류가 늘어도 엔진은 그대로 두고 명세만 추가하면 되므로, 어떤 표가 만들어지는지가 목록만 봐도 파악됩니다.

측정값을 왜 시트로 나눴나요?

수출, 수입, 수지를 한 표에 모두 넣으면 보기에는 압축되지만 활용이 불편합니다. 측정값마다 별도 시트로 분리하면 보고서를 쓰는 사람이 필요한 시트를 그대로 가져다 쓸 수 있고 표의 구조도 단순해집니다.

합계와 세부가 안 맞는 표가 나올 위험은 없나요?

전체를 뜻하는 코드와 세부를 뜻하는 코드를 분류 체계 안에서 구분해 다루고 합계가 세부의 합과 맞는지를 이어지는 검증 단계가 다시 확인합니다. 피벗 자체의 정확성에만 기대지 않고 자기 정합성 검사로 한 번 더 걸러 냅니다.

#엑셀자동화#교차분석#피벗테이블#pandas

업무자동화 구축이 필요하신가요?

무료 상담 신청