Tableau: How to find the most important variables for determining Sales

Random Forest Animation
Interactive dashboard displaying the most important variables for determining the Sales measure in Tableau 10.0 (click screenshot to enlarge)

During the Q&A session of a recent talk on Data Strategy, I was challenged with a rather technical question: I was asked how to identify the variables that are heavily influencing a certain measure – with an interactive solution that matches a modern data strategy as suggested in my presentation.

Of course, this could be done by executing a script. The result however would be static and it would be not convenient for a Business Analyst to run it over and over again. Instead of applying a script every time the data changes, it would be much more innovative to get the answer immediately with every data update or interactivity such as a changed filter.

So why not solve this with Tableau? The magic underneath this easy-to-use Tableau dashboard is a nifty R script, embedded in a calculated field. This script calls a statistical method known as Random Forest, a sophisticated machine learning technique used to rank the importance of variables as described in Leo Breiman’s original paper.

The Tableau Packaged Workbook (twbx) is available here. Do you have more ideas or use cases? Feel free to leave a comment or send me an email:

Enabling Multi-Language Sentiment Analysis

Have you seen how easy it is to integrate sentiment analysis in your Tableau dashboard – if your text is in English?

Until now the sentiment package for R only worked with English text. Today, I released version 1.0 of the sentiment package that features multi-language support. In order to perform sentiment analysis with German text, just add the parameter language="german" as shown in this example:

German sentiment analysis

The new code allows you to add any language. So far, I started to prepare German sentiment files. French and Spanish are coming…

4 Methoden um mit Predictive Maintenance Kosten zu senken

Predictive Maintenance Dashboard auf Tableau Mobile und IoT Realtime Feed auf Tableau Desktop
Predictive Maintenance Dashboard auf Tableau Mobile und IoT Realtime Feed auf Tableau Desktop

Instandhaltungskosten machen einen großen Teil der Fertigungskosten aus. Je nach Industrie werden die Instandhaltungskosten auf 15 bis 60 Prozent der Gesamtkosten geschätzt.

Das Ziel von Predictive Maintenance (PdM), der vorausschauenden Instandhaltung, ist es vorherzusagen wann eine Maschine ausfällt. Wird Predictive Maintenance als Instandhaltungsstrategie eingesetzt, werden Maschinen nur noch gewartet, sobald ein Ausfall vermutlich eintreten wird. Somit hilft Predictive Maintenance die Instandhaltungskosten deutlich zu senken.

Jene Vorhersagen, die häufig im Kontext mit Industrie 4.0 gesehen werden, lassen sich auf Grundlage folgender Fakten treffen:

  • Aktuelle Sensordaten: Wie verhält sich die Maschine gegenwärtig?
  • Historische Sensordaten: Wie hat sich die Maschine in der Vergangenheit verhalten?
  • Benachbarte Sensordaten: Wie haben sich andere, ähnliche Maschinen verhalten?
  • Instandhaltungsprotokoll: Wann wurde die Maschine zuletzt gewartet oder getauscht?
  • Instandhaltungsempfehlung: Welche Wartungsintervalle empfiehlt der Hersteller?

Solche Daten aus dem “Internet der Dinge” (IoT) lassen sich nun nicht ohne weiteres sinnvoll auf einem Dashboard darstellen. Ein Blick auf die bloßen Daten lässt hier kaum Schlüsse zu. So ist es für erfolgreiches Predictive Maintenance essentiell, dass statistische Methoden wie diese angewandt werden:

1. Mustererkennung: Das Erkennen von Abhängigkeiten zwischen bestimmten Ereignissen und Ausfällen von Maschinen zeigt zum Beispiel auf, dass eine Maschine ausfällt, die durch die Verarbeitung eines bestimmten Materials besonders belastet worden ist.

2. Trendmodell: Der Trend gibt den Verlauf der Zeitreihe bis zum Ausfall der Maschine wieder. Die Modellierung erfolgt mit Hilfe verschiedener Regressionsansätze und umfasst eine Trendkomponente, eine Saisonkomponente und eine Rauschkomponente.

3. Ereigniszeitanalyse: Die Analyse historischer Daten zu Ausfällen liefert ein weiteres Modell, das gegen aktuelle Messdaten gelegt werden kann, um damit die Dauer bis zum nächsten Ausfall bestimmen zu können.

4. Kritische Schwellwerte: Die Prüfung, ob bestimmte Schwellwerte überschritten worden sind. Solche Schwellwerte werden initial von Experten festgelegt, können aber später durch Maschinelles Lernen korrigiert werden.

