VizQL Data Service from Tableau: Use Your Data, Your Way

DataDev Ambassador Kyle Massey explores the possibilities with VizQL Data Service from Tableau.
Process diagram of Tableau's VizQL engine on the left with a bar chart on the right

Kyle Massey, a two-time Tableau DataDev Ambassador and co-leader of the DataPride Tableau User Group, shares his experience with VizQL Data Service.

What is VizQL Data Service?

The VizQL Data Service was first demoed at Tableau Conference 2023 and allows users to make programmatic (API) requests for data from published data sources in Tableau. And boy oh boy, did it catch my eye right away! The ability to get exactly the data we want—without being tied to an existing View or Dashboard—is unlike anything that has been available in the Tableau ecosystem before.

The possibilities seem endless. This could be something as simple as collecting a subset of columns from a large dataset to burst via email in CSV format. You could also use filtering, sorting and ad-hoc aggregations and calculations to power a custom UI for your application with data you already trust from Tableau. If you can dream it, you really can achieve it.

How we got from VizQL to VizQL Data Service

Let’s start with some quick words on VizQL. If you aren’t familiar, VizQL is one of the fundamental capabilities that really makes Tableau, well Tableau. It’s constantly working in the background while we drag-and-drop our little green and blue pills in Tableau Desktop or while we view and explore content created by others on Tableau Server, Cloud and Public.

From Tableau.com: “Simply put, [VizQL] is the proprietary query language behind the Tableau product suite's visual rendering. It is essentially a translator of SQL queries that traditionally return numbers and tables into an effortless visual analysis.”

Many Tableau users and developers may never really think much about what VizQL is doing in the background, and honestly, that’s sort of the point. It’s one of the things that makes Tableau so easy to get started with. Along with the Desktop/Web Authoring interface, it allows users with little or no experience with SQL to create beautiful visualizations and find actionable insights right away.

So what if we could tap into the capabilities of VizQL outside of these “traditional” interactions via Desktop or viewing published content? I bet you’re getting it now… this is exactly what the VizQL Data Service enables! I’ll show some practical examples, and hopefully inspire you to think of ways you can make VizQL Data Service work for you.

Why should you be excited about VizQL Data Service?

Trust me, I realize the irony in telling you to be excited about something that, up until now, you probably never thought about. And honestly, if you’re a daily Desktop user or consumer of published Tableau content, this likely hasn’t been on your radar—but this is really big!

You could easily compare the rollout of VizQL Data Service to things like Parameter Actions or Map Layers in Tableau Desktop. There were sometimes ways to accomplish similar things before them, but they were often hacky, hard to reproduce and unsupported. Once these features became part of our tool belts, many people wondered how we ever got by without them.

The VizQL Data Service is most definitely a similar paradigm shift by introducing  “headless BI” capabilities on top of the data management and security we already know from Tableau. You don’t need to be a #DataDev to appreciate the power unlocked by VizQL Data Service either.

Think about all the times a client or stakeholder has said the dreaded line: “Can I just have the Excel behind this dashboard?” If you’re like most, this request instantly makes you shudder. The balancing act between encouraging users to be data-driven and just dumping raw data on them that they may not fully understand is challenging. Can we really trust all users to know how to aggregate/disaggregate properly? What about complex data sets with joins, relationships or blending?

VizQL Data Service enables us to create a different experience, one where we can ask for exactly the data we want (or want our users to have) outside of the traditional Tableau experience.

For me though, the most exciting walls that VizQL Data Service knocks down involve creating totally custom experiences on the web or within other applications. You may know that Tableau has offered robust options for putting your content inside other experiences via the Embedding API for a long time. While this solution allows you to create UI/UX experiences that would never be possible out of the box, you’re still bound to a particular view or dashboard and the data it contains.

In the past, if you wanted to create an entirely bespoke experience via other JavaScript charting libraries or grab only the data from your viz, you might have to create a custom view containing the data points at the correct level of aggregation, embed it and then hide it from the user. This is clunky and awkward, with a bunch of unnecessary overhead. VizQL Data Service provides us an API-based solution to ask for exactly what we need to create exactly what we want!

VizQL Data Service in action

If you’re having trouble imagining exactly what you might want to do with the VizQL Data Service, here are a couple of examples of what you could do. VizQL Data Service is still in development, so I won’t spend too much time on the ins-and-outs, as they’re likely to change before it’s generally available. I will post the code I used to Github for illustrative purposes, but your experience may be different.

1. Create a controlled way for users to download data they want

Despite our best wishes and efforts, there will always be people who want to explore the raw data behind our vizzes. We may not love it, but it’s so ingrained in many company cultures, that it’s unlikely to go away any time soon.

Luckily, VizQL Data Service provides an easy way to supply users with the data they want in a controlled fashion while ensuring they’re set up for success. This might mean only providing them data they should have access to, creating a simple UI to allow them to build a request for data, or automatically bursting data to users that is customized for them at the level of aggregation that makes sense for them and takes out any guesswork.

The first example in the video shows a screen from an application using VizQL Data Service to create a tabular view of data for a user based on their selections, along with the option to download what they see.

2. Build a product gallery from your existing data

If you’re looking to create totally unique experiences or workflows for your users using the data you already have on Tableau, VizQL Data Service makes it incredibly easy to bring it into another application, such as a web portal. Of course, there’s nothing wrong with the out-of-the-box Tableau experience, but it can be difficult to make it match perfectly within your application. Or maybe you don’t want your users to even know this data is coming from Tableau.

You are truly only limited by your imagination when it comes to VizQL Data Service here. You can even combine the VizQL Data Service with other APIs like the REST API or Hyper API to create a fully realized storefront or CMS app, using only Tableau and your preferred framework.

The second example in the video shows you a hypothetical application using VizQL Data Service to get data and use it natively to build your UI/UX.

Why I’m excited about VizQL Data Service

Headless BI might not be the ‘sexiest’ topic ever, but this might be one of the biggest new features to hit the Tableau ecosystem in quite some time. It won’t change most users’ day-to-day if they spend most of their time in Desktop or perusing published Views and Dashboards, but power users, software developers and customization enthusiasts like me have been eagerly awaiting a solution like this for ages. We can now integrate the data we know and trust directly into just about any workflow or application we can dream up—without additional overhead or data replication.

Just as the recent rollout of Viz Extensions made us rethink what can be achieved in the traditional viz experience with Tableau, the VizQL Data Service eliminates many of the hurdles that made getting unhindered access to our data challenging or time consuming.

What else can you do with VizQL Data Service?

If you can think of any use case where you’d like access to your data that’s already in Tableau for basically any purpose—VizQL Data Service is a potential solution for you.

Do you have a data scientist who’d like to use Python and Pandas or R to query and augment your existing data, without the overhead of a TabPy server? Perhaps you have executive stakeholders who prefer a CSV/XLSX in their inbox daily, but who shouldn’t be burdened (or trusted) with the full dataset. Or maybe you want to use the same data your daily Tableau users are accustomed to, to build an entirely new application.

You can join the Dev Preview to try it out for yourself!

So what else can you do with VizQL Data Service? You tell me! Seriously—I’ve started a thread in the Tableau Community Forums. If you couldn’t tell, I am already a VizQL Data Service enthusiast, and I can’t wait to see what the #DataFam comes up with!