Tableau Forums Digest #12



Ideas Categorized by Johan Sivertsen

I’m a bit under the weather this week so this is late. Johan has done such a great job of categorizing the Ideas section I am devoting this entire Digest to him and his work. [Note: I also want to let everyone know I’m changing this blog to a twice a month schedule. This should allow me to be a bit more ‘selective’ in what I include, limiting it to only the real gems.]

Here then is an index of Johan’s great work:

Categorization of ideas

Below you find various categories of similar or related ideas:

View data

Copy dashboards across workbooks

Save precious dashboard space

Text tables

Dynamic header aliases

Group dimensions and measures

Community forums

User Interface

Drill-up and drill-down


Table calculations

Export data and images




Johan writes:

I hope such collections of ideas become an integrated part of the idea section:

My Favorites Lists

Filter ideas by categories

Organize tags for better overview and filtering of ideas

To Cognize is to Categorize: Cognition is Categorization


Johan, thanks again for doing this great work! I’m going to spend this ‘sick day’ going through your lists and vote up (and down) a considerable number of these ideas. I hope your lists will prompt others to do the same.


Tableau Forums Digest #11

Log Scales

[Cartoon suggested by Richard. As usual, drawn by XKCD .]

Busy week, lots of good Q&A at all different levels. Here you go…

Russell Christopher [TE]

…spent some considerable time writing a few detailed answers this week. He explains the difference between “compute” and “load” relating to Server performance. He also showed the proper format and syntax for passing date filter parameters. We’re all happy you took the time out from talking , to do a little writing Russell. 🙂

Robin Kennedy [TP]

… was very busy on the forums this week. He showed how to use multiple filters and the INDEX() function to return the latest 50 records for a particular date. [Make sure you follow the link he posted to an Information Lab video explaining this technique.] He shows how to use TOTAL() and table calcs to avoid averaging an average, and compute the results along different dimensions. He gives a good explanation of Local and Global filters and work-arounds for different situations, including links to the appropriate KB articles. [This is a good one for Newcomers.]

Richard Leeke [ZM]

Last week’s unanswered question attracted considerable attention, and is one of this week’s longer discussions about table calculations, domain padding & completion & densification. I’ll drop you into the conversation at Richards post, but make sure to read to the end of the thread (4 pages). There is lots of good information (and suggestions for those who have the power to change things). Richard also posted the consensus best solution to the 5 minute event count problem. He also talks about the difference between LOOKUP() and PREVIOUS_VALUE() regarding an epoch date question. [Update: Here’s Richard’s analysis of the three approaches to the rolling COUNTD() problem.]

Joshua Milligan

… showed how to label a bar chart using reference line labels (without the lines), nice way to get what you want where you want it. [Another good Newcomer’s question.] He also provided a very concise explanation of how and why you might want to apply a filter after data is returned from the data source [hint: so your percentage calcs don’t get messed up].

Jonathan Drummey [ZM]

… participated heavily this week, as usual, but it seemed to me his posts were much more detailed and voluminous. [Hmmmm, I wonder if he’s writing a book? I certainly hope so! Just let me know where to buy advanced copies Jonathan.] Anyway, here’s his description of Tableau’s pipeline [order of execution] list. Here’s one of his contribution to the unanswered question conversation. And most importantly he took the time to post the Idea to have control over domain padding. [Vote early, vote often for this one.] Oh yeah, he also provided this side-by-side Gantt bar chart.

Johan Sivertsen

[EDIT: I’m totally rewriting this with Johan’s help.]

Johan has been doing what can only be described as a “manual spider” of the Ideas’ section. He is grouping/binning Ideas based on similarities. So far he’s produced these lists:

I only mention how tedious this list-collection must be, to highlight how much we should all appreciate Johan’s effort in this area. [Dang dude, hope those looooong Fareo Island nights continue for just a bit longer, so you can get the Ideas section totally wiped into shape!]

Great work Johan, really.

Joe Mako [ZM]

First I need to thank Joe for generously allowing me to watch and ask question while he worked through answering one of the forum questions. I learned a lot, it was a great experience; one which I highly recommend. Joe seems to really enjoy sharing his knowledge, so don’t be shy, contact him and watch him work his Tableau magic.

