For those who learn better by watching instead of reading instructions

Image for post
Image for post
Come one, come all (Photo by Barry Weatherall on Unsplash)

As awkward as it might sound to write a blog post about how you can avoid reading more blog posts, I want to diverse my bonds here and let anyone who values these tutorials know that we are now producing Youtube tutorial videos at a faster rate than we are writing them. Wouldn’t want anyone to miss out!

In 2020 I joined the first cohort of Tableau DataDev Ambassadors, so you can expect even more educational content from me moving forward.

The Youtube channel (Devyx) provides tutorials relevant to Tableau APIs (REST API, Metadata API, etc.) and Python.

My preference is to watch tutorial videos rather than read them. I’m also finding that it is often more efficient to condense content into a ten minute video than it is to write a tutorial. That’s good — it means there will be more content, faster! …


How to download your Tableau view data without losing the original table structure

Image for post
Image for post
Sometimes you just need the rows and columns. (Photo by Nick Hillier on Unsplash)

In another article we covered how you can query your Tableau view data like a boss, and I received some feedback from one person that they wanted to tumble deeper down the rabbit hole.

That brings us to this article, where we will demonstrate how you can download view data for a table (crosstab) in Tableau, and reconstruct the shape of that data as it appeared in Tableau.

This tutorial walks through using the Python tableau-api-lib package and is part of a series on how to tap Tableau Server like a keg, giving you control over Tableau Server’s REST API.

These tutorials assume you have Python 3 installed already. …

Keeping your analytics on brand with custom email subscriptions

Image for post
Image for post
Photo by Kira auf der Heide on Unsplash

I recently overheard a professional speaker from the hospitality industry having a conversation, and they mentioned something that piqued my interest. They were making the case that an inferior product, when paired with excellent service, will often make a customer happier than an objectively superior product with worse service.

If that’s true, it means time spent on improving your service can be more valuable than time spent on improving your product.

One way service manifests itself is through presentation. If you were competing on a cooking show, you’d be packing your knives and going home if your food was great but your presentation wasn’t on point. …


Making your data even more delicious with joins and Pandas

Image for post
Image for post
Photo by Bannon Morrissy on Unsplash

Between data blends, joins, and wrestling with the resulting levels of detail in Tableau, managing relationships between data can be tricky.

Stepping into your shiny new Python shoes, the world opens up a bit. Instead of trying to squeeze everything into a single data source to rule them all, you can choose your battles.

In our previous articles, we already saw:

  1. Pandas groupby expressions and basic visualizations
  2. Calculations and coloring sales by profitability
  3. Data exploration with advanced visuals

Setting the stage

In this article, we’ll focus on one of the most important aspects of working with data in any ecosystem: joins.

Lucky for us, the Tableau data we have been playing around with comes with batteries included! Within the context of the fictitious store we have been analyzing, we have a bit of data detailing various items that were returned. …


Translating familiar data exploration from Tableau to Python

One of Tableau’s biggest advantages is how it lets you swim around in your data. You don’t always need a fine-tuned dashboard to find meaningful insights, so even someone with quite a basic understanding of Tableau can make a significant impact.

For this article, we’ll play into that theme of not needing to know everything about a tool in order to build useful things with it. In our previous article, we touched on how you can create custom calculations and color visuals in Python to arrive at visuals that look quite similar to what we build in Tableau.

Today, let’s expand on what we’ve learned so far. Let’s see how we can take what we’ve seen up to this point and apply that to a common scenario: data exploration. …


Getting a feel for calculations and color gradients

Image for post
Image for post
Photo by Joyce McCown on Unsplash

And we’re back! Let’s pick up where we left off in the first article of this series and use the visual we built there as a starting point.

Before we dive in, let’s set the stage for what we’ll accomplish here:

  1. Build upon what we know about creating calculated fields in Tableau and show how that translates to Python
  2. Demonstrate how we can use color to add depth to the insights our visuals provide

In Tableau, you can often get your brain all twisted around a tricky situation that requires you to produce calculations various levels of aggregation. Some of you might have Googled your way through this to the point that if you type ‘level’ into the search bar, it autocompletes to ‘level of detail tableau’ (I feel you). …

Exploring Data with Python

Tableau got you hooked on data, but why stop there?

Image for post
Image for post
Meet your new best friend for data analysis (Photo by Allie on Unsplash)

Like many other people, my first steps into the world of data were taken wearing the shoes of a Tableau developer. As the Tableau skills increased, so did my exposure to other things like SQL and Python.

Over time, learning more about these adjacent tools enhanced my day to day capabilities. As I learned more SQL, I better understood how to optimally feed data into Tableau. That enabled me to take more ownership of the wider data flow, beyond Tableau itself.

Python was a natural next step. It offered flexible control over the Tableau ecosystem via the Tableau Server REST API, and the syntax was straightforward. …


Cleanly remove content owners using Python and the REST API

Image for post
Image for post
Make it a clean break with a few REST API calls (Photo by Kelly Sikkema on Unsplash)

Breakups are hard. Tableau users come and go, and lucky for us we have some tools at our fingertips that can help us make a clean break to avoid the unpleasant nuances of dealing with orphaned content.

This article explores one approach to making the removal of Tableau Server users a painless process. …


A series focused on improving your team’s productivity using interactive visuals to track data lineage

Image for post
Image for post
Photo by Markus Spiske on Unsplash

Our first three milestones in this series produced a Tableau Hyper extract containing data lineage information from the Metadata API, user interaction information from Tableau Server’s internal PostgreSQL database. The fourth milestone (our previous article) built an interactive Tableau dashboard based on that extract.

In this article, we loop back to the second milestone, where we pulled data lineage information from the Metadata API. Here we will revisit that process and expand the scope to include data lineage information across all sites available on Tableau Server. Originally, the process only pulled data for the active site we authenticated into.

If this is your first time tuning into this series, here are the previous milestones for your…


A series focused on improving your team’s productivity using interactive visuals to track data lineage

Image for post
Image for post
Gain a better understanding of your Tableau environment (Photo by Jordan McDonald on Unsplash)

In this article, we pick up where we left off in the previous impact analysis milestones to build interactive visuals based on the data our previous efforts generated.

As a refresher, the previous milestones combined data from Tableau’s Metadata API and the internal PostgreSQL repository database, turned that data into a Tableau Hyper extract, and published that data to Tableau Server.

If this is your first time tuning into this series, here are the previous milestones for your convenience:

  1. Building Tableau Server impact analysis reports: why and how
  2. Tableau Server impact analysis reports: accessing metadata (milestone 1)
  3. Tableau Server impact analysis reports: combine metadata with PostgreSQL (milestone…


Elliott Stam

Data scientist and author. Sometimes seen falling down mountains with a snowboard strapped to my feet.

Get the Medium app

A button that says 'Download on the App Store', and if clicked it will lead you to the iOS App store
A button that says 'Get it on, Google Play', and if clicked it will lead you to the Google Play store