서울 벚꽃길 대시보드를 Tableau Public 으로 만들다가 벽을 하나 만났습니다. 만드는 과정 자체는 벚꽃길 지도에 선 그리기에 정리해 두었고, 여기서는 그 뒤에 걸린 문제 하나만 따로 적어 둡니다.
증상
지도를 한 번이라도 확대하거나 끌어서 움직이면, 그 다음부터 필터나 파라미터를 바꿔도 지도가 다시 그려지지 않습니다.
- 처음 열었을 때는 필터가 정상으로 먹습니다.
- 지도를 확대하거나 이동합니다.
- 다시 필터를 바꿉니다 → 다른 시트는 갱신되는데 지도만 그대로입니다.
데이터가 안 바뀐 것이 아니라, 지도의 보기 영역이 사용자가 맞춰 놓은 자리에 붙들려 있는 것입니다. 만드는 사람 입장에서는 “필터가 고장났다”로 보이지만, 정확히는 지도가 사용자의 조작을 우선으로 기억하고 있는 상태입니다.
먼저 시도한 것 — Public 에서는 막힙니다
처음에는 리스너로 필터·파라미터 값을 받아서 지도를 직접 다시 그리게 하려 했습니다. Tableau Public 에서는 잘 되지 않았습니다.
사내 서버(on-premise)에서 작업할 때는 같은 방식이 됐던 기억이 있어서 한참 헤맸는데, 결국 Public 과 서버 환경의 차이로 정리했습니다. Public 은 외부에서 대시보드 내부 상태에 손대는 통로가 좁습니다. 같은 파일이라도 어디에 올렸느냐에 따라 되는 것이 갈립니다 — 이걸 모르면 자기 실수인 줄 알고 시간을 씁니다.
우회한 방법
정면으로 뚫는 대신 방향을 바꿨습니다.
- 지도의 보기 영역을 고정합니다. 확대·이동을 아예 막아 두면 어긋날 일이 없습니다. 자유롭게 움직이는 지도를 포기하는 대신 필터를 살리는 쪽입니다.
- 값은 수동으로 넘깁니다. 사용자가 도로명을 고르면, 그 선택을 대시보드가 알아서 전달하게 두지 않고 버튼을 한 번 더 누르게 해서 그 시점의 값을 가져오도록 했습니다.
- 받은 값으로 웹 페이지 개체에 필요한 정보를 띄웁니다.
클릭이 한 번 늘어난 것은 분명 손해입니다. 다만 “필터를 눌렀는데 아무 일도 안 일어나는” 것보다는 “버튼을 눌러야 갱신되는” 쪽이 낫다고 판단했습니다. 앞은 고장으로 보이고, 뒤는 규칙으로 보입니다.
남은 생각
Tableau 와 웹 페이지를 붙여 보니 배우는 것이 있었습니다. 대시보드 안에서 다 풀려고 하면 막히는 지점이, 밖으로 한 칸 나가면 쉽게 풀리는 경우가 있습니다. 대신 그만큼 사용자에게 설명해야 할 것이 늘어납니다. 버튼 하나를 추가한다는 건 “이걸 눌러야 한다”고 알려 줘야 한다는 뜻이니까요.
어느 쪽이 나은지는 만드는 사람이 아니라 쓰는 사람의 사정으로 정해야 할 것 같습니다.