Anyway, Joe was a bit more active this week. Here’s the one I watched him work through. Here’s an example of using table calculations to change when a filter gets applied. If you’ve ever needed to do a moving average of a percent of total there you go.

Dimitri Blyumin

… has been back from holiday for a bit now, but he’s just now getting his head back into the forum. He warmed up with this Top 5/Bottom 5 question. Welcome back Dimitri!

Craig Bloodworth [ZM]

… has this week’s Unanswered Question about inconsistencies in how Tableau Server handles connections to networked data files.

Alex Kerin

… shows the benefits of using the LOWER() function another good Newcomer tip.

That’s it for this week, time for bed. I’ll post it now and proof it tomorrow, so forgive any error. [Update: I think I caught all the typos and bad grammar, well as much as I am aware of what bad grammar is.]

Hope you enjoy these posts, have a good week on the forums.


Tableau Forums Digest #10


Unanswered Question

Thought I’d start with this week’s unanswered question: How to do a COUNTD() of a rolling window. [Edited per Alex’s comment below.] Joshua, Jonathan & Alex all put in a bit of time on this one, so there are ideas to build on, but nobody has gotten there yet. Want to give it a try?

A Teaching Moment

If you’re struggling with table calculations, Alex gives an in-depth explanation of partitioning. [For context and the correct answer scroll up to his other posts.] If you want to dig deeper into this topic, Jonathan’s Drawing With Numbers blog on partitioning by table calculations is the best place to start. And as long as I’m pointing to Jonathan’s blog, you’ll definitely want to check out the new wiki he posted. It has a treasure trove of useful stuff; careful though, you might get lost in there for days!

Ranking Ties With Suffix

This thread caught my attention because it was something I’d worked on before, and forgotten about. Adding the suffix was an interesting twist, but when I couldn’t get the double-t problem worked out, Alex had to give me an assist. I know it looks intimidating at first glance, but when you break it down it really is fairly straight forward. Taking this apart and figuring out what’s going on would be a great way to start learning the LOOKUP() & PREVIOUS_VALUE() functions. An even better resource is the TDT session, and sample workbook, Joe did on table calculations — especially that workbook, I use it all the time.

The Conversation

This week’s conversation centered on Excel vs. Tableau functions, with several long posts offering both explanations and suggestions. What are your thoughts?

New Search Available!

Here’s the link to the new search tool Dustin recently posted. It works much, much better than the standard search. He is concerned that some things might not be perfect, so he hasn’t rolled it out forum wide yet. If you do find problems, drop Dustin a note. I’ve been using it to put this digest together and I haven’t had any troubles finding what I’m looking for — at all! Nice job Dustin!

Odds & Ends

Aggregating twice had several interesting posts …. If you’re interested in breaking down strings here’s a good example of how MID() works …. if you’re not getting the ROUND() results you expect, here’s a short explanation of different options and results.

That will do it for this week. Hope this is helpful.


Tableau Forums Digest #9


Playoff Weekend

(American) football took up way too much of my time this weekend, so this week’s Digest is less commentary, and more of the good stuff: people & links. [One note, I’m going to start using some abbreviations after names to help newcomers identify who’s who on the forums. TE=Tableau Employee, TP=Tableau Partner, ZM=Zen Master.]

Before hitting the road Alex Kerin answered a question on bucketing data dynamically, and one using an advanced table calculation to set a sort order.

Daniel Hom [TE] explains how to share a Tableau Public viz in WordPress.

Joe Mako [ZM] explains a modification to a VBA script he wrote. He also explains how to use nested table calculations to get grand totals.

Jonathan Drummey [ZM] describes a bit about domain padding and the LOOKUP() function; as well as a sort problem. And finally a question on how to deal with overlapping text.

Joshua Milligan [TP] took on the Korean character question.[ I’m curious to hear how that turns out.] This seems to have been a LOOKUP() week; here Joshua uses it to find a previous value.

Nathan Krisanski came up with an interesting way to hide zero values. [Note Joshua’s solution and comments as well.] Nathan crafted a date filter using a parameter and a custom calculation.

