22일차는 Tableau를 처음 다루면서, 데이터를 어떻게 “보이게” 만들 것인지에 초점이 맞춰진 날이었다. 이전까지는 Python, SQL, Pandas로 데이터를 수집하고 가공하는 흐름이 많았다면, 이번에는 같은 데이터를 가지고도 보는 사람이 바로 이해할 수 있게 시각적으로 구성하는 방법을 다뤘다.
처음에는 Tableau가 단순히 그래프를 쉽게 그리는 도구라고 생각했는데, 막상 해보니 핵심은 차트를 예쁘게 만드는 것보다 측정값과 차원을 구분하고, 어떤 필드를 어디에 배치해야 원하는 뷰가 나오는지 이해하는 것에 가까웠다. 숫자는 집계되어 하나의 값으로 나오고, 문자나 날짜 같은 차원은 그 값을 여러 덩어리로 나누는 역할을 했다. 특히 색상, 레이블, 필터, 계산된 필드, 지도, 대시보드 액션까지 이어지면서 Tableau는 단순 시각화 툴이라기보다 “데이터를 탐색하고 전달하는 화면을 만드는 도구”에 가까웠다.
1. Tableau를 쓰는 이유는 데이터 리터러시와 연결됐다
시작은 Tableau 기능 자체보다 데이터 리터러시 이야기였다. 데이터를 가지고 의사결정을 하려면 단순히 분석하는 사람만 이해하면 안 되고, 보는 사람도 빠르게 맥락을 이해할 수 있어야 한다. 예시로 나온 나이키 대시보드에서는 로고, 흑백 색상, 직접 판매/간접 판매 비중을 활용해서 제목을 읽기 전에도 “나이키 관련 데이터”라는 것을 빠르게 알 수 있게 구성되어 있었다.
이 부분에서 남은 건, 시각화는 단순히 값을 보여주는 일이 아니라는 점이었다. 어떤 색을 쓰는지, 어디에 큰 숫자를 배치하는지, 어떤 이미지를 넣는지에 따라 보는 사람이 받아들이는 속도가 달라진다. 정치 포스터 예시에서도 후보자의 위치, 색상, 숫자, 얼굴 배치가 전부 의미를 가지고 있었다.
Tableau를 다룰 때도 이 관점이 계속 이어졌다. 예를 들어 기업 대시보드를 만들 때는 아무 색이나 쓰는 것이 아니라, 삼성은 파란색, SK는 오렌지색처럼 보는 사람이 이미 알고 있는 브랜드 색상을 활용하면 더 빠르게 인식할 수 있다. 색상은 단순 장식이 아니라, 해석을 돕는 장치였다.
2. Excel 데이터를 연결하고, 필드 유형을 확인했다
첫 실습은 Excel 파일을 Tableau에 연결하는 것부터 시작했다. Tableau 왼쪽 패널에서 파일 연결 중 Microsoft Excel을 선택하고, Cell1 Company라는 가상의 매출 데이터를 가져왔다. 파일로 저장된 데이터든 클라우드 커넥터를 통해 가져오는 데이터든, Tableau에서는 먼저 데이터 원본을 연결한 뒤 워크시트에서 시각화로 넘어가는 구조였다.
Excel 파일 안에 여러 시트가 있으면 Tableau가 바로 데이터를 연결하지 않고, 어떤 시트를 사용할지 선택해야 했다. 이번에는 결제내역 시트를 캔버스에 올려 사용했다. 연결 후에는 각 필드가 숫자인지, 문자열인지, 날짜인지 Tableau가 자동으로 인식했다.
여기서 날짜 유형이 꽤 중요했다. 구매 일자, 완료 일자처럼 하이픈이 들어간 날짜는 Tableau가 날짜로 인식했지만, 날짜처럼 보이더라도 형식이 맞지 않으면 문자로 인식될 수 있다. 그런 경우에는 필드 유형 아이콘을 눌러 날짜로 바꿔야 했다. 이 부분은 나중에 라인 차트를 만들 때도 계속 영향을 줬다.
3. 구매 ID를 분할해서 파생 필드를 만들었다
데이터 원본 화면에서 바로 새 필드를 만드는 것도 해봤다. 구매 ID에 하이픈이 들어 있었고, 이 값을 기준으로 앞쪽 값을 잘라내 구매 연도라는 새 필드를 만들었다.
Tableau에서는 구매 ID 필드 옵션에서 사용자 지정 분할을 선택하고, 구분 기호를 하이픈으로 지정할 수 있었다. 이 작업을 하면 Tableau가 내부적으로 계산식을 만들어준다.
TRIM(SPLIT([구매 ID], "-", 1))
SPLIT은 하이픈 기준으로 문자열을 나누고, 1은 그중 첫 번째 조각을 가져온다는 뜻이다. TRIM은 앞뒤 공백을 제거하는 함수다. 이 부분은 Python에서 split()을 쓰던 것과 비슷하게 느껴졌는데, Tableau에서는 클릭으로 만들고 그 결과를 계산식으로 확인할 수 있다는 점이 달랐다.
이후에도 계속 느낀 건, Tableau에서 기본 기능으로 안 되는 것은 계산된 필드로 새로 만들 수 있다는 점이었다. 즉, 원본 데이터에 없더라도 분석에 필요한 형태로 필드를 새로 정의할 수 있었다.
4. 측정값과 차원: 숫자는 집계되고, 차원은 나눈다
워크시트로 넘어가면서 가장 먼저 구분한 것은 측정값과 차원이었다. Tableau는 숫자형 필드를 측정값으로 보고, 그 외의 문자/날짜 필드는 차원으로 분류했다. 측정값은 더블 클릭하면 기본 집계가 적용되어 하나의 값으로 표시된다.
예를 들어 매출을 더블 클릭하면 전체 매출 합계가 하나의 숫자로 나왔다.
SUM([매출])
이 값은 Excel에서 매출 컬럼 전체를 합산한 것과 같은 의미였다. 기본 집계가 합계로 되어 있었기 때문에 SUM이 붙었다. 만약 할인율이나 수익률처럼 합계보다 평균이 자연스러운 필드라면, 기본 집계를 평균으로 바꿔야 한다는 점도 같이 봤다.
그 다음 시도를 더블 클릭하면 하나의 매출 합계가 시도별로 나뉘었다. 여기서 차원의 역할이 보였다.
측정값 = 숫자를 집계한다.
차원 = 집계된 숫자를 여러 그룹으로 나눈다.
이 관점이 Tableau의 기본 출발점인 것 같다. 숫자를 먼저 올려서 집계하고, 그다음 차원을 올려서 쪼개보는 방식이다.
5. 막대 차트에서 레이블, 정렬, 색상을 조정했다
시도별 매출을 막대 차트로 만들고 나서, 보기 좋게 조정하는 작업을 했다. 처음에는 세로 막대였지만, 지역명을 읽기 편하게 하려고 행과 열을 바꿔 가로 막대로 전환했다. 그 다음 매출이 큰 값부터 보이도록 내림차순 정렬을 했다.
레이블은 매출을 마크 카드의 레이블에 올려 표시했다. 숫자가 막대 옆에 바로 보이니까 값 비교가 훨씬 쉬웠다.
색상은 두 가지 방식으로 실습했다. 첫 번째는 시도를 색상에 넣어 지역마다 다른 색을 주는 방식이었다. 이 방식은 보기에는 화려하지만, 색이 너무 많으면 오히려 지저분하게 보일 수 있었다. 두 번째는 매출을 색상에 넣어 값이 큰 곳은 진하게, 작은 곳은 연하게 표현하는 방식이었다.
이번에는 두 번째 방식이 더 적절했다. 서울이라는 지역명 자체에 사람들이 떠올리는 고정 색상이 있는 것은 아니기 때문이다. 반대로 지하철 2호선처럼 사람들이 초록색을 바로 떠올리는 대상이라면, 범주별 색상을 쓰는 것이 더 자연스럽다. 색상은 “예쁜가”보다 “해석을 돕는가”가 더 중요했다.
6. 그룹과 계산된 필드로 지역명을 정리했다
시도 데이터에는 강원도와 강원특별자치도, 전라북도와 전북특별자치도처럼 같은 지역인데 이름이 다르게 들어간 값이 있었다. 이 경우에는 두 값을 선택해서 그룹화했다. 그룹을 만든 뒤에는 이름을 강원도, 전라북도처럼 보기 쉬운 값으로 바꿨다.
이후에는 시도명을 두 글자로 줄이는 계산된 필드도 만들었다. 예를 들어 서울특별시는 서울, 세종특별자치시는 세종으로 바꾸면 레이블이 훨씬 깔끔해진다. 다만 충청남도, 전라북도, 경상남도처럼 앞 두 글자만 자르면 충청, 전라, 경상이 되어 남도/북도 구분이 사라진다.
그래서 끝이 남도 또는 북도로 끝나는 경우에는 첫 글자와 세 번째 글자를 조합하는 방식으로 계산식을 만들었다.
IF ENDSWITH([시도_뉴], "남도")
OR ENDSWITH([시도_뉴], "북도")
THEN LEFT([시도_뉴], 1) + MID([시도_뉴], 3, 1)
ELSE LEFT([시도_뉴], 2)
END
이 계산식으로 전라북도는 전북, 충청남도는 충남처럼 만들 수 있었다. 중간에 계산식 오류가 났을 때는 IF문 끝에 END가 필요하다는 메시지를 보고 수정했다. 이 부분은 Tableau 계산식도 결국 프로그래밍처럼 조건문 구조를 정확히 맞춰야 한다는 느낌이었다.
7. 인구 데이터로 필터와 지도 대시보드를 만들었다
다음으로는 우리나라 인구 데이터를 가져와서 시도별 인구수를 막대 차트로 만들었다. 처음에는 전체 연도 인구가 합산되어 경기도 인구가 비정상적으로 크게 나왔고, 여기서 연도 필터가 필요하다는 점을 봤다. 연도를 필터에 넣고 2026년만 선택하니 2026년 4월 기준 인구가 정상적으로 보였다.
이후에는 연도별 인구 증감도 봤다. 연도를 열에 두고 인구수를 행에 놓으면 전체 추이를 볼 수 있는데, 우리나라 인구가 언제부터 감소했는지 보려면 단순 총량보다 전년 대비 차이를 보는 것이 더 직관적이었다. 그래서 Quick Table 계산에서 차이를 적용했다.
현재 연도 인구수 - 이전 연도 인구수
이 방식으로 보면 증가/감소가 바로 보인다. 첫 번째 연도는 비교할 이전 연도가 없기 때문에 null이 생겼다. 이런 null은 데이터가 잘못된 것이 아니라, 계산 구조상 비교 대상이 없어서 생긴 값이었다.
지도도 만들었다. 시도 필드의 지리적 역할을 주/시도로 바꾸면 Tableau가 자동으로 위도와 경도를 생성했고, 더블 클릭만으로 지도에 표시할 수 있었다. 시군구도 지리적 역할을 지정해 지도에 찍었다. 다만 행정구역 개편 때문에 일부 알 수 없는 항목이 생겼고, 이런 경우에는 위치 편집이 필요했다.
마지막에는 지도와 연도별 인구 증감 차트를 한 대시보드에 넣고, 지도 시트를 필터로 사용했다. 시군구를 클릭하면 오른쪽 차트가 해당 지역 기준으로 바뀌는 구조였다. 서울, 경기, 인천을 바꿔보면서 서울은 2010년 이후 감소 흐름이 보이고, 경기와 인천은 증가 흐름이 보이는 식으로 해석할 수 있었다.
8. 라인 차트에서 불연속형 날짜와 연속형 날짜를 구분했다
오후에는 라인 차트를 만들었다. 라인 차트는 시간 흐름에 따른 추이를 볼 때 적합했다. 먼저 매출과 구매 일자를 더블 클릭하면 연도별 매출이 나왔다. 여기서 날짜 필드는 계층 구조를 가지고 있어서 연도 → 분기 → 월 → 일 단위로 드릴다운할 수 있었다.
처음 본 것은 파란색 날짜, 즉 불연속형 날짜였다. 불연속형 월은 1월부터 12월까지 유한한 값으로 묶인다. 그래서 “매년 7월에 매출이 낮은가?”처럼 시즌성을 볼 때 좋았다. 실제로 월별 매출을 보고, 구매 일자를 색상에 넣어 연도별로 나눠보니 매년 7월 매출이 떨어지는 패턴이 보였다.
반면 초록색 날짜, 즉 연속형 날짜는 시간 흐름을 끊지 않고 이어서 보여준다. 주가 데이터처럼 특정 기간 동안 날짜가 계속 이어지는 데이터를 볼 때는 연속형 날짜가 더 적합했다. 불연속형 날짜는 1월, 2월, 3월처럼 같은 달끼리 묶어보고, 연속형 날짜는 2022년 1월부터 2025년 12월까지 흐름을 쭉 이어서 보는 차이가 있었다.
이 차이가 은근 중요했다. 같은 날짜 필드를 쓰더라도 파란색인지 초록색인지에 따라 질문이 달라진다.
불연속형 월
= 1월~12월 중 어느 시즌이 강한지 보기
연속형 일자
= 실제 시간 흐름을 끊지 않고 추이 보기
9. 평균 라인과 테이블 계산으로 평균 이상/미만을 구분했다
월별 매출 라인 차트에는 평균 라인도 추가했다. 분석 패널에서 평균 라인을 끌어와 테이블 참조선에 놓으면 전체 기간 평균이 표시되고, 패널에 놓으면 연도별 평균선이 따로 생겼다.
이후에는 각 월의 매출이 평균 이상인지 미만인지 구분하는 계산된 필드를 만들었다. 처음에는 문자열로 평균 이상, 평균 미만을 반환하는 방식으로 생각할 수 있지만, 계산 관점에서는 Boolean이 더 간단하고 빠르다.
최종적으로는 아래처럼 작성할 수 있었다.
SUM([매출]) >= WINDOW_AVG(SUM([매출]))
WINDOW_AVG는 테이블 계산 함수로, 현재 범위 안에서 평균을 계산한다. 이 계산된 필드를 색상에 넣으면 평균 이상과 미만이 색으로 구분된다. 처음에는 전체 평균을 기준으로 색이 나뉘었는데, 테이블 계산 편집에서 특정 차원을 조정하면 연도별 평균 기준으로 비교할 수 있었다.
여기서 헷갈렸던 건 “평균 이상”이 전체 기간 평균인지, 각 연도 안에서의 평균인지였다. 같은 계산식이라도 테이블 계산의 범위를 어떻게 잡느냐에 따라 결과가 달라졌다. 이건 Tableau에서 계산식만큼이나 계산 방향과 범위가 중요하다는 걸 보여준 부분이었다.
10. 주가 데이터는 Union으로 합치고, Google Sheets로도 연결했다
주가 데이터 실습에서는 삼성전자와 SK하이닉스 시트를 같이 사용했다. 두 시트는 Date, Close, High, Low, Open, Volume처럼 구조가 같았기 때문에 Union으로 밑으로 쌓았다.
SK하이닉스 시트
+ 삼성전자 시트
= 같은 구조의 주가 데이터 하나로 결합
Tableau에서 Union을 하면 원래 없던 시트 또는 테이블 이름 같은 필드가 생기는데, 이를 Company로 바꿔 회사 구분용으로 사용했다. 날짜 필드에는 불필요한 시분초가 들어 있었기 때문에 필드 유형을 날짜로 바꿨다. 이렇게 해야 일 단위 라인 차트로 보기 좋았다.
주가 차트에서는 Close를 사용했다. 처음에는 기본 집계가 합계로 되어 있어서 연도별 종가 합계처럼 이상한 값이 나왔다. 그래서 Close의 기본 집계를 평균으로 바꿨다. 이후 Company를 색상에 넣어 삼성전자와 SK하이닉스를 나눠봤고, 날짜는 연속형 일자로 설정해 실제 주가 흐름처럼 이어서 봤다.
연초 대비 수익률은 Quick Table 계산의 비율 차이를 사용했다. 기준을 이전 값이 아니라 첫 번째 값으로 바꾸면, 연초 대비 얼마나 상승했는지 볼 수 있었다.
또 Google Sheets의 GOOGLEFINANCE 함수로 주가 데이터를 가져오는 방법도 봤다.
=GOOGLEFINANCE("005930", "all", DATE(2016,1,1), TODAY())
삼성전자, SK하이닉스, NVIDIA처럼 시트를 나눠 만들고, Tableau에서 Google Drive 커넥터로 연결하면 파일을 매번 다시 다운로드하지 않아도 최신 데이터가 반영될 수 있었다. 이 부분은 나중에 개인 포트폴리오나 관심 기업 주가 대시보드로 확장하기 좋아 보였다.
11. 스타벅스 매장 데이터로 지도 대시보드를 만들었다
마지막 큰 실습은 스타벅스 매장 데이터였다. 데이터에는 매장명, 주소, 위도, 경도, 시도, 구군, 매장 코드 등이 있었고, 행 하나가 매장 하나를 의미했다. 데이터에는 9개 필드와 2148개 행이 있었고, 이를 기준으로 전국 매장 위치를 지도에 찍었다.
처음에는 위도와 경도가 문자열로 들어와 있어서 숫자 실수형으로 바꿨다. 그다음 위도와 경도를 측정값으로 변환하고, 지리적 역할을 각각 위도/경도로 지정했다. 경도와 위도를 더블 클릭하면 처음에는 평균 위치에 점 하나가 찍혔다. 전체 매장의 평균 위경도이기 때문이다.
매장별 위치를 보려면 매장명을 세부 정보에 넣어야 했다.
경도 + 위도
→ 평균 위치 점 하나
경도 + 위도 + 매장명 세부 정보
→ 매장별 위치 점
색상은 스타벅스 느낌이 나도록 초록색으로 바꾸고, 매장이 많이 몰린 지역에서도 구분되게 테두리는 흰색으로 설정했다.
그 다음에는 시도별 매장 수, 시군구별 매장 수를 리스트 형태로 만들었다. count를 사용하면 행 하나가 매장 하나이므로 지역별 매장 수를 볼 수 있었다. 다만 시군구별 정렬에서 한 번 헷갈릴 수 있는 점이 있었다. 중구, 강서구처럼 여러 시도에 같은 구 이름이 있을 수 있기 때문에 단순히 구군 기준으로만 정렬하면 서울/부산/대구의 같은 이름이 합쳐져 보일 수 있다. 이때는 앞의 시도까지 포함해서 중첩 기준으로 봐야 했다.
마지막에는 시도별 매장 수, 시군구별 매장 수, 전국 매장 지도를 하나의 대시보드에 배치했다. 시도나 시군구를 클릭하면 지도도 같이 필터링되게 만들었다. 특히 강남구를 선택하고 배경 지도를 거리로 바꿔 확대해보니 스타벅스가 대로변과 지하철역 근처에 많이 위치해 있다는 점을 눈으로 확인할 수 있었다. 단순한 매장 리스트보다 지도 위에 올리니 입지 특성이 훨씬 잘 보였다.
마무리
22일차는 Tableau를 통해 데이터를 시각적으로 표현하는 기본 흐름을 잡은 날이었다. Excel 파일을 연결하고, 측정값과 차원을 구분하고, 막대 차트와 라인 차트, 지도, 대시보드까지 이어졌다. 단순히 그래프를 만드는 것이 아니라, 어떤 필드를 행/열/색상/레이블/필터에 넣느냐에 따라 데이터 해석 방식이 달라졌다.
가장 크게 남은 건 세 가지였다. 첫째, 숫자는 측정값으로 집계되고 차원은 그 숫자를 나누는 기준이 된다. 둘째, 날짜는 불연속형과 연속형을 어떻게 쓰느냐에 따라 시즌성을 볼 수도 있고 실제 시간 흐름을 볼 수도 있다. 셋째, 색상과 레이블, 필터, 대시보드 액션은 보기 좋게 꾸미는 기능이 아니라 보는 사람이 데이터를 더 빠르게 이해하도록 돕는 장치였다.
이번에는 Tableau 기능을 하나씩 눌러보는 단계였지만, 중간중간 인구 데이터, 주가 데이터, 스타벅스 매장 데이터처럼 실제로 해석할 수 있는 데이터들이 들어가면서 조금 더 감이 왔다. 특히 지도와 대시보드 필터를 붙였을 때, 데이터를 단순히 보는 것과 탐색할 수 있게 만드는 것은 꽤 다르다는 생각이 들었다.
22일차는 Tableau에서 측정값과 차원, 색상과 필터, 날짜와 지도 기능을 연결해 데이터를 ‘보는 화면’이 아니라 ‘탐색하는 화면’으로 만드는 흐름을 익힌 날이었다.
'[SK플래닛] ASAC 빅데이터전문가 11기 > 학습기록' 카테고리의 다른 글
| [SK플래닛] ASAC 빅데이터전문가 11기 | 25일차 (1) | 2026.05.22 |
|---|---|
| [SK플래닛] ASAC 빅데이터전문가 11기 | 24일차 (0) | 2026.05.21 |
| [SK플래닛] ASAC 빅데이터전문가 11기 | 21일차 (0) | 2026.05.19 |
| [SK플래닛] ASAC 빅데이터전문가 11기 | 20일차 (0) | 2026.05.18 |
| [SK플래닛] ASAC 빅데이터전문가 11기 | 19일차 (0) | 2026.05.15 |
