Categories
Dashboards Data Tableau

Fails to Deliver and GameStop – A Look Inside

Click here to jump straight to the dashboard

You probably haven’t heard anything about GameStop in the past few years. Nope, nothing. Just a defunct retail chain where you used to be able to trade in your used video games for $3 a pop.

Sarcasm aside, the world was taken by storm a few weeks ago when GameStop stock went on a rally. With an exceptionally meteoric rise paired with high short interest, panic ensued for short sellers and smaller brokerages. This led to a rise in failures to deliver. In the most basic definition, this is one of the parties in a transaction did not deliver cash or the asset before the settlement date of the transaction.

Check out Investopedia’s definition below, and definitely read the page if you want to learn more about failures to deliver.

Whenever a trade is made, both parties in the transaction are contractually obligated to transfer either cash or assets before the settlement date. Subsequently, if the transaction is not settled, one side of the transaction has failed to deliver. Failure to deliver can also occur if there is a technical problem in the settlement process carried out by the respective clearing house.

https://www.investopedia.com/terms/f/failuretodeliver.asp

The SEC publishes data on failures to deliver twice every month. At the time of this posting, they had data released up to January 15th, 2021 (update: on Feb 16th I updated this with the SEC data up to January 29th, 2021). This unfortunately doesn’t capture the most extreme part of the GameStop stock price explosion, but captures other volatile periods in the stock’s history. I’ll update the visualization when the data becomes available.

In this dashboard, I wanted to see the correlation between price increases and fails to deliver. Also I was interested in seeing what the comparison was between the average of all stocks reported fails to deliver versus GameStop. Check out the visualization below to see what I came up with. It’s interactive and best viewed on desktop (but has a mobile configuration as well).

The Dashboard

p.s. if you know what stonks are then you know it’s not a misspelling. If not, don’t worry about it and enjoy the ride 🚀🚀🚀

One last note is that this project was a great way for me to practice my Python skills. SEC.gov provided the files in two week chunks, each as a zip file. I made a quick Python script to download all of the data for the last year, unzip the folders, append all of the text files to each other, and output a nice csv to use in Tableau. Python is a semi-frequent skill for me so it’s always nice to have a quick touch-up project like this.

If you’re looking to learn Python, a project like this is a simple way to learn a real world use. Don’t be afraid to jump into projects like this. Break it down into tiny steps and complete one at a time.

Thanks for reading. Any questions or comments? Feel free to reach out to me via email on my contact page.

Categories
Tableau Tips

My Top 5 Quick Tips for Speeding Up Development in Tableau Desktop

Making the leap from beginner to intermediate, and intermediate to expert in any skill requires attention to small details. This includes paying attention to nuances in the way the skill is conducted. Tableau development is no different. What are some ways that a Tableau developer can hop into the next echelon of skill? I’ve compiled five of my favorite quick tips to speed up your workflow and take development to the next level.

1. Using a template workbook for common formulas, dashboard layouts, etc.

Unfortunately (or fortunately), you’ll be doing a lot of the same type of stuff while building different workbooks in Tableau. Certain things are done in many dashboards, things like:

  • Certain calculations
    • Year-Over-Year
    • Year-To-Date
    • Month-To-Date
    • Percent difference
    • INDEX( )
  • Certain views
    • BAN (Big Ass Numbers)
    • Highlight tables
    • Customized maps
  • Dashboard layouts

There are a couple methods you can use with template workbooks to be more efficient. First, you can swap out the data source and replace fields with your desired data source fields in order to use the template workbook exactly as it is. Secondly, you can copy and past specific calculated fields, parameters, sheets, dashboards, and more from the template workbook into the target workbook.

This methodology really comes in handy when building more complex visualizations. Things like radial bar charts, Sankey diagrams, waterfall charts, etc. These can be time-consuming builds that aren’t frequently created, meaning it’s difficult to get efficient at building them.

2. Using the control key (or command key for Mac) to duplicate things and select multiple objects instead of the context menu

