Recent Posts

Custom SQL in Tableau: Subqueries and SQL Injection

5 minute read

I recently answered a question on the Tableau Community forums that arose from confusion over why some (perfectly correct) SQL wasn't working as custom SQL in Tableau. The poster wanted a list of Tableau's supported syntax. But as it turns out, that's the wrong question: Tableau doesn't have a list of all the custom SQL syntax it supports because it really is just passing along the SQL code as you've typed it. So why would a perfectly reasonable custom query fail? And what's the link to SQL injection? Read on!
(Continued...)

Row-Level Security: A Cautionary Tale

7 minute read

Row-level security is a common requirement for people trying to control access to data. Some systems provide this natively, but when it's not provided, people often roll their own using the tools they have—with mixed results In this post we'll explore a common way to implement row-level security on top of a relational database and see why it may not be as secure as it looks.
(Continued...)

A Dozen Notes, Give or Take

7 minute read

Western classical music typically uses twelve distinct notes. It always bugged me: why twelve?
(Continued...)

Tableau Data Sources: Live vs Extract

8 minute read

Continuing last-week's trend, we'll again take a look at an aspect of Tableau that people often find confusing: the difference between live and extracted data sources. And again, we're going to take a bit of a database perspective to clarify the situation.
(Continued...)

Dimensions and Measures: A SQL Perspecitive

5 minute read

I thought I'd kick this off gently. I remember going through Boot Camp after joining Tableau and learning about dimensions and measures. And I remember finding the descriptions rather confusing.
(Continued...)

Hello World!

less than 1 minute read

It's really: "Hello again!"
(Continued...)