인지야공

인지야공/강의 요약/12번째 글

스마트시티를 위한 데이터 시각화 — 기대와 달랐고, 그래서 남았다

시각화 이론을 배우려고 신청했는데 열어 보니 Microsoft Power BI 활용 강의였다. 현업에서 이미 시각화 도구를 쓰고 있던 터라 처음에는 기대를 접고 “들어나 보자”는 마음이었다.

결과적으로 세 과목 중 가장 직관적이었고 가장 빨리 써먹은 강의가 이것이었다. 이유는 간단하다. 이미 만들어 둔 현업 결과물을 Power BI 로 다시 만들어 보면서 쓰던 도구와 장단점을 비교할 수 있었기 때문이다. 같은 결과물을 두 도구로 만들어 보는 것만큼 이해도가 빨리 오르는 방법이 없다.

강의의 뼈대

단계내용
1BI 란 무엇인가, 셀프서비스 BI 로의 이동
2Power BI 의 구성 요소와 서비스 구조, 설치와 계정 등록
3데이터 시각화 시작하기 — 데이터 가져오기, 시각적 개체
4데이터 전처리 (Power Query)
5모델링과 측정값
6다양한 분석 기능, DAX 분석식의 이해와 활용
7App Source 활용, 분석 기능 응용
8데이터 시각화 프로젝트 (과제)

전통적 BI 와 셀프서비스 BI

강의가 첫 장에서 그린 그림이 이 강의 전체의 논지였다. 가로축을 난이도, 세로축을 가치로 두면 전통적 BI 와 고급 분석 사이에 셀프서비스 BI 가 놓인다.

전통적 BI셀프서비스 BI
만드는 사람IT 부서·전문 개발자현업 담당자 본인
요청 → 반영며칠~몇 주즉시
데이터 준비전산에서 정제해 내려 준다내가 가져와 내가 정제한다
위험병목지표 정의가 사람마다 달라진다

현장에서 데이터 요청을 넣고 며칠씩 기다려 본 사람이라면 이 표의 왼쪽 열이 무슨 뜻인지 안다. 그리고 오른쪽 열의 위험도 실제로 겪는다 — 같은 “수율”을 서로 다르게 계산한 보고서 두 개가 회의에 올라오는 일 말이다. 그래서 뒤에 나오는 모델링과 측정값이 중요해진다.

Power BI 의 구성

구성 요소하는 일
Power BI DesktopPC 에 설치. 데이터 가져오기·전처리·모델링·보고서 작성
Power BI Service웹(app.powerbi.com). 게시·공유·대시보드·새로 고침
Power BI Mobile모바일에서 열람

만드는 곳과 나누는 곳이 분리돼 있다. 작업은 Desktop 에서 하고, 완성한 .pbix 를 Service 에 게시하면 그때부터 링크로 공유된다. 파일을 메일로 돌리지 않아도 되는 것이 협업에서는 생각보다 큰 차이다.

데이터 가져오기 → 전처리 → 모델링

이 순서가 Power BI 작업의 실제 순서이고, 강의도 그대로 따라간다.

전처리 — Power Query

가져온 데이터를 바로 쓰는 일은 없다. 열 제거, 형식 변환, 행 필터, 열 분할, 피벗 해제, 쿼리 병합과 추가를 Power Query 에서 처리한다.

강의가 쿼리 병합·추가를 집합 연산으로 설명한 것이 좋았다.

A∪B,A∩B,A−B={x∣x∈A, x∉B}A \cup B, \qquad A \cap B, \qquad A - B = \{x \mid x \in A,\ x \notin B\}

조인이 무엇을 남기고 무엇을 버리는지를 벤 다이어그램으로 먼저 잡고 가면, 나중에 행 수가 안 맞을 때 어디를 봐야 하는지 알게 된다.

Power Query 의 진짜 값어치는 다른 데 있다. 모든 전처리가 ‘적용된 단계’로 기록된다. 다음 달 데이터가 들어와도 새로 고침 한 번이면 같은 절차가 그대로 다시 돈다. 엑셀에서 매달 손으로 반복하던 작업이 여기서 사라진다.

모델링 — 표 하나로 다 하지 않는다

엑셀에 익숙한 사람이 Power BI 에서 가장 먼저 부딪히는 벽이다. 모든 걸 한 시트에 넣지 않고, 표를 나눈 뒤 관계로 잇는다.

과제로 쓴 주문 데이터가 정확히 그 구조였다.

