대시보드 만들기

지도를 움직이면 필터가 먹지 않는다

Tableau Public 에서 지도를 한 번 확대하면, 그 뒤의 필터·파라미터 동작이 지도에 반영되지 않는다. 서울 벚꽃길 대시보드를 만들다 만난 문제와 우회법.

서울 벚꽃길 대시보드를 Tableau Public 으로 만들다가 벽을 하나 만났습니다. 만드는 과정 자체는 벚꽃길 지도에 선 그리기에 정리해 두었고, 여기서는 그 뒤에 걸린 문제 하나만 따로 적어 둡니다.

세 칸 도식. 처음에는 필터가 지도에 반영되지만, 지도를 확대한 뒤에는 다른 시트만 갱신되고 지도는 멈춘다. 우회법은 지도 보기를 고정하고 버튼을 눌러 값을 넘기는 것이다

증상

지도를 한 번이라도 확대하거나 끌어서 움직이면, 그 다음부터 필터나 파라미터를 바꿔도 지도가 다시 그려지지 않습니다.

  • 처음 열었을 때는 필터가 정상으로 먹습니다.
  • 지도를 확대하거나 이동합니다.
  • 다시 필터를 바꿉니다 → 다른 시트는 갱신되는데 지도만 그대로입니다.

데이터가 안 바뀐 것이 아니라, 지도의 보기 영역이 사용자가 맞춰 놓은 자리에 붙들려 있는 것입니다. 만드는 사람 입장에서는 “필터가 고장났다”로 보이지만, 정확히는 지도가 사용자의 조작을 우선으로 기억하고 있는 상태입니다.

먼저 시도한 것 — Public 에서는 막힙니다

처음에는 리스너로 필터·파라미터 값을 받아서 지도를 직접 다시 그리게 하려 했습니다. Tableau Public 에서는 잘 되지 않았습니다.

사내 서버(on-premise)에서 작업할 때는 같은 방식이 됐던 기억이 있어서 한참 헤맸는데, 결국 Public 과 서버 환경의 차이로 정리했습니다. Public 은 외부에서 대시보드 내부 상태에 손대는 통로가 좁습니다. 같은 파일이라도 어디에 올렸느냐에 따라 되는 것이 갈립니다 — 이걸 모르면 자기 실수인 줄 알고 시간을 씁니다.

우회한 방법

정면으로 뚫는 대신 방향을 바꿨습니다.

  1. 지도의 보기 영역을 고정합니다. 확대·이동을 아예 막아 두면 어긋날 일이 없습니다. 자유롭게 움직이는 지도를 포기하는 대신 필터를 살리는 쪽입니다.
  2. 값은 수동으로 넘깁니다. 사용자가 도로명을 고르면, 그 선택을 대시보드가 알아서 전달하게 두지 않고 버튼을 한 번 더 누르게 해서 그 시점의 값을 가져오도록 했습니다.
  3. 받은 값으로 웹 페이지 개체에 필요한 정보를 띄웁니다.

클릭이 한 번 늘어난 것은 분명 손해입니다. 다만 “필터를 눌렀는데 아무 일도 안 일어나는” 것보다는 “버튼을 눌러야 갱신되는” 쪽이 낫다고 판단했습니다. 앞은 고장으로 보이고, 뒤는 규칙으로 보입니다.

남은 생각

Tableau 와 웹 페이지를 붙여 보니 배우는 것이 있었습니다. 대시보드 안에서 다 풀려고 하면 막히는 지점이, 밖으로 한 칸 나가면 쉽게 풀리는 경우가 있습니다. 대신 그만큼 사용자에게 설명해야 할 것이 늘어납니다. 버튼 하나를 추가한다는 건 “이걸 눌러야 한다”고 알려 줘야 한다는 뜻이니까요.

어느 쪽이 나은지는 만드는 사람이 아니라 쓰는 사람의 사정으로 정해야 할 것 같습니다.

DASHBOARD

서울 벚꽃길 — 도로명을 고르고 안내 보기를 누르면 됩니다

대시보드는 Tableau Public 에서 불러옵니다. 누르시면 그때 public.tableau.com 에 연결되고, 그쪽에서 쿠키를 쓸 수 있습니다. 누르지 않으면 이 사이트는 외부로 아무것도 보내지 않습니다.

바로 보시려면 Tableau Public 에서 열기.