#Workout Wednesday – Fiscal Years + Running Sums

As a big advocate of #WorkoutWednesday I am excited to see that it is continuing on in 2018.  I champion the initiative because it offers people a constructive way to problem solve, learn, and grow using Tableau.

I was listening to this lecture yesterday and there was a great snippet “context is required to spark curiosity.”  We see this over and over again in our domain – everyone wants to solve problems, but unless there is a presented problem it can be hard to channel energy and constructively approach something.

Last pre-context paragraph before getting into the weeds of the build.  I enjoy the exercise of explaining how something works.  It helps cement in my mind concepts and techniques used during the build.  Being able to explain the “why” and “how” are crucial.

Let’s get started.

High level problem statement or requirement: build out a dashboard that shows the running total of sales and allows for the user to dynamically change the start of a fiscal year.  The date axis should begin at the first month of the fiscal year. Here’s the embedded tweet for the challenge:

 

Okay – so the challenge is set. Now on to the build. I like to tackle as many of the small problems that I know the answer to immediately. Once I get a framework of things to build from I can then work through making adjustments to get to the end goal.

  • numeric parameter 1 to 12 for the fiscal year start
  • calculation to push a date to the right fiscal year
  • dimension for the fiscal year
  • transformation of date to the correct year
  • running sum of sales

I’ll spare you the parameter build and go directly into the calculations that deal with the fiscal year components.

Logic as follows – if the month of the order date is less than the fiscal year start, then subtract one from the year, otherwise it’s the year.  I can immediately use this as a dimension on color to break apart the data.

The next step would be to use that newly defined year with other elements of the original date to complete the “fiscal year” transformation.  Based on the tooltips – the year for each order date should be the fiscal year.

Now that the foundation is in place, the harder part is building a continuous axis, and particularly a continuous axis of time.  Dates span from 2013 to 2017 (depending on how you’ve got your FY set up), so if we plotted all the native dates we’d expect it to go from 2013 to 2017.  But that’s not really want we want.  We want a timeline that spans a single year (or more appropriately 365 days).

So my first step was to build out a dummy date that had the SAME year for all the dates.  The dates are already broken out with the FY, so as long as the year isn’t shown on the continuous axis, it will display correctly.  Here’s my first pass at the date calculation:

That gets me the ability to produce this chart – which is SO CLOSE!

The part that isn’t working is my continuous axis of time is always starting at 1/1.  And that makes sense because all the dates are for the same year and there’s always 1/1 data in there.  The takeaway: ordering the dates is what I need to figure out.

The workaround?  Well the time needs to span more than one year and specifically the start of the axis should be “earlier” in time.  To achieve this – instead of hard coding a single year 2000 in my case, I changed the dummy year to be dependent on the parameter.  Here’s the result:

Basically offset everything that’s less than the chosen FY start to the next year (put it at the end).  (Remember that we’re already slicing apart the data to the correct FY using the previous calculations.)  The combination of these two calculations then changes the chart to this guy which is now mere formatting steps away from completion.

The full workbook is available to download here.

Tableau + Python + IoT

You’ve asked and it’s time to answer.  About a week ago I posted a teaser video on Twitter that showed how I integrated my home automation system with a Tableau dashboard.  The outcome of the video was dynamically changing three different lights in conjunction with KPI results.

So beyond the “hey this is really cool” factor of connecting lighting fixtures (or anything else for that matter) to a Tableau dashboard – there are some great practical reasons to do this.  A few great replies to the tweet were of the same sentiment of the thoughts coursing through my mind.  Use something like a light to easily indicate a status – it’s that step back from the KPI shape or the BAN (big ass number).  It’s something visible that you can glance at to immediately understand performance.

Next comes the technical components of how this gets put into place.  To achieve integration between my home automation system and Tableau I used Python.  It serves as a great integrator and took an idea to proof of concept quickly.  Python benefits this situation because several people have developed libraries and published them on GitHub to share.  And the other reason why Python was a great natural choice is because of TabPy.  TabPy allows you to connect to a Python server and run native Python code through calculated fields.  These calculated fields are served up on a Tableau sheet as a table calculations.  And in general when you’re using Python with Tableau it’s to get a number/string/boolean result out.

So just because you are supposed to use TabPy for something doesn’t mean you can’t extend it’s capabilities and use it in a completely different manner.  And that’s exactly what this integration project was about.

This project is also about taking a continuous project I have around home automation and folding in something new I learned (Python) with something I already love (Tableau).

My final caveat is this: if you’re looking to emulate what I did you’re going to need some hardware aka Philips Hue lights and a bridge.  In theory you can change this out with the home automation pieces of your choice.  If you’re unfamiliar with what home automation is – it basically works by having a controller (often called a bridge) and then different connected elements.  The controller is responsible for issuing commands to things like lightbulbs, locks, and your thermostat.  It is also the vehicle that takes how you interface with your home automation system (which is typically a mobile app) and translates those commands, routines, or programs to the elements in the system.

And specific to this project, I’m interfacing with my bridge (controller) using a Python library.  The library I chose to use was Phue, a Python library designed to fully interact with the Hue API.

First I downloaded and installed Phue into my Tableau-Python-Server environment (aka the one used for TabPy).  That allows me to call the library in my Python scripts that are passed through Tableau.  During the install process I also ran a simple script to connect the library to my bridge – a necessary dependency to get this all to work.  It makes sense that you’d have to be able to establish a link between the communication component and the lights you want to change.

The next parts are all reading through documentation, trial and error with Python, and fun with Tableau.  Here’s the final calculated fields that are driving results:

Profit Ratio KPI – this is something we’re all used to.  I’ve taken the basic Profit Ratio calculation and had it evaluate against a parameter.  Based on the evaluation the result will be either 0 or 25000.  The numbers 0 and 25000 correspond to the color hue input required for the lights.  0 is red, 25000 is green.

And here’s the calculated field that is pure Python.  In this scenario I’m not actually using Python to crunch anything and return a result, so you’ll notice that the return argument is a dummy number 1.

You will see it in the calculated field description in the editor within Tableau – to use SCRIPT_INT (or any of the SCRIPT functions) the format is: put your code in quotes and any inputs or arguments being used are called using _arg1, _arg2, _argN.  Those arguments follow the comma after the script.  In my example I have one argument, [Profit Ratio KPI] and that is being assigned to a in the code.

  • The basic outline of the code is as follows:
  • set [Profit Ratio KPI] to be a
  • import phue library so we can use it
  • use my bridge (that’s the bridge’s IP address on my internal network)
  • set the saturation of the lights to 254 – this is extra code, but ensures that the light has full saturation
  • set the light hue to the value of a
  • return 1 – just for fun!

If you’re extra interested, the functions from Phue require you to select which light you’re going to be controlling.  The Profit Ratio KPI light was number 25.

A trial and error moment here.  As I was testing this code I had a Jupyter notebook up and was entering the same code snippets to test it outside of Tableau.  Under normal circumstances I was able to assign a number to a without any issue, execute the code, and have the lights change colors.  Inside of the Tableau space I had to call the first index “[0]” of the argument.  I haven’t looked through the documentation for TabPy in enough detail, but it leads me to believe that arguments come in as lists instead of single variables.  So to isolate out the one result I wanted, I had to specify which element I wanted in my list of one variable.  So my KPI result is really like [25000] in Python notation and has to be called as _arg1[0] (non-Python folk: Python indexes start at 0).

Literally everything else about this was setup and build of the Tableau components.  Building out the BANs and adding parameters to dynamically input the goal variables.  Everything else was connected and working after the correct code was entered.

Here’s what one of the BAN sheets looks like:

The calculated field is present on detail, but not used anywhere else in the view.  (Which if you hovered over a default tooltip would show “1”).

Once the visualizations are set it’s just a matter of interacting with the dashboard to start seeing this integration take effect.  You’ll notice during the video that it’s not super fast – there is definitely an element of time.  And that makes sense – there is a bunch of overhead to take an argument from Tableau that has to be computed, push it through a Python server, and wait for a result to return.