Richard Leeke [ZM] he worked out a solution to a map problem I’d been working on. [I haven’t had time to study it yet, but I’m sure it will be interesting to figure out how he solved it.]

Robert Morton [TE] describes how to semi-automate the creation of groups by duplicating a data source and then blending it back.

Robin Kennedy [TP] was very active this week [even though he changed from being a robot]. He posted a number formatting trick I always forget about [the semi-colon that is]. He shows how to use a set to get the desired sort [also follow that link he posted]. He also helped track down a syntax error that’s worth noting.

Even though Tracy Fitzgerald [TE] was sick this past week [hope you’re feeling better], she posted this solution, using a table calculation to set up an honor roll. UPDATE: Tracy just sent out a TDT update, this weeks session will be “Making the most of you Space.

That’s it for this week. Fewer games next week so I hope to get the Digest out earlier. My only question: Why did the Denver coaching staff suddenly turn into wimpy puddles of Jell-O at the end of the game? Playing not to lose, almost never works! What mutts!


Cartoon Credit: XKCD

Tableau Forums Digest #8

Tour De Force

I’m sure we all enjoy watching a master at work; that’s why we go to the theater, attend concerts, and even watch sports. This week the Tableau community was treated to a command performance by Alex Kerin – it was a joy to watch! The depth and breadth of his Tableau mastery was on full display, ranging from table calculations to handle dates to Haseeb Iqbal’s question about Tableau’s support for the Hijri calendar. [This last one is a fascinating problem.] Alex took on some straight-forward questions, patiently explaining date syntax, and null date behavior; but his posts showing how to fill-in data using custom SQL, and one using five different partitions on the same calculation, are where he really reveals his Tableau chops. Great work Alex! Thanks for the education.

Google Spreadsheet

James Wright posted a link to his DIY Google Drive Connectivity for Tableau blog over at Interworks. This includes a proof-of-concept showing how to ‘connect’ Google Spreadsheets to Tableau, and use it as both a data source and a user-entry form.  [Section Deleted.]

Server Stuff

As usual Russell Christopher fielded several server questions this week. He gave Andrew Jones some security options to keep Fiddler at bay. He also explained to Tim Quayle how server permissions work. Josh Milligan answered a question Mark Bingham had about a custom tabcmd refresh.

Odds & Ends

Allan Walker had a good time this week getting Tableau to display the results of his new toy …. Catherine Rivier added some more outside-the-box thinking, rolling her own trend lines …. Johan Sivertsen lives in a beautiful country, check out the links he posted …. Jonathan shows how to sort stacked bar charts, and fixed an animation Jason Back was working on … Jonathan also provided a lesson on the difference between continuous and discrete, which serves as this week’s Newcomer post. …. Richard Leeke stopped playing with the Beta long enough to talk about LEFT, RIGHT & FULL joins. He also posted a nice explanation of the ATTR() aggregation function …. Tamas Foldi posted several updates to his API work.

Unanswered Questions

EDIT: Last week Nathan Schofield asked about missing records in a large (21 million records) extract he’s pulling from PostgreSQL – and Richard has now posted some comments. Nathan Brown’s heat map post was the other featured question last week. Nathan Jonathan needs some clarification on this. And finally here’s Jonathan’s answer to a question Michael Nealey posted the week before. [Thanks for setting me straight Richard.]

Note: I didn’t notice any new unanswered questions this week. I think everything got some sort of response. Good work folks!

New Contributors

Tableau forums are great because lots of new users are continually joining, asking questions, and eventually giving back by answering questions. As you make this transition from asking to answering questions, I’d like to suggest that you follow one simple rule: test your answers before posting them. Tableau doesn’t always behave the way you think it should. Most of the times I’ve embarrassed myself by posting a completely wrong answer was when I didn’t test it in Tableau first. Posting wrong answers isn’t necessarily a bad thing, we can all learn from your mistakes. But posting untested wrong answers needlessly wastes other people’s time having to correct your careless mistake. So please take the time to confirm your answers before posting, thanks.

That’s it for this week. Let me know if you think I missed anything important. Any other comments are also appreciated.


Tableau Forums Digest #7


Zen Master [to be?]