Did you know Tableau let’s you duplicate and select pretty much anything using the control/command key?

  • Press and hold it while clicking and dragging a pill in order to duplicate it.
  • Press and hold it while clicking and dragging a pill onto one of the marks cards (color, size, etc.) in order to duplicate it as a different mark attribute.
  • Press and hold it while clicking and dragging a worksheet to duplicate it.
  • Press and hold it while clicking and dragging a dimension in the data pane to the measure area in order to create a count of that dimension field.
  • Hold control/command while clicking on worksheets, fields, or pills to make bulk actions

3. Utilize context menus instead of the menu bar

You might be tempted to create and edit calculated fields, format specific fields or elements, and do other things using the menu bar. It’s more efficient though to use context menus in their localized areas.

For example, right click on a field in the data pane and then click “Calculated Field in the “Create” menu in order to have the context field inputted into the calculated field formula window. A parameter would be similar in function. Basically a contextually created parameter would be automatically configured with that field’s relevant values as the list of values for the parameter.

4. Drag and drop things instead of using context menus

This tip is usually targeted at beginners. To remove pills from the view, there is no need to right-click each pill and then click remove. Instead just click and drag the pill out of the view to remove it. Use control/command to select multiple elements (or shift to select multiple sequential elements) and drag them off the view to remove them.

On a similar note, you can drag and drop fields onto specific parts of the view (columns, rows, marks, filters, pages, etc.) in order to get the desired visualization. Double clicking a field to add it to the view and then moving the field around can be much less efficient.

5. Copy and Paste Formatting

Make a change to one of your bar chart views? Need those changes in all of your other bar chart views in the workbook? Don’t event think about repeating the formatting manually!

Tableau offers a great functionality to copy and paste formatting, just like in Excel. Simply right click the target worksheets.


That’s it, thanks for reading!

Categories
How-To Tableau Tips

Quick Tip: Filtering and Searching in Tableau’s Data Pane

Did you know that Tableau Desktop has the option to filter the data pane by field types on top of just their names? With the introduction of data models in Tableau Desktop, I see a lot of users frustrated with the seemingly crowded data pane. Before the data model, you used to have dimensions and measures in separate sections in the data pane, but now everything is grouped by tables of your data source. The good news is that Tableau actually still has an intuitive way to quickly see the fields you need.

As of 2020.3 you can filter your searches by 4 different queries:

C: filters for calculated fields
M: filters for measures
D: filters for dimensions
F: filters by comments

By typing C: or any of the other options at the beginning of your search, you’ll filter all of the fields based on that category. After the type filter, just put the field name you’re looking for to filter further.

There are technically two ways to filter your searches. You can manually type in the values above, or you can use the filter button located to the right of the search bar. Take a look at the GIF below to see.

Here we manually select the filter type using the button to the right.

That’s all there is to it! Tableau has some great documentation on further things you can do in the data pane as well, take a look: https://help.tableau.com/current/pro/desktop/en-us/datafields_dwfeatures.htm

This has been a quick tip that will hopefully make your Tableau Desktop development workflow a little easier. Make sure to check out the other quick tip articles to level up your development!


If you found this post helpful, subscribe below! I’ll be releasing some tutorial videos soon, and my subscribers will be the first to see them!

Processing…
Success! You're on the list.
Categories
Meta Tableau

Some awesome new features announced at Tableau Conference-ish 2020

This post will be relatively short. There were a few announcements at Tableau Conference-ish over the first couple days that are a huge deal for Tableau Desktop developers. These new feature announcements are certainly not exhaustive but are in my opinion, the highest impact.

Big map changes

Unlimited map layers

This means you aren’t limited to a single analysis that depends on size and/or color of map marks. This really opens up the number of options developers have in creating impactful and insightful maps.

This new feature might raise the question; how can you have multiple layers and a good user experience due to Tableau’s standard interactivity on worksheet?

You can now disable selections on maps

No more inadvertent highlighting and unwanted interactivity. Turn off selections in maps in order to provide a better user experience. This will greatly improve mobile UX due to the tapping and scrolling nature of mobile devices. This will avoid some common frustrations associated with the maps UX.

Reorder layers

With multiple layers, you’ll want to be able to control which one appears on the top. Tableau will be providing an easy way to drag and reorder map layers so that the desired layer order can be achieved.

Not map related, but probably the biggest news for beginner and intermediate developers: Tableau Desktop will write your LoDs