This is a beautifully simple integration and demonstration of how to take the mantra of seeing and understanding data to the physical world.  With a few lines of code data-driven performance can exist in the physical world.

The Remaining 25 Weeks of #WorkoutWednesday

Back in July I wrote the first half of this blog post – it was about the first 27 weeks of #WorkoutWednesday.  The important parts to remember (if the read is too long) are that I made a commitment to follow through and complete every #MakeoverMonday and #WorkoutWednesday in 2017.  The reason was pretty straightforward – I wanted a constructive way to challenge myself and tangible, realistic goals.

Now that we’re 3 days into 2018 – it’s the perfect opportunity to go through the same process of sharing the impact each workout (the remaining 25) has had on me.

Week 28 | Insights & Annotations
The focus on this workout was adding context/insights/summarization to existing visualizations.  Something that is often asked of those creating dashboards or presenting data.  I enjoyed this workout tremendously because it was a great example of using a feature within Tableau in a way I hadn’t thought about.  The premise is pretty simple – allow users the ability to input insights/findings and customize the summary output.  Very clever use that is a great way to provide a dashboard to someone who has little time or is skeptical of self-service analytics.

Week 29 | Who sits where at the Data School?
I hated this workout – because of donut charts.  Donut charts in Tableau are the level one “look how cool I am” or “I think I’m pretty awesome with the tool” things that people make.  Yes – they are cuter than pie charts (which I don’t mind) – but I strongly hate how these are implemented in Tableau.  Pushing aside my dissatisfaction for donuts – I veered off requirements for this dashboard.  I particularly changed from the original build results because of how seat favorites were computed – more specifically I ended up with more “No Favorite” than the original.  The great points about this workout – the sophistication required to calculate several of the numbers shown.

Week 30 | Loads of LODs
As described this workout had a few LODs.  The most distinct thing I remember about this build relates to the region filter.  You need to decide early on how you’re going to implement this.  I believe Emma used a parameter where I used a filter.  The choice made here will have consequences on the visualizations and is a great way to start understanding the order of operations within Tableau.

Week 31 | The Timing of Baby Making
Ah – a favorite visualization of mine, the step chart/plot.  The two major gotcha moments here are: implementing the step chart and the dropdowns/filters to set highlighting.  This one is solvable in multiple ways and I went the Joe Mako route of unioning my data set.  During the build this seemed like the easier solution to me, but it does have implications later on.  I believe it’s worth the effort to go this route – you will learn a lot about how unioning your data on itself can be useful.

Week 32 | Continuous Dates are Tricky
This is classic Emma style – particularly down to the requirement of a dynamic title that would update based on newer data availability.  The premise itself is pretty straightforward – how can you plot a continuous month line, but have years broken out.  By definition that concept should break your brain a bit, because continuous means it’s the entire date, so how are you plotting different years on a continuous axis?  And hence the challenge of the workout!

Week 33 | How Have Home Prices Changed?
Andy mentioned that this visualization was inspired by Curtis Harris.  And as I write this – it is probably my top visualization in terms of design from the 2017 #WorkoutWednesday collection.  Something about the strategic use of capitalization in conjunction to the color choices resonated with me and has left a lasting impact on my viz style.  This is a stunningly beautiful example of making Tableau a very self-service analytics tool, having dense data, but still being deceptively simple and clean from a design perspective.  Plus you’re practicing dynamic titles again – which I find to be a requirement for most serious builds.

Week 34 | Disney’s Domination
This workout was my first waffle chart.  I’d successfully avoided the waffle (as a general rule I don’t like high carbohydrate visualizations) up to this point.  More than the waffle – was the requirement to data blend.  I’m not a big data blending fan because it is very easy for things to go sideways.  However – the icky feeling you get from data blending is exactly why this is a great exercise to work through.  And also because I believe I did this entire visualization (up to a point) using LODs and had to switch to table calculations.  I learned how to make an LOD into a table calculation (probably the reverse practice for more tenured Tableau folks).

Week 35 | Average Latitude of Solar Eclipses by Century
This is another visualization with design that I find very pleasing – particularly the use of reference lines.  I strongly remember learning so much about the Path shelf this week.  Specifically how to use path to your advantage.  You don’t often see people create something that would otherwise be a line chart, but instead has vertical bars/gantts/lines to focus the eye vertically and then across.  A great exercise and thought-starter on additional visualizations to make.

Week 36 | Which UK Airport Should You Fly From?
This workout is the perfect hands-on exercise on taking continuous sizing on bar charts offered up as a new feature in the past year.  Beyond knowing that you CAN do something, knowing HOW to build that something is the key (at least for me) to be able to iterate and ideate.  This one is more complex than it seems at first glance.

Week 37 | Killings of Blacks by Whites Are Far More Likely to Be Ruled ‘Justifiable’
A viz I don’t want to remember – this one is 100% about formatting.  It took me a considerable chunk of time to complete.  And probably more maddening – this viz needs to be built in one session, otherwise you’ll forget all the intricate details required to make it look “just so.”  I was cursing my PC the entire build – and worse than that I think I restarted it at a certain point because things weren’t lining up how I wanted.  Only complete if you enjoy being tormented.  The upside?  Going through this workout will make you intimately aware of all the gaps and limitations Tableau has as it relates designing.  Also – this was done before changing padding was a feature.  Thanks guys.

Week 38 | (It Takes) All Sorts
This is another “looks simple” but has “some tricks” workout.  I remember someone at our user group asking about this over the summer and if I knew how to build it.  I didn’t have an answer readily available within 30 seconds, so I knew there was more going on.  I highly encourage this build because it demonstrates how sorting works and how multiple sorts interact with each other.  Also – I think whatever sorting I ended up was some sort of mathematical manipulation on my part.

Week 39 | Are the contributions of top sellers increasing throughout the year?
Another trellis chart!   More than the trellis – check out what is being analyzed.  This isn’t superficial or first-pass reading of data.  This is second and third level thought on finding deeper insights and answers to questions within a data set.  So naturally it requires more layers of calculations to resolve.  And of course – the “just so” placement of the far right label.  This is a perfect example of taking a question and turning it into a visualization that shows the answer.

Week 40 | All Sorts Part 2
As advertised and named – the second half of Emma’s sorting workout.  This may actually have been the dashboard where I did some mathematical magic to require the first position to be first and retain any additional sorting.  Also – the devil is in the details.  When you change sort order, notice that the bottom visualization always changes to be the subcategory chosen.  Sounds easy, but takes some thought to implement.

Week 41 | State to City Drill Down
As I look back on my tracker – I realize that I did 38 through 41 in the same day.  And naturally I approach backlog in the fashion of oldest gets built first.  So this was the 4th on a particular day – but I championed this guy hardcore.  I will say it again – YOU NEED TO DO THIS WORKOUT.  The concepts on execution here are next level.  I know it sounds kind of trivial – but it will help unlock your mind to the possibilities of using filters and the art of the possible.  Plus this is a question that ALWAYS gets asked.  “Can I click a state and have it automatically change the view to cities.”  This does that.  Also – this build took me 30 minutes tops.

Week 42 | Market Basket Analysis
I won’t forget this workout anytime soon because it required the legacy JET connector and thinking about how data gets joined back on itself.  This type of analysis is something people often want to have done – so knowing the steps on creation using an Excel data source (or other sources for that matter) makes this guy worth the build.  Follow Emma’s advice closely.

Week 43 | The Seasonality of Superstore
A great viz once again demonstrating how powerful parameters can be – how you can use them in multiple places – and also things you can do to make visualizations more user/reader friendly.  You’re definitely using a table calculation somewhere in here – and you definitely will get angry when trying to recreate the smoothing (particularly dealing with endpoints of the chosen time range).

Week 44 | Customer Cohorts
When dealing with cohort analysis you’re very likely to encounter LODs – that’s par for the course for this workout.  But again – Emma is so clever at taking something that seems straightforward and challenging you to implement.  If you look closely you’ll have to dynamically change the bottom visualization based on where a user clicks.  I remember spending the majority of my time on the dynamic title.

 