Anytime a Zen Master calls your solution ‘brilliant’ you go to the head of the class, (and this digest). Catherine Rivier worked out a clever way to combine an area chart with a line chart that shows (or not) multiple marks on multiple axes using a pseudo-dual set of Measure Values/Names. And she explains it better than I just did. [Tableau I’m assuming Tableau Zen Masters aren’t an all-boys club by design? Good to hear.]

Shameless Plug(s)

This leads nicely to this week’s shameless plug. Hiding the small numbers at the bottom of a dual-axis chart, and shoving the large numbers off the top of the other axis is certainly clever, but less than an ideal solution. The real solution would be to allow multiple independent Measure Values/Names on two [at least] different shelves and axes. Vote Here!  …. And here’s one more shameless plug (aimed at the Beta Devs). Ostensibly I show how to use reference lines to label totals of a bar chart, but my views on how the labels display is what I’m ‘plugging’…. Last one: A while back Michael Cristiani created a wonderful set of custom palettes. You can find links to his work and the Color Brewer palettes his work is based on here. As I noted in the thread I think this should be Tableau’s default color palette.

Custom SQL

If you’re attempting to teach yourself to read/write SQL (as I am), you’ll find this workbook Jonathan Drummey posted of interest. All the data connections in the workbook are custom SQL. (To get at the last two you’ll need to take the extract off and re-point the connection at the Super Store file.) Interesting stuff Jonathan, thanks for the examples.

Featured Forum Folk (not the usual suspects)

Being Christmas week some folks took a break from the forums altogether, while others took the opportunity to post more frequently. Joshua Milligan contributed quite a bit of useful information this week, ranging from a DATEDIFF() table calculation to a data blending solution to several answers to server questions. He even took the time to dig out some older unanswered posts. Nice work Joshua.

Dev Checks In

Robert Morton, a Senior Software Engineer at Tableau (if you didn’t know), stopped by this week, answering questions about drivers (here’s the second one), and one by Robert Royer about time-only date type. I guess when Francois heads to the beach, the Devs have a bit more time to breath. 😉

Collected Works of Tamas Foldi

Tamas has been doing quite a bit of Tableau “play” recently. While not all of these links were posted this past week I thought it would be helpful to start a list for easy reference…. Creating Extract w/ Talend ETL .… Customized Views API …. Editing XML (in answer to Joe Mako’s question) …. more work on Editing XML …. API Reading from Extract …. Authentication …. Write Back to DB in 8 …. (Let me know if I missed anything and I’ll add it here.)

Odds & Ends

Sometimes the best answer is listing a set of resources pertinent to the problem, as Alex Kerin does for Frank Galeana’s question about blending two sheets; especially after answering the specific question. (Note his PS! We appreciate this.) …. I can’t let a week go by without featuring a map question. Richard Leeke provided two different solutions to calculate distance from a parameter-selected customer location. Heed his note on using ATTR(), it’s a good one to keep in mind …. Vladimir Baranov and Russell Christopher had a long exchange trying to trouble shoot a server problem. Turns out the problem was caused by Vladimir using a “very old” version of IE. Sounds like updating all of your browsers will be a good New Year’s resolution …. I was working on a question posted by Ajit Kumar about ranking bottom N, when Alex posted a link to an old post I’d forgotten about. Thanks for reminding me Alex…. If you ever wondered how to bucket time into 15 minute interval here you go. (I probably should have just named this section Alex’s Stuff!)

Week’s Unanswered Questions

Nathan Schofield has a question about missing records in a large (21 million records) extract he’s pulling from PostgreSQL. I’m thinking Richard or Robert might have some suggestions on this one. Nathan Brown has a heat map question that might interest someone.

Free Courses

Free always gets my attention. Dustin Smith posted Russell’s set of links that Paul Gittings originally posted on LinkedIn – mostly having to do with data analysis training. If you know of more (or find more) then post them there. This will then serve as an easy-to-find link to this nice resource.

As usual all comments are welcomed — it let’s me know someone is actually reading this stuff. 🙂



Cartoon by

Tableau Forums Digest #6


“Northern Lights Over the Cabins,” photo by Frank Wood

