일본 여행에 대한 의사결정이 필요했다.
처음 정한 두 개의 조건은 다음과 같았다.
- 12/8 ~ 12/11 3박 4일로 일본 여행을 간다.
- 행선지는 후쿠오카, 오사카+교토, 도쿄 중 한 곳으로 한다
그리고 최종 목표는 가장 적절한 비행기표를 골라서 예매하는 것이었다.
결정은 결국 만장일치로 하는 것이었지만, 당시 상대적으로 시간이 많았던, 그리고 일본 여행 경험이 훨씬 많았던 내가 스스로 맡은 역할은 여자친구가 늦은 퇴근을 하고 잠깐의 여유가 있는 그 순간 가장 빠르고 효과적으로 의사결정을 할 수 있는 자료를 제공하는 것이었다.
구글스프레드 시트를 사용해 이 자료를 제작한 뒤 이 링크를 공유해 빠른 논의를 진행할 수 있겠다 싶었다.
최초 로데이터는 인터파크 항공 검색을 통해 수기로 수집했다. 상술한 '처음 정한 두 개의 기준'을 디폴트로 놓고, 너무 늦지 않은 일본 도착 시간(저녁 전엔 도착하자)과 너무 이르지 않은 일본 출발 시간(점심 전엔 출발하지 말자)에 대한 대략적인 기준을 잡고, 해당 기준을 만족하는 항공편을 나리타, 간사이, 후쿠오카 공항별로 정리했다.
맨 처음 정리한 표는 다음과 같다. 출도착시간 조합이 비슷한 편들 중에서는 가장 저렴한 편만 골랐고, 그렇게 공항별로 6~8개씩 비용과 항공사, 출도착시간을 리스트업 한 것이다.
참고로 결제 조건에 따라 가격이 다르기 때문에 결제가 두 개 카드 (삼성, 현대)에 해당하는 가격 중 더 낮은 것을 넣었고, 메모로 해당하는 결제조건을 달아두었다.
하지만 이 희여멀건한 배경에 까만 글자만 박혀있는 표를 보고 '가장 빠르고 효과적으로 의사결정'이 가능할 것 같지 않았다.
가장 적절한 비행기표를 고르는 것이 최종목표이지만, 비행기표를 고르는 프로세스를 다시 세분화해 보면 필시
1) 먼저 여행지를 한 곳으로 특정한 뒤
2) 그 여행지에 가는 비행기표 중 하나를 고르는
순서가 되어야만 할 터였다.
그래서 일단 여행지 별로 다른 색깔을 부여했다.
(행 전체를 칠하는 방법도 시도해 보았으나, 수치에 대한 가독성을 너무 해쳐서 왼쪽 열만 채색했다.)
그리고 상단에 여행지 별 평균 수치 요약표를 추가했는데, 예상대로 비행기값은 도쿄 > 오사카 >후쿠오카 순이었다.
당연한 일이지만 하단 상세표와 상단 요약표에서 같은 여행지는 같은 색으로 칠해서 어떤 파트에 대한 평균치인지 한눈에 보이도록 했다.
내겐 이것도 좀 부족했다. 평균값을 구해놓고 나니 경향성도 보고 싶어 졌다. 경향성에는 그림이 필요하다. 하지만 표 바깥에 그래프를 별도로 구성하면 읽는 자가 그래프 내용을 한번 더 해석해야 하고, 그래프 정돈을 위한 추가작업이 생기기 때문에 최대한 표 안에서 끝내고 싶었다.
엑셀에서는 이럴 때 조건부 서식 > 데이터 막대 기능으로 손쉽게 셀 안에 막대그래프를 그릴 수 있으나 구글스프레드시트의 조건부서식엔 그러한 기능이 없다. 그래서 여태까지는 이런 표현법은 구글스프레드시트에선 포기했었다.
그런데 이번엔 왠지 한번 더 시도해보고 싶었다. 그리고 마침내 구글스프레드시트에서도 셀 내 그래프 넣는 방법을 알아냈다. 바로 SPARKLINE 함수를 쓰면 된다. 자세한 설명은 아래 참고. 개인적으로 이번 작업의 가장 큰 수확은 SPARKLINE 함수를 알아낸 것이라고 생각한다.
https://support.google.com/docs/answer/3093289?hl=ko
SPARKLINE - Google Docs 편집기 고객센터
도움이 되었나요? 어떻게 하면 개선할 수 있을까요? 예아니요
support.google.com
그래서 비행기값에 대해 아래와 같이 차트 열을 추가했다. 도쿄 > 오사카 >후쿠오카의 경향성이 더욱 뚜렷이 보인다.
사용한 함수는 E8 셀 기준으로 아래와 같다.
=SPARKLINE(D8-200000,{"charttype","bar";"max",max(D$8:D)-200000; "color1", "orange"})
참고로 엑셀 데이터막대와 마찬가지로 이 함수는 범위 내 가장 큰 값을 한 칸 전체 길이로 놓고, 각 값의 상대적인 크기를 길이로 표시해 주는 원리다. 따라서 가장 큰 값이 47.9만 원인 이 범위에서 기껏해야 몇천 원~몇만 원 수준인 가격차이는 상당히 미미하게만 보인다.
하지만 이 차트의 목적을 생각해 보면 '정확히 얼마인지 보여주는 것' 보다 '상대적으로 어디가 싸고 어디가 비싼지'를 보여주는 게 더 중요했다. 정확히 얼마인지는 바로 옆에 숫자칸을 보면 된다. 그래서 가격 차이를 보다 극적으로 보여주기 위해 '비행기값 1인' 열에서 20만을 뺀 값을 기준으로 차트를 그리도록 함수를 작성했다. (그러면 최솟값인 31.6만과 최댓값인 47.9만은 결과적으로 11.6만과 27.9만의 차이로 그려지기 때문에 둘 사이 차이가 크다는 느낌이 한눈에 보인다)
여기까지 했으나 아직 2%가 부족했다. 1인 비행기값 수치, 2인 비행기값 수치, 여행지별 평균 비행기값, 비행기값 차트까지 비행기표값에 대한 거의 모든 정보를 제공했음에도 '가장 빠르고 효과적으로 의사결정'이 가능할 것 같지 않았다. 무엇을 놓친 걸까?
지표가 부족했던 것이다. 사실 '여행지 결정'은 단순 비행기값이라는 지표만 가지고 할 수 있는 의사결정이 아니었다. 그게 가능했으면 애초에 맨 처음 표에서 가장 싼 30만 4300원짜리 후쿠오카표를 골랐을 것이다.
시선을 표의 오른쪽으로 돌려보자. 우리는 사실 '시간'이라는 가치에 대한 고려를 처음부터 하고 있었다. 한국 출발, 일본 도착, 일본 출발, 한국 도착이라는 시간 지표를 써놓음으로써 무의식적으로 고려하고 있던 가치가 무엇일까? 그건 바로 여행지에 체류할 수 있는 시간이라는 결론이 나왔다.
이 지표는 일본출발 시간에서 일본도착 시간을 빼는 방식으로 간단히 계산이 가능하다.
그리고 이 지표에 대해서도 SPARKLINE 함수를 사용했다.
일본 체류 시간 K8셀 함수:
=(($I$6+I8)-($G$6+H8))*24
체류시간 차트 L8셀 함수:
=SPARKLINE(K8-48,{"charttype","bar";"max",max(K:K)-48; "color1", "red"})
(체류시간 차트 또한 최댓값이 80.9인 반면 그 차이는 몇 시간 수준이라서, 차이를 선명하게 보여주기 위해 계산된 체류 시간에서 48을 뺀 값을 기준으로 차트를 그리도록 작성했다)
이제 비행기값과 체류시간을 종합적으로 고려해서 가장 마음에 차는 옵션을 선택하기만 하면 된다.
근데 여기까지 하고 생각해 보니, 비행기값과 체류시간을 종합적으로 고려하는 합리적인 사고 과정은 결국 한 개의 계산식으로 귀결된다. 체류 시간당 비행기값이다.
체류 시간당 비용 = 비행기값 1인 / 일본 체류 시간
위의 모든 과정을 거쳐 정리된 비행기값을 체류 시간으로 나누면, 여행지에 한 시간 머물기 위해 지불해야 하는 비행기값이 얼마인지 알 수 있다. 개인적으로 이번 작업의 두 번째 큰 수확은 여행지를 고르는 과정에서 '체류 시간당 비용'이라는 개념을 생각해 냈다는 것이다. 이건 앞으로 다른 여행을 결정할 때도 종종 사용할 것 같다.
최종 자료는 아래와 같이 완성되었다.
실제로 이 자료를 들여다보며 여행지를 오사카(간사이)로 특정하는 데에는 채 15분도 걸리지 않았다.
구글스프레드시트를 직접 보고 싶은 경우 아래 링크 참고
일본 여행 의사결정 시각화
일본여행 12/8~12/11 3박 4일 기준 요약표 여행지,평균 왕복 비행기값 (1인),1시간 체류 당 비행기값 도쿄,440,017,6,259 오사카,394,688,5,700 후쿠오카,332,014,4,519 2022. 12. 8,2022. 12. 11 여행지,비행기값 2인 총
docs.google.com
(오사카로 정한 뒤 날짜 조건에 변동이 생겨 여러 날짜 선택지에 대해 똑같은 작업을 한 번 더 했던 시트도 볼 수 있다)