Week 45 | Stock Portfolio
This is one sheet.  Just remember that – everything is on one sheet.  And more than that – think about how this is implemented from a numerical perspective – there’s some serious normalization going on to make things show up in context to one another.  If you’re not a math lover – this will be a great way to play with numbers and have them bend to your advantage.  Also – I remember being annoyed because one of the stocks had a maximum value greater than the recorded max (which is it’s own measure) – and that irritated me.

Week 46 | Top N Customers
Think of this as a different way of implementing sets.  It has a lot of similar functionality between IN/OUT and showing members of a set.  And also there are some key takeaways in terms of aggregating dimensions.  Not super flashy on design, but very useful in terms of implementation.

Week 47 | Fun with Formatting
Another visualization where you’re required to do everything in a single sheet.  This will put all that table calculation sweat to action.  I really enjoyed this one.  There is something very satisfying about ranking/indexing things multiple ways in one view.  Also it uses the Caption guys.

Week 48 | Treemap Drilldown
Same concept as week 41, but executed as a treemap.  I think I even opened up week 41 to use as influence on where to go.  Same concepts are repeated, but in a different format.  The automagic of this one doesn’t get old – also carefully look at how things are sorted.

Week 49 | Position of Letter Occurrences in Baby Names
When you say out loud what you’re trying to do – particularly “find the nth occurrence” of a specific letter (we can generalize as substring) in a specific string – it sounds really really hard.  But guess what – there’s a built in function!  The fact that it’s built in made this visualization super straightforward to complete.  You should build this to introduce yourself to a function you’ve probably never used before.

Week 50 | Rocket ship Chart
I very much enjoy this type of chart from an analytical perspective.  It’s a great way to normalize things that are bound to time.  You see immediate inferred rank and results.  Emma put in some requirements to ensure that as data changed this chart would stay accurate.

Week 51 | State by State Profit Ratio
If you want several of the lessons Andy built into multiple workouts all in one place – this workout is for you.  It’s got so many classic Kriebel “gotcha” moments in it.  As I was building this I really felt like it was a specially designed final to test what I’ve learned.  Also this is probably my first tilemap (unless we made one in another workout).  I don’t use them often – so it’s a great refresher on how to implement.  And also – you get to use a join calculation.

Week 52 | UK’s Favourite Christmas Chocolates
When I was building this one someone asked me why I was making it – specifically where was the challenge.  I explained that it was all in one sheet opposed to 4 different sheets.  A natural next question occurred which was “why would you want to do it in one sheet.”  I though that was a very interesting question and one that I explained by saying that for me personally knowing multiple ways to do things is important.  And more specifically as I know to be true of these types of builds – if you can do it in one sheet, it shows a level of mastery on making Tableau do exactly what you want (which is LOTS of things).

And that wraps up 2017 beautifully.  Comparing the retrospective of this half of the year vs. the first half – there are stark differences from my perspective.  I can honestly say that each build got easier as time went on.  Once I got to the last few challenges – I was timing completion to be about 20 minutes.  Contrast that with the first few weeks where I spent hours (over multiple sessions) making my way through each build.

Beyond building out my portfolio, having concrete examples of specific types of analysis, and fulfilling my own goals – #WorkoutWednesday has given me such depth of knowledge in Tableau that it’s ridiculous.  You know how people say things like “that’s just funny Tableau behavior” – well I can (for the most part) now verbally articulate what and why that funny behavior is.  And more than that – I know how to maximize the behavior which is really working as designed and use it to my own advantage.

The last part of this blog series is going to be a ranking of each workout – aimed to help those who are interesting in completing the challenges approach these without getting too discouraged or burnt out on some of the builds that are still (to this day) hard.  Be on the lookout.

Exploring Python + Tableau

This month I’ve been taking a night class at Galvanize aimed at being an introductory to Python and Data Science.  It’s a 4 night/week boot camp with a mix of lecture and hands-on assignments.  My primary interest with the course was the data science component, but I also felt extremely strong about the necessity to have a programming language in my toolkit.

To add context – I’ve taken formal classes in C++ and Java, know enough HTML/Javascript to be dangerous, and can leverage SQL when forced.  I’ve always had very positive retrospective moments about learning C++ and particularly think the act of writing pseudo-code has been a skill I’m lucky to have.

When learning anything new I think it’s required to put it in action.  So I have some small immediate goals related to Python that focus on integration or utility to Tableau.  In fact earlier this year I dabbled in the topic and spun up a Linux box to go through the published exercise of using Python+NLP.  Specific to that exercise I actually did the NLP processing within Python and exported the results.

This leads me to Wednesday, where I was presented with a new opportunity to combine skill sets.  The premise was pretty straightforward – take concepts of Monte Carlo scenarios/simulations/method for corporate finance and use it to develop visualizations.  The key to this is that a historic input or perhaps expected input (likely derived through some analysis) and it’s corresponding standard deviation are used along with the probability component of random numbers bounded to a normal distribution.  A fancy way of saying (at least for this example) – generate numbers based on X, it’s standard deviation, and random numbers.  Specifically of the format Result = X + (SD*RandomNumber).  And several results are computed.  It’s like rolling dice over and over again and seeing what happens.

So this initially was conceived and in working order in Excel – and the kicker of why it works in Excel is a function that does that tidbit I mentioned above “random numbers bounded to a normal distribution.”  The functions used to generate that aren’t available in Tableau.  And this is where Python came to the rescue.

Because Python has depth in mathematical libraries it seemed like a natural choice to outsource the computation of these random numbers to it.

To get started I read through this community article: Tableau Integration with Python – Step by Step.  It provides the pertinent components of how to get Tableau and Python to talk – most specifically how to use the SCRIPT_() functions in Tableau to pass through Python code to TabPy.

Once that was done I needed to develop a data set to use under the hood of the workbook (remember pretty much everything is parameterized – so there’s no data to read in).  I ended up making an Excel spreadsheet with 1,000 rows – each with a row number (1 to 1,000).

The simulation results are this calculation:

So you can see – 2 parameters (purple) and then one calculated field.  The calculated field is where Python jumps on the scene.

Breaking this down a bit further:

  • SCRIPT_REAL() – takes in blocks of code within quotation marks followed by arguments (that must be aggregated).   It outputs a real number (opposed to integer, string, or boolean)
  • Python script is pretty basic: import 2 different libraries
    • norm from scipy.stats – this gives me the function norm.ppf() that allows the conversion of a random number to be in that normal distribution format
    • random.random() – just a random number function
    • Named n as a list and set it equal to the output of my functions
    • returned the value n

I noticed when I did this I had to supply an argument (essentially a comma with SOMETHING after it to avoid errors in my calculated field).  So I added on a simple SUM(1).  This calculation is being called at a row level, so it’s just 1 and not used anywhere.  If I were going to use it, I’d need to include _arg1 (or _arg2, _argN) and follow up with those input arguments separated by commas.

SCRIPT() calculations always come on as Table Calculations – so you’ll see the icon and have all the nuance of Table Calculations.  Namely that they’re computed in the view and you can’t make something like bins with them or use them for sorting.

Here’s the final dashboard (in it’s initial state):

You’ll see the different inputs and the ability to set the number of simulations.  This is simply a parameter that limits the row number of the underlying data.

As I was playing around this – one of the keys to this analysis is to show the spread of the different results (ideally maybe a histogram).  So I stuck with confetti for now, but added on reference bands and lines.  Additionally I colored the simulation results using a custom binning technique where I find the range between Min & Max, divide that by 10 and then create bins with the Min+ multiple of range/10.  Here’s the calculated fields:

This allows the end user to click on the color legend to see the number of simulations within each “bin.”  And to see through random chance how the simulations really distributed.

I also made this sheet, which has some advantages of expressing that concept a bit more clearly.  Through 110 simulations – here’s where the results fell out.