Hope all is well and peaceful in your world.

This week’s forums seemed full of map and date questions. So I’ve organized this digest differently. [Let me know what your think.]


One of my favorite topics….

Allan Walker created an impressive set of maps for Utah State University. He used a mix of custom polygons, standard marks, satellite imagery and OpenStreetMap to map police and fire incidents. Be sure to follow the link to his blog where he explains his process. [Nice work Allan!]

Alex Kerin worked out a great way to fill maps by region or state, and toggle between them – all using native Tableau geography, so no need for custom polygons or such. It’s all driven by a simple table calculation and a parameter. Pretty cool huh Cameron?

Ayush Baheti was struggling with mapping marks onto a background image. I’m sure there are lots of different approaches to this, but here’s how I usually work with background images. [If your way is better, please school me.]

Derek Winter posted a question about mapping routes with origin and destination points in one row/record. Both Alex and Richard provided good workable explanations of how to do this, but I suspect each would have included sample workbooks had the underlying data been more readily accessible. [When you post an extract it’s harder to get at the data than if you leave the extract off and expose the Excel file.]

P. Haezel wants to get access to the zoom level variables so he can change his aggregation accordingly. I do too! And so does Richard. [Consider this my ‘Shameless Plug of the Week’, again.] 


Other than answering forum questions I rarely manipulate dates, but they can be fun little puzzles….

Brian Comeau’s first ever post asked how to plot holidays so he could tease out any patterns that might be connected to these special dates. The catch: the data was in two different tables. Here’s Alex’s in-depth explanation of how to use multiple tables and multiple custom joins to return ALL the data rows. [I’m not sure how Alex traveled all this past week and managed to answer so many forum questions, but he did, and we’re all wiser for it.]

Alan Eldridge made two important points about working with dates. First, try to avoid strings – he gives examples and tells why. And second, why it’s best to use the ISO date format. [There’s an old movie about this, but I just can’t remember the title. Anyone?]

Donna Trinh’s question about comparing date-time from one row to the next was my date puzzle for the week. Great fun coming up with the solution – take that NYT crossword! [Note: the first stumbling-block for many calculations, and particularly for dates, is the dreaded ‘cannot mix aggregate and non-aggregate values…’ In these cases ATTR() should be the first tool out of your kit.]

Finally… Joshua Milligan used a LAST() function as a filter to help Siddhartha get his workbook to calculate correctly. I used LOOKUP() and a parameter to answer Archana’s question.  And Alex showed how to strip the date off a date/time field leaving only time. There were several other date posts, but this section is getting a little long….

Odds & Ends

I came across two very cool vizzes this week.

The first one is a page animation viz by Karan Sehgai. Richard lent a hand getting the reference lines to appear on cue. He used pairs of calculated fields to compare dates and control the lines’ visibility, very slick.

Jason Borucki created the other viz I think deserves a cool-award:

Yeah I know, totally cool; so many possibilities. Make sure you read the tip I gave him for solving his color problem. [And the answer is: Jonathan! He’s the one who taught me this color-picker trick. Thanks again my friend.]

Suzie L. asked a question about nulls and missing values that she and Donna worked through together. Suzie posted a reference to an excellent thread in which Joe, Richard and others explored this issue in depth. Ultimately Donna is the one who “Got it!!” [What is it about Tableau that gets us all so excited when we figure something out?]

Michael Nealey has posted this week’s unanswered question. He’s written a fairly clear explanation of what he’s trying to do and has of course included a packaged workbook. Michael is no newbie; he’s been a member since Feb. 2011 (longer than I have). I’m sure this isn’t a simple problem (though I haven’t had time to work on it). So if you’re looking for a bit of a brain-teaser for this long holiday weekend, why not give this one a go.

The Conversation[Section deleted.]

Server. I don’t really know what to do about Server questions – I don’t use it or know it. So without guidance I can only guess at what’s important. Here are the discussions that seemed important to me: Run as user – server configuration or  Oracle procedures or Mapping & Server [I chose these mostly because Russell took the time to answer.]

As always comments, feedback and criticism are welcome.


Links to Tableau profiles of everyone mentioned in this digest can be found here.