Five Eights
With the recent news that Adam Selipsky is leaving AWS, I thought I’d share my funny Adam story.
(Continued...)
With the recent news that Adam Selipsky is leaving AWS, I thought I’d share my funny Adam story.
(Continued...)
Last time we saw how to create and use simple Java functions in Snowflake using Snowpark to detect and mask PII. But this gets awkward and tedious if we need to mask many columns. Let’s see how we can use Snowpark to iterate over metadata to make this simple and repeatable
(Continued...)
I wanted to share some code that I’ve used previously in demos. The examples here do basic detection and masking of personally-identifying information (PII) in Snowflake using Snowpark and Java’s built-in regular expression support.
(Continued...)
When we built Tableau Prep, we put a premium on ensuring composability of operations: you can take the operations Prep supports and string them together in any combination you need. There are no restrictions based on where the data came from, or what operations came before.
(Continued...)
I've been a bit quiet lately, but Tableau Prep out the door and it's time to make a little noise.
Clark recently wrote an excellent post on the basic UX architecture of Prep. Here I'd like to cover a key concept underlying Prep that may be a bit foreign to people coming from Tableau: the flow.
This isn't the most glamorous part of Prep, but it is one of the most fundamental concepts in the tool, so it seems worth spending some quality time on.
Strap on your life jacket and read on for more.
(Continued...)
When using Tableau, taking an extract is always better than using a live query, right?
Well, no.
Of course. Obviously, when your data are changing and you want to get all of the latest updates in your viz, you'll want to use a live query. But if that's not the case, then an extract is clearly better, especially with Hyper in 10.5, right?
Well, no!
Shoot! This is complicated? When will live beat an extract? Let's take a look at a few cases.
(Continued...)
Several posts here have explored the queries Tableau generates as it builds your viz, including last week's write-up on custom SQL. This is a trend that will continue: it's much easier to understand a machine when you can see its inner workings.
But how do I get at those queries? I was talking with Yvan Fornes, and he suggested that I write about how I do it.
Challenge accepted! Except I may have gone overboard: in this post I'll explore three ways to find the queries underlying your viz.
(Continued...)
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 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...)
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...)
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...)
With the recent news that Adam Selipsky is leaving AWS, I thought I’d share my funny Adam story.
(Continued...)
When using Tableau, taking an extract is always better than using a live query, right?
Well, no.
Of course. Obviously, when your data are changing and you want to get all of the latest updates in your viz, you'll want to use a live query. But if that's not the case, then an extract is clearly better, especially with Hyper in 10.5, right?
Well, no!
Shoot! This is complicated? When will live beat an extract? Let's take a look at a few cases.
(Continued...)
I needed some help when choosing telescope eyepieces, and was thrilled to come upon a very thorough list over at Cloudy Nights. But a spreadsheet is one thing—a viz is better.
(Continued...)
Several posts here have explored the queries Tableau generates as it builds your viz, including last week's write-up on custom SQL. This is a trend that will continue: it's much easier to understand a machine when you can see its inner workings.
But how do I get at those queries? I was talking with Yvan Fornes, and he suggested that I write about how I do it.
Challenge accepted! Except I may have gone overboard: in this post I'll explore three ways to find the queries underlying your viz.
(Continued...)
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...)
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...)
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...)
When using Tableau, taking an extract is always better than using a live query, right?
Well, no.
Of course. Obviously, when your data are changing and you want to get all of the latest updates in your viz, you'll want to use a live query. But if that's not the case, then an extract is clearly better, especially with Hyper in 10.5, right?
Well, no!
Shoot! This is complicated? When will live beat an extract? Let's take a look at a few cases.
(Continued...)
Several posts here have explored the queries Tableau generates as it builds your viz, including last week's write-up on custom SQL. This is a trend that will continue: it's much easier to understand a machine when you can see its inner workings.
But how do I get at those queries? I was talking with Yvan Fornes, and he suggested that I write about how I do it.
Challenge accepted! Except I may have gone overboard: in this post I'll explore three ways to find the queries underlying your viz.
(Continued...)
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 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...)
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...)
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...)
When using Tableau, taking an extract is always better than using a live query, right?
Well, no.
Of course. Obviously, when your data are changing and you want to get all of the latest updates in your viz, you'll want to use a live query. But if that's not the case, then an extract is clearly better, especially with Hyper in 10.5, right?
Well, no!
Shoot! This is complicated? When will live beat an extract? Let's take a look at a few cases.
(Continued...)
Several posts here have explored the queries Tableau generates as it builds your viz, including last week's write-up on custom SQL. This is a trend that will continue: it's much easier to understand a machine when you can see its inner workings.
But how do I get at those queries? I was talking with Yvan Fornes, and he suggested that I write about how I do it.
Challenge accepted! Except I may have gone overboard: in this post I'll explore three ways to find the queries underlying your viz.
(Continued...)
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 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...)
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...)
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...)
Just reading this blog, you might guess that all I do is leave jobs. First leaving Tableau, and now, four years later, departing Snowflake. Here are some thoughts on the future.
(Continued...)
I won't bury the lede: My last day at Tableau was July 6th, and tomorrow I start a new gig at Snowflake.
(Continued...)
It's really: "Hello again!"
(Continued...)
Just reading this blog, you might guess that all I do is leave jobs. First leaving Tableau, and now, four years later, departing Snowflake. Here are some thoughts on the future.
(Continued...)
Last time we saw how to create and use simple Java functions in Snowflake using Snowpark to detect and mask PII. But this gets awkward and tedious if we need to mask many columns. Let’s see how we can use Snowpark to iterate over metadata to make this simple and repeatable
(Continued...)
I wanted to share some code that I’ve used previously in demos. The examples here do basic detection and masking of personally-identifying information (PII) in Snowflake using Snowpark and Java’s built-in regular expression support.
(Continued...)
Just reading this blog, you might guess that all I do is leave jobs. First leaving Tableau, and now, four years later, departing Snowflake. Here are some thoughts on the future.
(Continued...)
Last time we saw how to create and use simple Java functions in Snowflake using Snowpark to detect and mask PII. But this gets awkward and tedious if we need to mask many columns. Let’s see how we can use Snowpark to iterate over metadata to make this simple and repeatable
(Continued...)
I wanted to share some code that I’ve used previously in demos. The examples here do basic detection and masking of personally-identifying information (PII) in Snowflake using Snowpark and Java’s built-in regular expression support.
(Continued...)
Here’s a reasonably elegant solution to a fun problem I stole from Timothy Gowers: prove that for every positive integer n, there do not exist positive integers a, b, c, d with ad=bc and n^2 < a < b < c < d < (n+1)^2.
(Continued...)
I didn't post last week because I was on vacation. But on vacation I decided to write about something a little out of my comfort zone: Fourier series. (Yeah. Try being my wife.)
Fourier series (and the related Fourier transform) made some sense to me for, but I never really learned how to derive them so they always seemed a bit magical. As I was going through Arthur Mattuck's excellent differential equations course at MIT's Open Courseware, the Fourier series clicked for me, so I thought I'd distill this out.
(Continued...)
When we built Tableau Prep, we put a premium on ensuring composability of operations: you can take the operations Prep supports and string them together in any combination you need. There are no restrictions based on where the data came from, or what operations came before.
(Continued...)
I've been a bit quiet lately, but Tableau Prep out the door and it's time to make a little noise.
Clark recently wrote an excellent post on the basic UX architecture of Prep. Here I'd like to cover a key concept underlying Prep that may be a bit foreign to people coming from Tableau: the flow.
This isn't the most glamorous part of Prep, but it is one of the most fundamental concepts in the tool, so it seems worth spending some quality time on.
Strap on your life jacket and read on for more.
(Continued...)
Western classical music typically uses twelve distinct notes. It always bugged me: why twelve?
(Continued...)
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...)
I didn't post last week because I was on vacation. But on vacation I decided to write about something a little out of my comfort zone: Fourier series. (Yeah. Try being my wife.)
Fourier series (and the related Fourier transform) made some sense to me for, but I never really learned how to derive them so they always seemed a bit magical. As I was going through Arthur Mattuck's excellent differential equations course at MIT's Open Courseware, the Fourier series clicked for me, so I thought I'd distill this out.
(Continued...)
I needed some help when choosing telescope eyepieces, and was thrilled to come upon a very thorough list over at Cloudy Nights. But a spreadsheet is one thing—a viz is better.
(Continued...)
I wanted to share some code that I’ve used previously in demos. The examples here do basic detection and masking of personally-identifying information (PII) in Snowflake using Snowpark and Java’s built-in regular expression support.
(Continued...)
I wanted to share some code that I’ve used previously in demos. The examples here do basic detection and masking of personally-identifying information (PII) in Snowflake using Snowpark and Java’s built-in regular expression support.
(Continued...)
Last time we saw how to create and use simple Java functions in Snowflake using Snowpark to detect and mask PII. But this gets awkward and tedious if we need to mask many columns. Let’s see how we can use Snowpark to iterate over metadata to make this simple and repeatable
(Continued...)
With the recent news that Adam Selipsky is leaving AWS, I thought I’d share my funny Adam story.
(Continued...)