You read that right! If you’ve had trouble building level of detail calculations, Tableau is going to help out with that. You’ll be able to select dimensions and measures by holding control, right click, and click on “Create Level of Detail Calculation”. For more complex LOD calculations, this won’t be too big of a deal. But for people struggling to build these calculations, this functionality might bridge the gap between knowing about LODs and understanding LODs.


Enjoy the article? Subscribe to get notifications of new posts and visualizations.

Processing…
Success! You're on the list.
Categories
Tableau Tips

Quick Tip: Create and use custom color palettes in Tableau

Looking to speed up your dashboard development and add a personal touch to your dashboards? I’ve got a quick and easy tip for you. Make your own custom color palettes! Tableau Desktop allows you to modify the preferences file (found under My Tableau Repository and named Preferences.tps). You can open this file and modify its code to set up your own color palettes. Check out Tableau’s great documentation on how to set up these palettes here: https://help.tableau.com/current/pro/desktop/en-us/formatting_create_custom_colors.htm

You can set up categorical, sequential, and diverging palettes to fit any type of dimension or measure you’re looking to add a specific color to.

This will take forever to set up a custom palette, how can I do this faster?

I’m glad you asked! If you have your color palette defined, skip this section. Otherwise, check out two awesome tools that help you generate Tableau tps files with custom palettes. These generators can take images, have predefined palettes, or allow you to build the palette one by one. Just keep in mind, there is a limit of 20 colors on a palette as of 2020.3.

All you’ve gotta do is download the generated tps file, replace your existing one in your “My Tableau Repository” (just make sure you don’t have any existing customizations in there).

Bonus tip: Set the default palette to dimensions or measures in the data pane.

For both dimensions and measures, you can set the default colors for each field so you don’t have to reconfigure it on each worksheet. By right-clicking on the field, you can go to the default properties and select “Color”. Check out the short GIF I created below to see that process.

How to set the default color property for a field

That’s it, hope you enjoyed the post!


I hope this makes your development a little more efficient and enjoyable. If you enjoy the content, subscribe below to get notifications of new blog posts. I might do a giveaway soon, who knows…

Processing…
Success! You're on the list.
Categories
How-To Tableau

Fixing Empty Spaces in Tableau’s Layout Containers: Part Two

You might’ve come across my previous post about fixing empty layout containers in Tableau. That post was about fixing a specific bug when everything else is configured correctly. This post is about a few common configuration issues that are usually the issue (before encountering the bug I’ve previously discussed). Go through these bullet points to make sure they’re configured correctly before trying other solutions.

The Problem

You have a horizontal or vertical layout container. But the elements don’t automatically size correctly. Either a gap is left at the end of the container, worksheets don’t swap like they’re supposed to, or the worksheets don’t fill up the container.

The Solutions

1. Make sure the elements aren’t set to Fixed Width or Fixed Height

By activating the objects inside the container, you can see if the width or height is fixed. The little push-pin will be filled in white if width or height is fixed, or have no fill if it’s a dynamic width or height.

Click on the push-pin to fix or unfix the width or height. You can use the dropdown menu below the push-pin icon to toggle this feature as well.

Something to keep in mind: You might not see the Fix Width or Fix Height option depending on your dashboard layout, and settings for the container. If you have “Distribute Contents Evenly” checked, these won’t show up. If your container is nested in other Tiled containers or multiple other containers, they might not show up either.

2. Activate each sheet in the container and set the sizing to Entire View, Fit Width (if a horizontal container), or Fit Height (if a vertical container)

Make sure each worksheet object is set to fit to the appropriate dynamic option. There are two places you can do this on the dashboard.

In the dropdown menu of the worksheet object:

The object’s menu has tons of useful configurations

Or in the bar at the top of the window:

This dropdown will work too

The following points are relevant if you’re doing a sheet swap

3. Hide all the titles of the worksheets

Right click all of the sheet titles in the container and hide them. If you need them to be there, create a text box with dynamic text based on which sheet is visible.

4. Make sure there is a discrete field on either your rows or columns for the sheets involved in the swap

Go back to the individual worksheets that are in your container. Make sure they have a discrete pill on rows or columns. This should be a static field with a single value and should be set as discrete. I use a static field with the value MIN(0) set as discrete. Then right click the field and deselect “Show Headers”. This will make the field disappear from the view.