In terms of the visual outputs – I’d still say I’m at an exploration stage of finding what works best.  However, from a Python/TabPy angle – I was pretty enthused to put it all in action.  And most specifically one thing I appreciate about this is that when the simulation number is changed, it’s the act of running a “new simulation.”  Same with all of the parameters – but something very satisfying about the act of data changing on the fly.

Next week we’re finally tackling NumPy and Pandas – so I expect some inspiration to come.

 

A follow up to The Women of #IronViz

It’s now 5 days removed from the Tableau Conference (#data17) and the topic of women in data visualization and the particularly pointed topic of women competing in Tableau’s #IronViz competition is still fresh on everyone’s mind.

First – I think it’s important to recognize how awesome the community reception of this topic has been.  Putting together a visualization that highlights a certain subsection of our community is not without risk.  While going through the build process, I wanted to keep the visualization in the vein of highlighting the contributions of women in the community.  It wasn’t meant to be selective or exclusive, instead, a visual display of something I was interested in understanding more about.  Despite being 5 days removed from the conference, the conversations I’ve been involved in (and observed from a distance) have all remained inclusive and positive.  I’ve seen plenty of people searching for understanding and hunting for more data points.  I’ve also seen a lot of collaboration around solutions and collecting the data we all seek.  What I’m thankful that I have not witnessed is blame or avoidance.  In my mind this speaks volumes to the brilliant and refined members of our community and their general openness and acceptance of change, feedback, and improvement.

One thing circling the rounds that I felt compelled to iterate off of, is @visualibrarian’s recent blog post that has interview style questions and answers around the topic.  I am a big believer in self reflection and exploration and was drawn to her call to action (maybe it was the punny and sarcastic nature of the ask) to answer the questions she put forth.

1. Tell me about yourself. What is your professional background? When did you participate in Iron Viz?

My professional background is that of a data analyst.  Although I have a bachelor’s degree in Mathematics, my first professional role was as a Pharmacy Technician entering prescriptions.  That quickly morphed into someone dedicated to reducing prescription entry errors and built on itself over and over to be put in roles like quality improvement and process engineering.  I’ve always been very reliant on data and data communication (in my early days as PowerPoint) to help change people and processes.  About 2 or 3 years ago I got fed up with being the business user at the mercy of traditional data management or data owners and decided to brute force my way into the “IT” side of things.  I was drawn to doing more with data and having better access to it.  Fast-forward to the role I’ve had for a little over 8 months as a Data Visualization Consultant.  Which essentially means I spend a significant amount of my time partnering with organizations to either enable them to use visual analytics, improve the platforms that they are currently using, or overcoming any developmental obstacles they may have.  It also means I spend a significant amount of time championing the power of data visualization and sharing “best practices” on the topic.  I often call myself a “data champion” because I seek simply to be the voice of the data sets I’m working with.  I’m there to help people understand what they’re seeing.

In terms of Iron Viz – I first participated in 2016’s 3rd round feeder, Mobile Iron Viz.  I’ve since participated in every feeder round since.  And that’s the general plan on my end, continue to participate until I make it on stage or they tell me to stop 🙂

2. Is Tableau a part of your job/professional identity?

Yes – see answer to question #1.  It’s pretty much my main jam right now.  But I want to be very clear on this point – I consider my trade visual analytics, data visualization, and data analytics.  Tableau is to me the BEST tool to use within my trade.  By no means the only tool I use, but the most important one for my role.

3. How did you find out about Iron Viz?

When I first started getting more deeply involved in my local User Group, I found out about the competition.  Over time I became the leader of my user group and a natural advocate for the competition.  Once I became a part of the social community (via Twitter) it was easy to keep up with the ins and outs of the competition.

4. Did you have any reservations about participating in Iron Viz?

Absolutely – I still have reservations.  The first one I participated in was sort of on the off chance because I found something that I want to re-visualize in a very pared down elegant, simplistic way.  I ended up putting together the visualization in a very short period of time and after comparing it to the other entries I felt my entry was very out of place.  I tend to shy away from putting text heavy explanations within my visualizations, so I’ve felt very self-conscience that my designs don’t score well on “story telling.”  It was also very hard in 2016 and the beginning of 2017.  Votes were based off of Twitter.  You could literally search for your hashtag and see how many people liked your viz.  It’s a very humbling and crushing experience when you don’t see any tweets in your favor.

5. Talk me through your favorite submission to Iron Viz. What did you like about it? Why?

Ah – they are all my favorite for different reasons.  For each entry I’ve always remained committed and deeply involved in what the data represents.  Independent of social response, I have always been very proud of everything I’ve developed.  For no other reason than the challenge of understanding a data set further and for bringing a new way to visually display it.  My mobile entry was devastatingly simple – I love it to death because it is so pared down (the mobile version).  For geospatial I made custom shapes for each of the different diamond grades.  It’s something I don’t think anyone in the world knows I did – and for me it really brought home the lack of interest I have in diamonds as rare coveted items.

6. What else do you remember about participating in Iron Viz?

The general anxiety around it.  For geospatial 2017 I procrastinated around the topic so much.  My parents actually came to visit me and I took time away from being with them to complete.  I remember my mom consoling me because I was so adamant that I needed to participate.

Safari and Silver Screen were different experiences for me.  I immediately locked in on data sets on subjects I loved, so there was less stress.  When I did the Star Trek entry I focused on look and feel of the design and was so stoked that the data set even existed.  Right now I am watching The Next Generation nightly and I go back to that visualization to see how it compares to my actual perception of each episode (in terms of speaking pace and flow).

7. Which Iron Viz competitions did you participate in, and why?

Everything since 2016 feeder round 3.  I felt a personal obligation and an obligation to my community to participate.  It was also a great way for me to practice a lot of what I tell others – face your fears and greet them as an awesome challenge.  Remain enthusiastic and excited about the unknown.  It’s not always easy to practice, but it makes the results so worth it.

8. What competitions did you not participate in, and why?

Anything before mobile – and only because I (most likely) didn’t know about it.  Or maybe more appropriately stated – I wasn’t connected enough to the community to know of it’s existence or how to participate.

9. Do you participate in any other (non Iron Viz) Tableau community events?

Yes – I participate in #MakeoverMonday and #WorkoutWednesday.  My goal for the end of 2017 is to have all 52 for each completed.  Admittedly I am a bit off track right now, but I plan on closing that gap soon.  I also participate in #VizForSocialGood and have participated in past User Group viz contests.  I like to collect things and am a completionist – so these are initiatives that I’ve easily gotten hooked on.  I’ve also reaped so many benefits from participation.  Not just the growth that’s occurred, but the opportunity to connect with like-minded individuals across the globe.  It’s given me the opportunity to have peers that can challenge me and to be surrounded by folks that I aspire to be more like.  It keeps me excited about getting better and knowing more about our field.  It’s a much richer and deeper environment than I have ever found working within a single organization.

10. Do you have any suggestions for improving representation in Iron Viz?

  • Make it more representative of the actual stage contest
  • Single data set
  • Everyone submits on the same day
  • People don’t tweet or reveal submissions until contest closes
  • Judges provide scoring results to individual participants
  • The opportunity to present analysis/results, the “why”
  • Blind submissions – don’t reveal participants until results are posted
  • Incentives for participation!  It would be nice to have swag or badges or a gallery of all the submissions afterward

And in case you just came here to see the visualization that’s set as the featured image, here’s the link.

#data17 Recap – A quick top 5

Now that Tableau Conference 2017 has come to a close it’s time to reflect back on my favorite and most memorable moments.  I’ll preface by saying that I had very lofty goals for this conference.  It started after #data16 – immediately after the conference I did some significant thought work on what I wanted my year to look like and HOW I wanted to shape it.  It began by deeply examining my why.  My why is a personal mission that transcends my professional career.  I firmly believe that visualizing data is the BEST way to get closer to the truth and to grow, learn, and improve.  I also strongly feel that every individual should use analytics in making decisions.

Without further ado – here’s my top 5.

#1 – Participating in #MakeoverMonday live

This is my number one because it represents the culmination of a lot of my personal growth and effort this year.  Coming out of #data16 I committed myself to doing every #MakeoverMonday and most specifically participating in this event.  I’ll admit I have a few weeks still outstanding, but I’m on track to have a full portfolio by the end of 2017.  This was also the moment I was most anxious about.  Would I be able to develop something in an hour AND feel comfortable enough to share it with a large audience?  Well at the end of the hour I accomplished everything I had been anticipating and more.  With the support of the amazing #MakeoverMonday family and those around me I got up and presented my viz.  And to boot it became a Viz of the Day (VOTD) the following day.  Talk about a crowning achievement.  Taking something that I had a bit of nerves about and turning it into a super proud moment.

#2 – Community Battle: 60 Second Viz Tips

I think the picture says it all.  A rapid fire tips battle at 9 am the day after Data Night Out?  YES please.  This session was an unbelievable joy to participate in.  Birthed out of the minds of the amazing London Tableau User Group and brought to the sessions of conference.  As if by fate the first community folks that found me when I dropped in on Vegas were none other than Paul Chapman and Lorna Eden.  I can’t be more grateful for the opportunity to contribute to the conference.  And let’s not forget the trophy guys.  This is a new tradition I’d love to see carry out into the conferences to come.

#3 – The Vizzies!

A pure demonstration of the awesome Tableau community that exists globally.  I was so honored to be recognized this year as a Community Leader.  Just take a look at the amazing folks that I am so thankful to be surrounded by.  More than being recognized, the fact that the community was so prominent is unbelievable.  I couldn’t go anywhere without being stopped and having conversations, hugs, or smiles shared between community members.

#4 – Iron Viz!

As I always say – the pinnacle when it comes to Tableau.  The chance to see what 20 minutes of extreme vizzing looks like from the front row.  This one is near and dear to my heart because I submitted for each of the feeder contests this year.  I’d love the opportunity to get up on the big stage and participate, but barring that – it’s an enthusiast’s dream to see the excitement play out on the big stage.

#5 – Fanalytics

Although it is coming in at my #5, this is probably the highest impact moment of conference.  A 3+ hour conversation started by important members of the Tableau community talking about their journey and growth.  It ended with me facilitating one of 8 conversations about important topics the community is facing.  Mine was focused on female participation in #IronViz.  What was interesting about this was the massive feeling that we needed more data to wrap our arms around the topic.  And this has become my first action item post-conference.  I wanted to extend the conversation beyond the round table of remaining conference goers and into the broader community.

I’ve been so inspired, impressed, and energized by all the community and people I encountered over the past week.  I can’t wait to see what the next 12 months look like.

And now that I’ve provided my top 5, I’m curious – what are your top #data17 moments?

The Importance of Certification

I’ve long been a huge advocate of certification in technical fields.  I think it is a great way to actively communicate and demonstrate the skill level you have in a particular area.  Even further in my mind it represents the ability to set a foundation to build off of with others.

I personally started my Tableau certification journey last year (more like 18 to 20 months ago).  I was becoming much more heavily involved in my local Tableau user group and felt that I needed a way to benchmark or assess my skills.  I knew I had much more to contribute to my local community and I thought that going through the certification journey and sharing that with the TUG would be beneficial.

So I started by getting ready for the Desktop Qualified Exam.  Independently I went through all the existing documentation and searched for knowledge nuggets that would set me on the right path.  I took the stance of developing out all of my own knowledge gaining to a format that could be digested by a larger audience.  I walked through all of the practice exam questions and did an analysis of the different certification levels to the user group at least 3 times.

I passed the Desktop Qualified Associate around April or May of 2016.  It was a great achievement – and I was able to add definition to what that exam means.  Having the Desktop Qualified Associate certification means that you are technically proficient in the features and functions of Tableau Desktop.  It means that you can answer thoughtful questions using built in features and that you have depth of understanding best practices or efficient ways to get to the results.  If I were to equate it to a different skill – I would say that it means you know how and when to use different tools in a toolbox.  What it doesn’t mean: that you are a masterful architect or that you can build a stunningly beautiful home.

To get to the next level of mastery and understanding, that means you’ll need the Certified Professional.  If you take a look at the specific components that are tested you’ll quickly realize that advanced technical skill is weighted less than storytelling or analysis.  The purpose of the Desktop Certified Professional is to demonstrate that you have a deep understanding of data visualization, using data visualization to tell a story, and how level two (or three or four) analytics or analysis are necessary to start answering deeper and more important (read as: higher impact) questions.

For me to work on preparation here – the exam prep guide was only the beginning.  It assists in the structural components of 1) knowing how many questions there will be 2) estimating time available to spend on each question 3) examples of analytical/presentation depth required to demonstrate proficiency 4) variety of question types.