Diese Methoden lassen sich zum Beispiel in R implementieren. Die Resultate zeigen konkrete Handlungsempfehlungen und eignen sich somit ausgezeichnet für Dashboards, die auch auf Tablets oder Smartphones gut zur Geltung kommen und fortlaufend aktualisiert werden.

Welche Daten und Methoden nutzen Sie für Ihre Instandhaltungsstrategie? Ich freue mich auf Kommentare und Anregungen.

: Predictive Maintenance mit Tableau wird außerdem auf der CeBIT 2016 am Stand der Deutschen Telekom im Rahmen von “Echtzeit-Analysen von Maschinendaten und externen Datenquellen” vorgestellt:

How to implement Sentiment Analysis in Tableau using R?

Interactive sentiment analysis with Tableau 9.2
Interactive sentiment analysis with Tableau 9.2

In my previous post I highlighted Tableau’s text mining capabilities, resulting in fancy visuals such as word clouds:

Today I’d like to follow up on this and show how to implement sentiment analysis in Tableau using Tableau’s R integration. Some of the many uses of social media analytics is sentiment analysis where we evaluate whether posts on a specific issue are positive, neutral, or negative (polarity), and which emotion in predominant.

What do customers like or dislike about your products? How do people perceive your brand compared to last year?

In order to answer such questions in Tableau, we need to install an R package that is capable of performing the sentiment analysis. In the following example we use an extended version of the sentiment package, which was initiated by Timothy P. Jurka.

The sentiment package requires the tm and Rstem packages, so make sure that they are installed properly. Execute these commands in your R console to install sentiment from GitHub (see alternative way to install at the end of this blog post):


The sentiment package offers two functions, which can be easily called from calculated fields in Tableau:

Screenshot 2016-01-31 15.25.24 crop

The function get_polarity returns “positive”, “neutral”, or “negative”:

get_polarity(.arg1, algorithm = "bayes")
, ATTR([Tweet Text]))

The function get_emotion returns “anger”, “disgust”, “fear”, “joy”, “sadness”, “surprise”, or “NA”:

get_emotion(.arg1, algorithm = "bayes")
, ATTR([Tweet Text]))

The sentiment package follows a lexicon based approach and comes with two files emotions_english.csv.gz (source and structure) and subjectivity_english.csv.gz (source and structure). Both files contain word lists in English and are stored in the R package library under /sentiment/data directory.

If text is incorrectly classified, you could easily fix this issue by extending these two files. If your aim is to analyze text other than English, you need to create word lists for the target language. Kindly share them in the comments!

Feel free to download the Packaged Workbook (twbx) here.

: If you are having trouble with install_github, try to install directly form this website:


How to perform Text Mining at the Speed of Thought directly in Tableau?

Interactive real-time text mining with Tableau 9.2
Interactive real-time text mining with Tableau 9.2

When I was doing text mining, I was often tempted to reach out for a scripting language like R, Python, or Ruby – and then I feed the results into Tableau. Tableau served as a communications tool to represent the insights in a pleasant way.

Wouldn’t it be handy to perform text mining and further analysis at the speed of thought directly in Tableau?

Tableau has some relatively basic text processing functions that can be used for calculated fields. This is, however, not enough to perform text mining such as sentiment analysis, where it is required to split up text in tokens. Also Tableau’s beloved R integration will not help in this case.

As a workaround, I decided to use Postgres’ built-in string functions for such text mining tasks, which perform much faster than most scripting languages. For the following word count example, I applied the function regexp_split_to_table that takes a piece of text (such as a blog post), splits it by a pattern, and returns the tokens as rows:

, regexp_split_to_table(lower(post_content), '\s+') as word
, count(1) as word_count
group by
guid, word

I joined this code snippet as a Custom SQL Query to my Tableau data source, which is connected to the database that is powering my blog:

Screenshot 2016-01-14 15.34.46

And here we go, an interactive word count visualization:


This example could be easily enhanced with data from Google Analytics, or altered to analyse user comments, survey results, or social media feeds. Do you have some more fancy ideas for real-time text mining with Tableau? Leave me a comment!

: How to identify Twitter hashtags? Do I need another RegEx?

Another regular expression via a Custom SQL Query is not required for identifying words within tweets as hashtags. A simple calculated field in Tableau will do the job:

CASE LEFT([Word], 1)
WHEN "#" THEN "Hash Tag"
WHEN "@" THEN "User Reference"
ELSE "Regular Content"

Looking for an example? Feel free to check out the Tweets featuring #tableau Dashboard on Tableau Public and download the Packaged Workbook (twbx):

Tweets featuring #tableau Dashboard

Any more feedback, ideas, or questions?