Right click the pill and deselect “Show Header”

Processing…
Success! You're on the list.

If none of these options work for you, feel free to check out the older post that goes through the bug fix. And if that doesn’t work, reach out to me and I’d be happy to help you troubleshoot!


Did you find this content useful? Join the email list to get notifications of new posts.

Processing…
Success! You're on the list.
Categories
Tableau Tips

Quick Tip: Use the SIGN() function in Tableau for easy color indicators

If you’ve ever developed KPIs or BANs on a Tableau dashboard, there’s a chance you’ve also implemented color indicators for those numbers. Green being good, red being bad, and gray being neutral. This color indicator might also exist in your bar charts to show YoY changes or whether a goal was met for a specific metric. These indicator calculated fields can also be used to assign shapes like directional arrows, emojis, or any other shape. Whatever the case, there’s something I see beginners doing relatively frequently (and even some more experienced developers) that is additional work for no reason.

Using the Superstore data, it’s usually something like this:

Old Way to Color Things
IF SUM([Sales]) - LOOKUP(SUM([Sales]),-1) > 0 THEN "Increase"
ELSEIF SUM([Sales]) - LOOKUP(SUM([Sales]),-1) < 0 THEN "Decrease"
ELSE "Neutral"
END

or

IF SUM([Sales]) - LOOKUP(SUM([Sales]),-1) > 0 THEN TRUE
ELSEIF SUM([Sales]) - LOOKUP(SUM([Sales]),-1) < 0 THEN FALSE
ELSE NULL
END

The first version should be avoided because it uses strings in the calculated field. Strings perform slower than integers and booleans and will start impacting dashboard performance the more complex your data and dashboards get.

The second version isn’t too bad (and the equivalent using integers as the resulting values), but still makes calculations more verbose than necessary.

So how you should you achieve this desired indicator functionality?

Using the SIGN function you can achieve the same results with a single line.

New Way to Color Things
IF ZN(SIGN(SUM([Sales]) - LOOKUP(SUM([Sales]),-1)))

It automatically assigns a -1 for negative values, 0 for zero values, 1 for positive values and null for records that don’t evaluate. You can wrap the SIGN function around your entire calculation. On top of this, I would suggest wrapping that SIGN function with a ZN function like in the example. The ZN function will return the expression if it is not null, otherwise it returns a 0 value. Essentially this will eliminate null values from your SIGN function. Sometimes the null is desirable (you want to color specific marks that don’t evaluate) and sometimes you just want to color all null marks the same as zero.

Dashboard Example

The dashboard below is best viewed on a PC or tablet, but there is a mobile view for it as well.

What are the drawbacks?

Since you’re using a whole number as a data type, you can’t easily edit the aliases to make a human-readable string. Obviously making a human-readable string brings us back to the string data type which could negatively impact performance on large data sets. You could use the SIGN function calculated field in another calculated field to represent -1, 0, and 1 as your desired string. This isn’t the best to do either because now you’re nesting calculations and making the workbook a little more complex for the poor soul who inherits it in the future (very likely your future self).

One way to get around this is to just make a dummy legend that shows the color of the SIGN calculated field and what it pertains to (increase, decrease, steady). This won’t give a text value in the tooltip unfortunately, but that shouldn’t be necessary.

TL;DR

Use the SIGN function instead of IF ELSEIF functions to significantly reduce your calculation length. Wrap it with ZN if you only want three indicators (-1, 0, 1) or don’t wrap it with a ZN function if you want four indicators (-1, 0, 1, and NULL).

Pros: Simpler and less verbose calculated field, whole number data type for better performance than strings

Cons: Results in whole number so can’t directly alias


I hope this makes your development a little more efficient and enjoyable. If you enjoy the content, subscribe below to get notifications of new blog posts. I might do a giveaway soon, who knows…

Processing…
Success! You're on the list.
Categories
Tableau Tips

Top 5 Quick Tips for Better Tableau Dashboard Performance

There are hundreds of blog posts, articles, and checklists about improving Tableau dashboard performance. I personally don’t like reading through lengthy posts, watching long videos, or drilling through checklists just to have a list of 100 things to check. So I’ve compiled the five most impactful performance tips to make your dashboards run faster instantly.