Probably the most intriguing questions for me are those where you have to assess a particular visualization, give and justify a critique (and specifically how it relates to a described objective) and then provide an alternative solution (also justifying verbally the importance).  This skill is much different than knowing how to hammer a nail into a post.  It is defending why you chose to put a porch on the northeast corner of a home.  It’s a lot about feel.

I had such an awesome time taking the exam.  There are a lot of real world constraints that required me to distill down the most important components of each question.  It’s interesting because for most items there isn’t a single right answer.  There are definitely lots of wrong answers, but right is a spectrum that is somewhat dependent on your ability to communicate out the completeness of your point of view.

I’ve had the title of Tableau Desktop Certified Professional for just over a year now – so I can tell you with a decent amount of retrospective thought what it has done for me.  Just as I am able to describe the test and purpose it served in this blog post – I can do the same thing in all of my interactions.  It keeps me humble to knowing that the PURPOSE behind a visual display is more important than fancy widgets or cool tricks.  That to a large extent my role is to work through the semantics of a situation and get to the root of it.  The root of the question or questions, the heart of concern, the why behind the visualization.  And also the artistry (yes I use this word) behind what it takes to get there.  We have all felt the difference between a perfectly acceptable visualization and the right visualization.  The end user experiences something different.  I firmly believe that deeper understanding can be achieved by spending that extra thoughtfulness and approach to iteration.

So let’s now fast forward to the other certification path – the more recent one: Tableau Server.  What’s interesting is that because my strengths have been built out on the visualization end, I haven’t planted myself in an opportunity to understand the deeper technical components of Tableau Server.  I have always understood and had great depth of knowledge in Site Administration.  That is to say acknowledging and abiding by best practices for sharing, permissions, and managing content.  But – the part that I had not spent time on is creating a sustainable platform to have the vision continuously executed.

So to overcome that minor blind spot – I went on a mission to learn more, to shine light on the unknown.  You’ve seen that play out here on my blog – going on a self directed adventure to deploy a Server on Azure.  Nobody told me to do that – I was internally compelled.  (I should also mention I was honored to have a friend go on the journey with me!)

I’m probably rehashing at this point – but anytime you grow knowledge in a particular area (more specifically technical) it gives you such breadth and depth of vocabulary to be able to connect to other individuals.  You find that communication barriers that were preventing the success of a project are diminished because you now speak the same language.  As I write this I can hear Seth Godin saying that the more knowledge someone has in a particular subject area the more ABSTRACT their language is around it.  Which means that it is extremely difficult to communicate with that SME unless significant effort is taken on the part of both parties to bridge the gap.

So that’s what Tableau Server qualification has done for me.  It’s the first step on a journey to get to the point where I imagine the next level to Server Certified Professional is the act of execution.  It’s less knowledge and verbiage and more tactical.  Also likely there’s more ambiguity – not a right answer, rather a spectrum of right where you communicate your why.

As I wind down this post – I must shout to you “go get certified.”  Ignore the naysayers.  It’s easy to not do something, but you know what is hard?  Doing something.  Being tested.  And why is that?  Because you can fail.  Get over failure – push through that mindset.  The alternative is much more pleasant and unlocks all the potential the universe has to offer.

 