테이블역할
주문사실(fact) — 건별 거래
고객차원 — 국가, 시도, 시군구
제품차원 — 대분류, 중분류
영업담당자차원
배송담당자차원
반송사실 보조
날짜기준표날짜 차원 — 연도, 분기

가운데 사실 테이블 하나에 차원 테이블들이 붙는 별 모양 스키마다. 그리고 날짜기준표를 따로 만든다는 것이 이 주차의 핵심 습관이었다. 주문 테이블의 날짜 열을 그냥 쓰면 거래가 없는 날은 아예 존재하지 않게 되고, 연·분기 단위 비교가 어긋난다. 날짜 차원을 별도로 두면 빠진 날짜까지 축이 살아 있다.

계산 열과 측정값

언제 계산되는가어디에 저장되는가
계산 열새로 고침 시점에 행마다모델에 값으로 저장된다
측정값보고서에서 볼 때, 그 화면의 필터 문맥에 맞춰저장되지 않는다

이 구분을 모르면 매출 합계를 계산 열로 만들어 놓고 왜 슬라이서에 반응하지 않는지 헤매게 된다. 필터에 따라 값이 달라져야 하는 것은 전부 측정값이다.

매출액 = SUMX('주문', '주문'[수량] * '주문'[단가])
수익액 = [매출액] - SUMX('주문', '주문'[수량] * '주문'[원가])
수익률 = DIVIDE([수익액], [매출액])

DIVIDE 를 쓰는 이유도 강의에서 짚고 넘어간다 — 분모가 0일 때 오류 대신 공백을 돌려준다. 그리고 측정값을 한 번 정의해 두면 카드에 놓든 막대에 놓든 지도에 놓든 같은 정의가 쓰인다. 앞에서 말한 “사람마다 다른 수율”이 여기서 정리된다.

과제 — 주문 데이터 대시보드

7개 테이블로 정규화된 주문 데이터를 받아 보고서 한 장을 만드는 과제였다. 실제로 쓴 시각적 개체는 이 정도다.

개체무엇을 보였나
카드매출액·수익액 총계
막대(세로) 차트제품 대분류·중분류별 실적
꺾은선 차트연·분기 추이
도넛·원 차트배송 방법 구성비
맵시도·시군구별 분포
슬라이서연도·분기·분류 필터

만들면서 배운 것은 개체 종류가 아니라 하나의 필터가 모든 개체에 동시에 걸린다는 감각이다. 연도 슬라이서를 누르면 카드도 지도도 같이 바뀐다. 엑셀에서 시트마다 따로 만들던 피벗을 한 화면에서 서로 연결된 상태로 두는 것 — 셀프서비스 BI 가 파는 게 결국 이것이다.

쓰던 도구와 비교

강의를 들으면서 현업에서 쓰던 도구들과 항목별로 비교해 봤다. 실제로 만들어 본 뒤의 체감이라 일반적인 벤치마크는 아니고, 내가 쓰는 용도 기준이다.

항목SAS VASpotfireMS Power BI
유연성상상중
작업성중상중
처리 능력상중하
자동 분석상하하
연계 분석중상상
확장성중상 (개체 추가)상 (개체 추가)
속도중상하
공동 작업성하 (서버 접근 필요)중 (관리자 권한 필요)상
서식 유연성 (PPT)하중상

대용량 처리와 속도는 Power BI 가 밀린다. 그런데 마지막 두 줄이 회의에서는 더 크게 작용했다. 서식의 목적은 결국 회의의 효율이고, 익숙한 PPT 서식을 그대로 쓸 수 있는가가 자료를 읽는 속도를 좌우한다.

실제로 남은 것

보안 문제와 서식 문제 때문에 기존 시각화 도구를 공동 작업물에 쓰지 못하던 상황이 있었다. 그 자리를 Power BI 로 대체해서 KPI 성과 관리와 정기 미팅 자료 작성 같은 반복 작업을 주당 1시간쯤 줄였다.

강의 하나에서 기대한 것과 얻은 것이 다를 수 있다. 시각화 이론을 기대했다가 도구 사용법을 배웠는데, 쓰고 있던 도구를 다시 보게 만든 것이 이 강의의 값이었다.

같은 시기에 들은 확률과 통계 정리, 선형대수 정리와 한 묶음이다. 차트 선택과 표현 쪽은 matplotlib 치트시트에 따로 정리해 두었다.

표시는 이 브라우저에만 남는다. 서버로 가는 것은 없다.