1. Change data sources from Live to Extract

If you don’t absolutely have to use a live connection, don’t. Tableau’s Hyper is a best-in-class data engine, use it. You’ll see faster dashboards instantly in 90% of cases.

2. Minimize the number of marks on your dashboard

500,000 marks on your map of the United States is going to take a few seconds. 500,000 marks that use calculated fields is going to take even longer. Only show the most relevant data and know what to exclude. This means not dragging every dimension in your data onto the canvas.

3. Simplify your calculations, remove or reduce nested calculations

If you’re referencing a calculated field in a calculated field, your performance will degrade. Once your data gets to a certain size and your 5 nested calculations deep, you can kiss your UX ratings goodbye. If you can, try to reference terminal fields in a calculation, even if that means making one big calculation. Just pay attention to your aggregations and order of operations.

Use REGEXP for string calculations if you can. By doing this you avoid Tableau having to do something like a CONTAINS calculation multiple times.

If you can’t use REGEXP formulas, use CASE expressions rather than massive IF statements with a bunch of ORs.

Check out Tableau’s official documentation if you want to learn more: https://help.tableau.com/current/pro/desktop/en-us/calculations_calculatedfields_bestpractices.htm

4. Reduce the number of worksheets on your dashboard

Either split off your worksheets into different dashboards, or find a different way to communicate your message with less worksheets. The more marks and worksheets on your dashboard, the more processing Tableau has to do. Aim for 5 or less as a rule of thumb.

5. Use filters, not too much, and don’t set them all to “relevant values”

Ok, so this one is probably the most difficult for me to follow when building. But it’s easy to remove filters for a quick performance boost. If the filter doesn’t absolutely need to be there, get rid of it. If it doesn’t have to be relevant, don’t make it “relevant values”. It just adds to what Tableau has to calculate and render, which adds precious seconds to load time (especially with large data sets).

I hope this gave you a quick win in making your dashboards faster. Have any other really quick tips to make Tableau faster? Feel free to comment them below, I’d love to learn.


Enjoy the content? Subscribe below to get notifications of new blog posts. I might do a giveaway soon, who knows…

Categories
Meta Tableau

Top 5 Most Impactful Tableau Server 2020.3 Features

Recently I made a post on the 5 most impactful Tableau Desktop features released in 2020.3. Now it’s time for Tableau Server! Tableau released 20 new features for Tableau Server. Most of these features are also applicable to Tableau Online as well (if you were wondering). This post will go over the 5 features that will have the most impact on both developers and users interacting with Tableau Server. I’ve ranked them in the order of the biggest impact for users or developers based on the size of the problem the feature solves.

Keep in mind, Tableau categorizes some of its new features in multiple categories (like Tableau Desktop and Tableau Server for the IN operator). I’ve not included features I covered already in my Tableau Desktop 2020.3 post, so go take a look if you’re curious what those are. This makes sense because features aren’t made in a bubble usually, and will have an impact on other parts of the Tableau stack. It just might be a little confusing at first if you aren’t aware of the interactions between the different Tableau pieces.

1. “Shared with me” tab

Navigation on Tableau Server and Tableau Online can be frustrating at times. The UX has significantly improved over the years and this new feature is another giant leap forward. Now there is a dedicated tab on the left navigation bar that lets you see all materials shared with you on the site (including views). This is kind of like Google Drive and streamlines navigation to critical content.

Why it’s important: Better navigation for both experienced and novice Tableau Server users.

Screenshot from Tableau.com

2. Grant license on sign-on

If you haven’t been a Server admin, it’ll be difficult to appreciate this one. If you have been one (especially of a large organization), get the champagne ready. Now you can set up your Server to have specific users, teams or departments to automatically be assigned a license on first login.

Why it’s important: Thousands of users? A revolving door of users? No problem, automatic license assignment for first sign-ons. Thousands of man hours saved.

3. Web authoring improvements

The new features include relative date filters, and creating/editing/removing data source and viz filters in the browser.

Tableau continues its alignment with modern tools by beefing up its web authoring capabilities. It’s still a far cry from Tableau Desktop, but the gap is shrinking (slowly). More and more customers are looking towards web authoring rather than full Desktop licenses, and this will make those customers happy.

