#WOW2026 | Week 34 | Mark Clustering

Introduction

This week is all about maps. Tableau has always been strong with maps, but this time we’ll push it further using Dynamic Spatial Parameters, added back in 2025.2, to build something a little cooler.

It’s a technique that’ll come in handy for real-world work too, so have fun with it and give it a go!

 
 
 
 

Requirements

  • Dashboard size: 1366 × 768
  • Number of sheets: 1
  • Plot each Castle (Qid) as a point on the map
  • Cluster the marks according to the Zoom Level parameter
  • Show a different tooltip for single-location marks and for clustered marks
  • Your clustering doesn’t have to match mine exactly
  • Colors and fonts are up to you

Note: This version uses a Zoom Level parameter to drive the clustering, so it runs smoothly in any environment. If you’d like to experience the original idea — where the clustering responds as you zoom the map in and out — please build it in Tableau 2026.1. On 2026.2 it freezes up.

 

Dataset

For this challenge, we will use the Castle dataset from the Castle map.

 

Attribute

When you publish your solution on Tableau Public make sure to take the time and include a link to the original inspiration.  Also include the hashtag #WOW2026 in your description to make it searchable!

Share

After you finish your workout, share on X and/or LinkedIn using the hashtag #WOW2026 #Tableau and tag @WorkoutWednsday. Also, come join us in the Workout Wednesday channel on the Tableau Community Slack!

 
 

Solution

Interactive

#WOW2026 W34 Mark ClusteringCastles of the World
var divElement = document.getElementById('viz1787731521266'); var vizElement = divElement.getElementsByTagName('object')[0]; if ( divElement.offsetWidth > 800 ) { vizElement.style.width='1366px';vizElement.style.height='795px';} else if ( divElement.offsetWidth > 500 ) { vizElement.style.width='1366px';vizElement.style.height='795px';} else { vizElement.style.width='100%';vizElement.style.height='727px';} var scriptElement = document.createElement('script'); scriptElement.src = 'https://public.tableau.com/javascripts/api/viz_v1.js'; vizElement.parentNode.insertBefore(scriptElement, vizElement);