Star Trek The Next Generation: Every Episode (#IronViz 3)

It’s that time again – Iron Viz feeder contest!  The third and final round for a chance to battle at conference in a chef coat is upon us.  This round the focus was on anything ‘Silver Screen.’

With a limitless topic I was certain that I would find myself in a creative rut that would likely result in submitting something at the end of the submission time period (August 13th).  So I am as shocked as anyone else that I have a fully formed submission way before deadline.

So what’s the topic and what got me unstuck?  Star Trek of course!  The backstory here is amazing – I went to a belated wedding shower for a few friends and they mentioned to me that they were going to the annual Star Trek convention.  And more specifically there was a special celebration occurring – the 30th anniversary of Star Trek: The Next Generation.  Not even up for debate – it just IS the best incarnation of the Star Trek universe.

So I decided to take a moment to do some research on finding TNG data.  It didn’t take me long to unearth this fantastic data set on GitHub that includes each episode’s script parsed out by character.

Really inspired by the thought of seeing each word of each episode visualized – I set forth on my mission.  As I got started there was one component that was mission critical: the bold colors present throughout the world of Star Trek.  The bold and moody colors of Star Trek are fantastic – especially paired with a black background.  And working with individual scripts meant that I could use color to accentuate different characters – much like their uniforms do in the episodes.

The next component that I wanted to invoke on this (again – design focused here) was the electronics and computer interfaces.  I particularly like the rounded edges and strong geometric shapes that are on the computer screens across all iterations of Star Trek.  So that describes most of the design – the choice of colors and how some of the visualizations were setup.

Now on to the next important component here: analysis.  When you see this visualization you may find yourself realizing that I don’t draw any conclusions.  For this collection of visualizations I am playing the role of curator.  I am developing a visual world for you to interact with, to go deep and wide in your understanding.  I am not attempting to summarize data for you or force conclusions upon you.  I am inviting you to come into the world of Star Trek, unearth who speaks during each episode, find out what that character is saying.  I want there to be an unending number of takeaways and perceptions generated from this.

And the last part you need to understand is the story telling.  This entire visualization has an untold number of stories in it by virtue of it being a visualization of the entire series.  If you want a meta-story to tell it’s simply this: Star Trek The Next Generation is such a deep and rich world that you should go get lost.  And while you’re on the path of getting lost do me a favor: retain some leadership tidbits from Picard and sprinkle in some logical takeaways from Data.

 

Azure + Tableau Server = Flex

I’m affectionately calling this post Azure + Tableau Server = Flex for two reasons.  First – are you a desktop user that has always wanted to extend your skills in Tableau as a platform?  Or perhaps you’re someone who is just inherently curious and gains confidence by learning and doing (I fall into this camp).  Well then this is the blog post for you.

Let me back up a bit.  I am very fortunate to spend a majority of my working time (and an amount of my free time!) advocating for visual analytics and developing data visualizations to support the value it brings.  That means doing things like speaking with end users, developing requirements, partnering with application and database owners/administrators, identifying and documenting important metrics, and finally (admittedly one of the more enjoyable components) partnering with the end user on the build out and functionality of what they’re looking for.  A very iterative process to get to results that have a fair amount of communication and problem solving sprinkled in to pure development time – a lucky job.  The context here is this: as soon as you start enabling people to harness the power of data visualization and visual analytics the immediate next conversation becomes: how can I share this with the world (or ‘my organization’).  Aha!  We’ve just stepped into the world of Tableau Server.

Tableau Server or Tableau Online bring the capabilities to share the visualizations that you’re making with everyone around you.  It does exactly what you want it to do: via a URL share interactive and data rich displays.  Just the thought of it gets me misty-eyed.  But, as with any excellent technology tool it comes with the responsibility of implementation, maintenance, security, cost, and ultimately a lot of planning.  And this is where the desktop developer can hit a wall in taking things to that next level.  When you’re working with IT folks or someone who may have done something like this in the past you’ll be hit with a question wall that runs the entire length of every potential ‘trap’ or ‘gotcha’ moment you’re likely to experience with a sharing platform.  And more than that – you’re tasking with knowing the answers immediately.  Just when you thought getting people to add terms like tooltip, boxplot, and dot plot was exciting they start using words like performance, permissions, and cluster.

So what do you do?  You start reading through administration guides, beefing up your knowledge on the platform, and most likely extending your initial publisher perspective of Tableau Server to the world of sever administrator or site administrator.  But along the way you may get this feeling – I certainly have – I know how to talk about it, but I’ve never touched it.  This is all theoretical – I’ve built out an imaginary instance in my mind a million times, but I’ve never clicked the buttons.  It’s the same as talking through the process of baking and decorating a wedding cake and actually doing it.  And really if we thought about it: you’d be much more likely to trust someone who can say “yeah I’ve baked wedding cakes and served them” opposed to someone who says “I’ve read every article and recipe and how-to in the world on baking wedding cakes.”

Finally we’re getting to the point and this is where Azure comes into play.  Instead of stopping your imaginary implementation process because you don’t have hardware or authority or money to test out an implementation and actually UNBOX the server – instead use Azure and finish it out.  Build the box.

What is Azure?  It’s Microsoft’s extremely deep and rich platform for a wide variety of services in the cloud.  Why should you care?  It gives you the ability to deploy a Tableau Server test environment through a website, oh, and they give you money to get started.  Now I’ll say this right away: Azure isn’t the only one.  There’s also Amazon’s AWS.  I have accounts with both – I’ve used them both.  They are both rich and deep.  I don’t have a preference.  For the sake of this post – Azure was attractive because you get free credits and it’s the tool I used for my last sandbox adventure.

So it’s really easy to get started with Azure.  You can head over to their website and sign up for a trial.  At the time of writing they were offering a 30-day free trial and $200 in credits.  This combination is more than enough resources to be able to get started and building your box.  (BTW: nobody has told me to say these things or offered me money for this – I am writing about this because of my own personal interest).

Now once you get started there are sort of 2 paths you can take.  The first one would be to search the marketplace for Tableau Server.  When you do that there’s literally step by step configuration settings to get to deployment.  You start at the beginning with basic configuration settings and then get all the way to the end.  It’s an easy path to get to the Server, but outside of the scope of where I’m taking this.  Instead we’re going to take the less defined path.

Why not use the marketplace process?  Well I think the less defined path offers the true experience of start to finish.  Hardware sizing through to software installation and configuration.  By building the machine from scratch (albeit it is a Virtual Machine) it would mimic the entire process more closely than using a wizard.  You have fewer guard rails, more opportunity for exploration, and the responsibility of getting to the finish line correctly is completely within your hands.

So here’s how I started: I made a new resource, a Windows Server 2012 R2 Datacenter box.  To do that, you go through the marketplace again and choose that as a box type.  It’s probably a near identical process to the marketplace Tableau Server setup.  Make a box, size the box, add optional features, and go.  To bring it closer to home go through the exercise of minimum requirements vs. recommended requirements from Tableau.  For a single-node box you’ll need to figure out the number of CPUs (cores), the amount of RAM (memory), and the disk space you’ll want.  When I did this originally I tried to start cheap.  I looked through the billing costs of the different machines on Azure and started at the minimum.  In retrospect I would say go with something heavier powered.  You’ll always have the option to resize/re-class the hardware – but starting off with a decent amount of power will prevent slow install experience and degraded initial Server performance.

Once you develop the resource, you literally click a button to boot up the box and get started.  It took probably 15 to 20 minutes for my box to initially be built.  More than I was expecting.

Everything done up to this point it to get to a place where you have your own Tableau Server that you can do whatever you want with.  You can set up the type of security, configure different components – essentially get down to the nitty gritty of what it would feel like to be a server administrator.

Your virtual machine should have access to the internet, so next steps are to go to here and download the software.  Here’s a somewhat pro tip.  Consider downloading a previous version of the server software so that you can upgrade and test out what that feels like.  Consider the difference between major and minor releases and the nuance between what the upgrade process will be.  For this adventure I started with 10.0.11 and ended up upgrading to 10.3.1.

The process of the actual install is on the level of “stupid easy.”  But, you probably wouldn’t feel comfortable saying “stupid easy” unless you’ve actually done it.  There are a few click through windows with clear instructions, but for the most part it installs start to finish without much input from the end user.

You get to this window here once you’ve finished the install process.

This is literally the next step and shows the depths to which you can administer the platform from within the server (from a menu/GUI perspective).  Basic things can be tweaked and setup – the type of authentication, SMTP (email) for alerts and subscriptions, and the all important Run As User account.  Reading through the Tableau Server: Everybody’s Install Guide is the best approach to get to this point.  Especially because of something I alluded to earlier: the majority of this is really in the planning of implementation, not the unboxing or build.

Hopefully by this point the amount of confidence gained in going through this process is going to have you feeling invincible.  You can take your superhero complex to the next level by doing the following tasks:

Start and Stop the Server via Tabadmin.  This is a great exercise because you’re using the command line utility to interact with the Server.  If you’re not someone who spends a lot of time doing these kinds of tasks it can feel weird.  Going through the act of starting and stopping the server will make you feel much more confident.  My personal experience was also interesting here: I like Tabadmin better than interacting with the basic utilities.  You know exactly what’s going on with Tabadmin.  Here’s the difference between the visual status indicator and what you get from Tabadmin.

When you right-click and ask for server status, it takes some time to display the status window.  When you’re doing the same thing in Tabadmin, it’s easier to tell that the machine is ‘thinking.’

Go to the Status section and see what it looks like.  Especially if you’re a power user from the front end (publisher, maybe even site administrator) – seeing the full details of what is in Tableau Server is exciting.

There are some good details in the Settings area as well.  This is where you can add another site if you want.

Once you’ve gotten this far in the process – the future is yours.  You can start to publish workbooks and tinker with settings.  The possibilities are really limitless and you will be working toward understanding and feeling what it means to go through each step.  And of course the best part of it all: if you ruin the box, just destroy it and start over!  You’ve officially detached yourself from the chains of responsibility and are freely developing in a sandbox.  It is your chance to get comfortable and do whatever you want.

I’d even encourage you to interact with the API.  See what you can do with your site.  Even if you use some assisted API process (think Alteryx Output to Tableau Server tool) – you’ll find yourself getting much more savvy at speaking Server and that much closer to owning a deployment in a professional environment.

27 Weeks of #WorkoutWednesday

27 weeks into 2017 means 27 weeks of #WorkoutWednesday.  So it is time to do some reminiscing on the experience and providing some commentary on the profound effect it has had on me.

At the end of 2016 something was abundantly clear to me: I wasn’t as fluid as I could be and I didn’t fully understand the limitless possibilities that Tableau as a tool had.  I have this very abstract concept of how working with Tableau should be for me as an individual: the canvas and tools for my artwork.  And to be honest, that sounds kind of silly coming from someone like me – but I believe it.  When I talk to people I tell them that I’m a data communicator.  I like to see what is in data and share it with the world.  More specifically: I like to share an organized view of several data points so that the end consumer can go exploring and see the beauty of the individual points.

Getting back to the point: this means that I should be capable of wielding the full depth of Tableau.  I wanted to have the ability to orchestrate anything.  I felt it was necessary.  I wanted the feeling of flow to extend.  I didn’t want my creativity to be limited by my lack of practice or time on the clock.

So I set out a few goals for myself for 2017 – 2 that I’ll share, and 1 that this post is about.  The 2 related to my professional development are pretty similar: participate in every #MakeoverMonday and participate in every #WorkoutWednesday.  Show up, do the work, share the results with the global community, and see what happens.

So here we are: 27 weeks into the year.  What has participation done for me?  It’s not enough to say that my skills have grown exponentially.  My confidence and ability to connect with individuals has also grown tremendously.  One thing I did this year in addition to this participation was to facilitate going through the results every month at the Phoenix Tableau User Group.  A critical component from my perspective: communicating out the “why” behind the build along with the “how.”  With two main goals: I would be forced to do the work consistently (selfish) and the other being that the Phoenix Tableau community would benefit and grow from the knowledge share.

Now that the foundation (context) has been set – I’d like to go through each individual workout and share its impact on me.

Week 1: Comparing Year over Year Purchasing Frequencies
I remember this one vividly because it’s the first.  There were two things in this particular Workout that I’d never done.  The first was to use the day of the year in a visualization.  The next was to have dynamic marker points based on a parameter.  One thing that was interesting about this was that I had a sense of how to do the running total calculation because of a Tableau blog post on the “top table calculations.”  Going through this workout was humbling.  It took me a significant amount of time, more time than I thought it should.  It was also the beginning of a now pattern ritual.  I know that I spent a lot of time verbalizing my problem solving process and trying to get to a solution.  And I also remember the sweet satisfaction of solving and posting it.  I was hooked after the first one.

Week 2: Showing Nothing When ‘All’ is Selected
I was really thankful for this week.  There were several things that I already knew how to do, mostly with the custom shapes and how to not show something when ‘All’ was selected.  What I didn’t know how to do well was deal with dashboard titling when ‘All’ was selected.  My past attempts usually landed me in the world of ATTR aka * land.  So going through this challenge really helped me stop and process something that I previously stumbled over.  I got an amount of confidence out of this week because it took less time than the first.

Week 3: The State of U.S. Jobs
Ah I loved this one.  Small multiples are fascinating to me.  And Andy’s blog post gave me the freedom to end up with lots of sheets – he gave mention that it wasn’t a trellis chart and I was immediately relieved.  There was a lot of formatting in this one – some really interesting tricks on how to display things that I learned.  And one that I continue to take with me is this: change row or column borders to thick white to add some padding.  I know when I downloaded Andy’s solution he had 50 sheets, I had 10.  This workout ignited something in me and I made a similar visualization regarding high school graduation rates in Arizona.

Week 4: Common Baseline Charts & NFL QBs
I really liked this Workout from a visual perspective.  I like showing massive amounts of data and then giving someone control over what is the most prominent.  This was also the second visualization that shared with me how you can use running total and baselines to show differences between categories.  This type of visualization is now something I often develop at work.

Week 5: The Distribution and Mean of NFL Quarterbacks
The math nerd inside of me loved this one.  I used to be a huge geek for box plots and I always think showing distributions of things in a visual format is very easy to interpret.  I get this mental image of looking down on a histogram and the fact that this one had the median opposed to the mean got me really jazzed.  I also remember feeling super cool because I successfully flipped the axis labels for the year to the top using a random tip ala Jonathan Drummey.  I also like this one because I had to download fonts from Google Fonts – a resource I didn’t even know was out there.

Week 6: UK Population Predictions – Trellis Butterfly Chart
The appearance of the word trellis had me cringing.  Looking at the visualization had me intrigued.  There was a LOT of depth in this one.  Knowing there was comparison to a national average and knowing that there was multiple dual-axis charts PLUS bake on the trellis component had me concerned.  You know what ended up being the worst part for me on this one?  The year labels and the tooltips.  Each LOD in that tooltip was a validation point I had to go through to determine if my calculation was accurate.  This workout made me appreciate reversing axes.

Week 7: Dynamic Trellis Chart
It finally happened.  I couldn’t fake a trellis chart anymore and hard code different row & column locations – I had to use the capabilities of Tableau to achieve.  More than that was some very sophisticated labeling that I just couldn’t get right for the life of me.  This is the only one that I gave up on.  I couldn’t figure it out and I was a little too prideful to download Andy’s workbook and USE his calculations.  I definitely downloaded and digested the process, but I didn’t feel it was authentic to me to finish the exercise – I was beaten this week.

Week 8: Marimekko Makeover
I thought this one was going to be cake.  I thought it was going to be a cake walk because I had briefly thumbed through an article about Tableau 10 and the ability to make these types of charts.  I was wrong.  The way the data was structured made it more complex.  I shared this one at the Phoenix Tableau User Group and the whole time I was concerned that the “table calculation magic” may not be repeatable.  We made that Marimekko chart.

Week 9: World Series Game 7: Pitch-By-Pitch
I love this visualization.  I love how granular it is.  I love how abstract it is.  I love that there is color and shape encoding and even negative and positive positioning.  I also really like using characters within text to denote what is being seen in a visualization – all clever things that I do now.  As I look back I remember the one sore spot for me that I decided not to correct for: the open “reached base” shape.  I didn’t put white in the middle.  Looking back I should have – I was being lazy.  I knew how to do it and that it was the right thing to do to get it “to spec.”  But the lazier side of me won out and let it go.

Week 10: Exploring UK House Prices
This one I knew I would need help on.  I’d never made a hexbin map and I didn’t know where to start.  What’s surprising is that it’s not overly complicated.  I didn’t realize that there were built in hexbin functions.  I thought there was some deep crazy skill going on anytime I saw these.  Walking through this exercise made me change my tune.  This was also an important growth week for me.  I started getting more comfortable with the idea that it wasn’t “cheating” to use community made resources as help and guidance.  Instead I was using them for their rightful purpose.

Week 11: Full Year Calendar with Month Labels
This one has another interesting story.  I completed it last weekend (the 26th week) opposed to the 11th week.  So how did that happen?  Well I remember starting it and getting stuck.  I couldn’t figure out 2 things to begin with: how to get the dates in order (which sounds really lame) and how to deal with the month labels.  This was also right around the time where I changed jobs and was trying to finish my MBA.  I think the challenge this one presented exhausted me from a mental perspective.  Week 11 was the start of my workout break (check out my tracker to see the details).  Once I completed it though, I was very pleased with the results.  I made a conscious decision to go a different path with the month labels and embed them into each month’s calendar.  I really like that I’m now comfortable going off spec and not feeling like I’m not living up to the challenge.

Week 12: Highlight a Treemap
I’ll admit it, this one was simple for me to do.  When I came back after my mental break and did this one, I laughed at why I hadn’t done it sooner.  I appreciate the simplicity of this one in development and the impact it has on making the end-user’s experience so much more pleasant.

Week 13: Benford’s Law
Another straightforward week for me from the development perspective.  When I completed this I started to realize that I know a lot.  I know how Andy typically develops and what his tricks are.  I know how to take something displayed and translate it into Tableau.  This is a workout I completed on 6/3/17.  Six months after embarking on the #MakeoverMonday and #WorkoutWednesday challenge.  The immersion was paying off in spades.

Week 14: UK Exports Pareto
I didn’t complete this one on time, but relatively close to its original time period.  I ended up sharing this one at the Phoenix Tableau User Group.  The first job I ever had at “analyzing data” I was asked during an interview to build a Pareto chart in Excel.  I memorized how to do it because I couldn’t describe the technical mechanics.  That was more than 3 years ago and feels like an eternity.  Today pareto charts are still some of the most engaging and useful visuals that I use when trying to assess a problem.

Week 15: How many times has a team been top of the Premier League?
Okay – this was just a community challenge with no hidden agenda.  One designed from my perspective to test and share the difference between table calculations and level of detail expressions.  I remember completing this and realizing that life before LODs must have been terrible.  And that there are some extremely talented problem solvers and thinkers out there who can develop solutions using the tools they have.

Week 16: Should I Buy Tableau Shares?
I remember this one vividly because it mirrored something I was doing at work.  It was a different take on a visualization I was trying to get people to accept.  I appreciated seeing window calculations for statistical values being present and giving users input flexibility.

Week 17: Product Spread Treemap (Part 1)
Intentionally named Part 1 – this one made me recognize the funny mechanics that Tableau has.  They’re really obvious when you make a treemap.  Just test it out and you’ll see that the order of pills on the marks card determines how the visual will be generated.  It also taught me an important lesson: sometimes I over complicate things.  Pre-build I had imagined the colored texts as separate worksheets, going through the build I was humbled realizing it could be one.

Week 18: Appearing and Disappearing Vizzes
This one also made an appearance at the Phoenix Tableau User Group.  And to be perfectly honest, Emma’s topics are usually much more practical for the group.  I took this one as an opportunity to explore between tiled and floating layouts.  When I demoed this to the TUG everyone loved it.  I know several users who took this back to their professional lives.  Thank you Emma.

Week 19: Product Spread Treemap (Part 2)
The agony of this one.  Andy mentioned it was going to be tough and it was.  I had a sense that there was trickery involved because of the automagic nature of treemaps seen in Week 17.  The spoiler on this one: the boxes are different sizes.  This one also made an appearance within our user group at our Saturday Viz Club.  4 members got together and collaborated on trying to build it out and downloading Andy’s solution.

Week 20: Comparing Regions
Perhaps a more appropriate name would building out bar + line charts all in one view with the bars next to each other.  This one was damning to me.  It took me a long time to parse out the ‘aha’ factor and put it into action.

Week 21: NCAA Final Score-by-Score
This was another great challenge, do everything in a single worksheet.  The biggest challenge here was the data structure.  I think if I had taken time to restructure the data set that it would have been easier to develop – but being who I am, I took it on as part of the challenge.  I realized when I finished this one that I did it a different way than Andy because I had dots everywhere and no attribute stars *.  I kind of feel like it makes mine more complete.

Week 22: Wine Tasting is Harder Than it Looks
Guess what – this was also presented at our user group!  What’s great about this is the challenges that the community faced as we built it together.  When asked before the build, most had never thought to make a visualization of this type.  When participating in the build the color legends were a huge curve ball.  Even the most tenured individuals didn’t think to make the color legend an actual sheet.  I also had a colleague tell me that he didn’t realize you could drag headers in the view to change their order – he thought that was life changing.

Week 23: National Parks Have Never Been More Popular
Simply a stunning visualization to recreate.  A bump chart, vivid use of color and text color matching line color.  I love this visualization.  I shared this on LinkedIn and got reactions from so many people.  I know it is something that has been imprinted on many many people.

Week 24: Visualising the National Student Survey with Spine Charts
I wrote a blog post on this one, so there’s a lot there.  This one is still pretty fresh in my mind.  The biggest things regarding this one are related to the mathematics under the hood.  At the way numbers can do funny things.  How at the end of this exercise I opened my version, Emma’s version, and Andy’s version and we all had different numbers for the same question response.  And we could all defend equally the reasoning and logic behind how the number was derived.

Week 25: The Value of Top 3 & Top 5 Contributors
This taught me so much about table calculations.  I use them in basic ways on a daily basis – this workout takes them to another level.  I had never thought to use a table calculation to limit the number of members within a dimension from being displayed.  Once I did it – it made perfect sense.  The order of Tableau filters immediately came to my mind.  I am still in awe of the depth and thoughtfulness here.

Week 26: UK General Election 2017 Results
Another dynamic Trellis chart – no no no.  I do not like these!  I like the presentation and layout, the slope charts, the way they look like ladders.  I like the reference lines.  I don’t like dynamic trellis.  I am not convinced that the approach to dynamic trellis can be let loose in the wild – it needs some supervision.  Comparing mine to the original I noticed how easy it was for data points to be indexed into wrong blocks.

Week 27: The Quadrant Chart
As if by fate this week’s workout resonated deeply with a visualization from my history.  More than a year ago I made a quadrant chart regarding wage gaps.  I really like that Andy took the time to color the tool tips to add effect.  It demonstrates something that I now know to be true: duplicating and iterating off of a sheet or a calculated field is something you should be doing often.  Copy and paste is your friend.  Duplicate is music to my ears.

Cheers to 27 weeks – I’m on board for the rest of the year.  As I alluded to, I made a progress tracker on my Tableau Public (and also on this site) to keep myself accountable.  While I can’t guarantee it will be done in the same week, I can say with a true heart my intention is to complete the year at 100%.

If you haven’t started the adventure of the workouts, or if you’ve done a few – I strongly encourage you to take a Saturday afternoon and go through the exercises.  Don’t look at them and lazily say “oh I could totally do that.”  DO THE WORK.  It will help you grow tremendously, unearth skill gaps, and unlock your creativity.  Thank you Andy & Emma.