Why it’s important: For anyone trying to do more than the very basic visualization, web authoring is a no-go with its limited feature set. These new capabilities raise the limitation ceiling ever so slightly.

4. Subscription timing with extracts

The subscriptions feature has been one of the most popular features I’ve introduced to clients utilizing Tableau Server and Tableau Online. People are used to seeing things in their inbox on a regular basis, and they always want the same capabilities with their dashboards. A constant challenge is making sure that data refreshes and subscription emails sync up correctly. Subscriptions that trigger too early means stale data for end users.

This new feature from Tableau enables subscriptions to only trigger once data is done refreshing. No more worrying whether timing is right.

Why it’s important: The more extracts and users you have, the more performance will vary for when extracts actually finish. By making subscriptions have a type of sequential firing option that only happens after extracts complete, the guesswork is removed.

5. New connectors in the extension gallery

While this might not be applicable to too many people at the moment, it’s an important feature trend. Tableau is expanding its extension gallery to include connectors made by third parties. This will slowly minimize the effort of connecting to data for analysis.

Like Zapier or similiar tools, opening the platform to support third party extensions will only grow adoption and options for developers.

Why it’s important: If you’ve ever run into a data source that doesn’t have an out of the box connector in Tableau, it can be a decent amount of extra work to get everything working right.

What are your thoughts on the new releases in Tableau 2020.3 Server and Online? Do you think Tableau is on the right path in their development efforts? The company continues to actively seek user feedback and has been implementing the most requested features. What would you like to see improved next?

Categories
Meta Tableau

Top 5 Most Impactful Tableau Desktop 2020.3 Features

Tableau released 2020.3 on August 12th, 2020 with 12 new features for Tableau Desktop. All are useful, but these are the 5 that will have the most impact on developers’ workflow and capabilities in my opinion when creating dashboards. I’ve ranked them in the order of the biggest impact for developers and the challenges or questions they face frequently.

1. The IN operator for calculations

Ever do giant IF or CASE statements with nested CONTAINS? Well your life just got a little easier. You can now use the IN operator to compare a field to a list of values.

Why it’s important: Easier readability, shorter and more efficient calculations.

2. Search improvements in the data pane

With the new Relationships features and data modeling capabilities, the data pane had to be redesigned to allow for multiple tables. This removed the separation in the pane between dimensions and measures. That was quite a shock to many Tableau users as it was an efficient way to separate those field types. In 2020.3, there is now the ability to filter your fields in the data pane by field name, type, or comments. It still feels like a compromise but after a few weeks of use, it probably won’t even be a noticeable difference from the original data pane.

Why it’s important: The new data pane to handle Relationships felt like a step back. This is a step forward in making the data pane easy to use again.

3. Relationship improvements

If you’ve jumped into the new Relationships feature earlier in 2020, you’ll quickly realize its powers, and quickly realize its (few) shortcomings. One of these shortcoming has been fixed in 2020.3. You’ll now be able to relate tables using calculated fields and/or using inequality operators (like <>).

Why it’s important: Running into the serious limitations of operators or calculated fields in earlier versions minimized the usefulness of Relationships. These improvements significantly expanded Relationships use cases again.

4. Predictive modeling functions

I really wanted to put this one higher, but ultimately most developers still won’t get into predictive modeling. I’d highly recommend adding general predictive modeling skills to your toolbox with something like Python, but ultimately predictive modeling inside Tableau will be great as well.

Why it’s important: Making the leap from descriptive to predictive and prescriptive analytics provides huge value to your users and customers. This new feature makes the gap between descriptive and predictive much smaller to bridge.

5. Additional viz export capabilities

Users are always requesting various ways to export dashboards and their underlying data. Back in the day, strange hacks and/or extensions would have to be used to provide the desired output. With 2020.3, you’ll be able to export crosstabs from dashboards into Excel formats to preserve formatting, provide easy export buttons for this feature, and customize PDF subscription layouts for your dashboards.

Why it’s important: This new feature expands the export capabilities, showing that Tableau is still focused on improving some of the most frequent end user requests.

What are your thoughts on the new releases in Tableau 2020.3? Do you think Tableau is on the right path in their development efforts? The company continues to actively seek user feedback and has been implementing the most requested features. What would you like to see improved next?