Monday, January 23, 2017

Great Lakes Ice Cover

I had a discussion the other day about ice cover on the Great Lakes, which led me to searching out some data. Turns out the GLERL here in Ann Arbor has it, a lot of it. After I got it all downloaded and converted the shapefiles to CSV I loaded it up. Wow...there is a lot of it. about 150,000 rows per day, after removing land values, and I had from the 02-03 to 15-16 winters. Turned out to be about 180M rows, way more than the Tableau Public limit of 15M. I picked about 60 random days (8.2M rows) and included just them.
I tend to over complicate things and have to work hard to simplify, simplify, simplify!

Thursday, June 9, 2016

Milwaukee M18 Battery Value

Following this post over at ToolGuyd I did some copy/paste and came up with this analysis. I came to the same conclusion that the 5Ah batteries are the best value.

Thursday, April 21, 2016

Where are you going to stay at #data16?

The Tableau Conference keeps getting bigger and bigger. Gone are the days when it fit in a single hotel. Now you have choices! To help decide which hotel to stay at (JW Mariott) I put together a viz containing location and and tripadvisor reviews. You can decide on the right combination of distance, cost, and ratings. Some of the hotels were booked up when I tried.

Monday, April 11, 2016

Spring Break Skiing

Over spring break my family went skiing in Colorado. When we got back I was looking at Moves and realized that it had been tracking my skiing. Fun with data below...

Recently I got a new iPhone. I have used some fitness tracking apps in the past, but my new phone (iPhone 6s) has a built-in pedometer and supports the app Moves. Since 2012 I have used OpenPaths but that is sporadic and only useful for general location.

Moves only recognizes walking, cycling and "transport" automatically. I had to reclassify some of the movements as 'downhill-skiing'. Since they were all in a tight geographic cluster it was pretty quick and easy using the app on the phone. The bummer is that it didn't differentiate riding the chairlift from skiing. Sometimes a movement was just a run or a chair, but most were multiple runs and chairs rides.

 Ski data is all about elevation, but there was no relevant data captured. I dumped the timestamp, lat, and long into a webpage that can calculate elevation and added that as a second dataset. Next time I might use one of the ski specific tracking apps if better ski tracking isn't added to Moves.

Next step was to get it into Tableau, but the folks at Interworks already created a WebDataConnector for it, so that was a breeze.

Tuesday, March 15, 2016

Comparing the logged in user to the average

This example came up in a forum at work:

How can I have a dashboard compare "me" (the logged in user) to the average of all users?

Before LOD calcs this was much harder and using row level security lets you limit to the logged in user. For this example I am:

  1.  using superstore data
  2.  a parameter called 'Who am I?' stands in for the username() function
  3. the 'Segment' dimension is standing in for the field with usernames in it
  4. We are going to compare my (ie. the 'Corporate' segment) to the average of all the segments. 
  5. Then a version where we exclude me from the average.

My Profit

Average for all Segments

This version excludes "me" from the average

Tuesday, December 15, 2015

It has been a while since I put anything on Tableau Public, but when I saw that there was a #StarWarsData Contest I was in.

I ended up using the vehicle and starships dataset to make jawaslist. I generated about 500 ads using the Generate Data tool. It is really great and I have it running locally in MAMP to generate large datasets.
There are a few easter eggs in the ads. Some craft we are familiar with....

Tuesday, October 13, 2015

Tableau Push instead of Subscribe notifications

Being able to subscribe to views or workbooks was a huge added feature when it was added in Tableau v8.0. Users could get the info in their email on a schedule instead of having to go to the web page. Then came the questions....

"Can I get a notification when an extract updates?" No.

"Can I subscribe a group?" No.

"Can I sign other people?" No.

We do our best to let people know which schedule to choose. 
I have seen people who get daily messages for a dashboard that updates monthly. Not only does the server have unnecessary load, but they get 29 extra emails a month.

I use Pentaho Data Integration to manage other Tableau Server tasks and I was working on notifying owners of when extracts failed and realized that the opposite would be to notify them when it is successfully updated.

I boiled what was subscribe-able down to 3 things:
  1. Successful Workbook Extract Refresh
  2. Successful Datasource Extract Refresh
  3. Workbook Publish
The third is because there are some workbooks that are manually worked/QA'ed monthly and then published from a QA version to a Prod version. You might want to add a fourth if there are datasources you manually publish. 

Watch the video for more details on how the Pentaho Job/Transform works, but the overview is:
  1. Run Custom_Subscriptions.kjb Job, which deletes old images and launches the transform
  2. Figure out what has happened and is actionable
    1. Query Tableau Database to find actionable events
    2. Join it to a table/file with a list of who is subscribed to what
  3. Load some details for the view URLs
  4. Generate the emails
    1. Find unique views
    2. run tabcmd to generate the images once for each subscribed dashboard
  5. Email each person/group the image/content they are subscribed to.
I have two tables/text files containing
  • email addresses, subscribed object, site, etc
  • Details about the subscribed object (url, path, site, filetype)
We use Active Directory groups to control access, so most dashboards already have a corresponding group that we can email. This prevents having to manually manage individual users.

I have only tested images, but switching the file type from .png to a .pdf or .csv should work

There is also a #DATA15 session on how they do this at Tableau and I am really excited about seeing this. Maybe they will announce that it will be a new feature in Tableau 10.