Kom igång: Tableau och Python

10 september 2018

Att Tableau och Python är som ler och långhalm har du kanske hört, och det stämmer. Men hur får man det att fungera rent tekniskt? I denna guide tänkte jag beskriva steg för steg hur man installerar Python, vad Pip är och hur det fungerar samt hur man installerar TabPy (Tableau Python Server) och skriver sina första calculated fields med Pythonkod i Tableau.

Kort bakgrund till Python

Python skapades i December 1989 av Holländaren Guido Van Rossum, det var dock inte förrän Python 3.0 som släpptes 2008 som språket intog den globala programmerings-scenen.

Det är ett språk som stöder de flesta typer av programmerings-paradigmer så som procedurell, funktionell och objektorienterad för att nämna några.

I mars 2018 innehöll Python Package Index (PyPI) mer än 130.000 packet med en stor variation av funktionalitet. Här tycker jag Pythons kanske största styrka ligger: En mycket hängiven community och Pythons open source approach gör språket levande och att det hela tiden utvecklas.

Källa: https://en.wikipedia.org/wiki/Python_(programming_language)

Installera Python 3.6 och TabPy

Jag väljer för exemplets skull Python 3.6 .. det hade nog funkat med Python 3.7 också men nåja, en gammal beprövad version har sina fördelar. Observera att det var först i och med version 3 i början av 2017 som TabPy började stödjas av Python. Vilket innebär att om du googlar på ämnet så får du ganska mycket snack om Python 2.7 och hur man installerar på det gamla sättet, glöm de artiklarna.

Ladda ner en installer till Python 3.6.5 här: https://www.python.org/downloads/release/python-365/  Efter man kör igång den är det i princip bara next -> next ->  next… Det viktiga du vill få till är att sökvägen till Python.exe filen ligger i system-pathen. Detta löser du enkelt genom att gå till Kontrollpanelen -> System och säkerhet -> System -> Avancerade system inställningar -> Miljö variabler

Här ska du nu redigera din Path och lägga till sökvägen till Python.exe. Observera att sökvägarna är separerade med ; och använder ”\” som folder-separerare.

Testa att det funkar genom att skriva Python i en command prompt.

Efter Python är det dags att installera Pip, vilket är Pythons eminenta installationsprogram. Det behöver också ha en sökväg i system-pathen. Pip.exe ligger i Scripts-foldern under Python roten. Lägg in den sökvägen på samma sätt som vi la till Python.exe ovan. Prova sedan att skriva pip i en command prompt. Får du något som ser ut så här är du på rätt väg:

Nu är vi klara att installera TabPy. Notera att du inte behöver ladda ner det separat utan installationen gör man genom att öppna en command prompt som admin och skriva:

pip install tabpy-server

och därefter

pip install tabpy-client

Koppla samman Tableau med Python och TabPy

TabPy är en liten Python server som kan lyssna på anrop från en Tableau Desktop eller en Tableau Server. Oftast lyssnar den på port 9004. För att få igång servern behöver man hitta var Tabpy-servern installerades på datorn. I mitt fall lades TabPy under en väldigt lång hierarki av foldrar så jag skapade istället en bat fil på skrivbordet (Tabpy.bat) med följande innehåll

cd ”C:\Program Files (x86)\Microsoft Visual Studio\Shared\Python36_64\Lib\site-packages\tabpy_server”

call startup.bat

När jag dubbelklickar på den körs min TabPy instans igång

Jag kan nu se att något lyssnar på port 9004 så det verkar lovande.

Sista steget är nu att koppla samman min Tableau desktop klient med TabPy. I Tableau Desktop, gå till: Help -> Settings and performance -> Manage external service connection och ange localhost och 9004 och kör “test connection”

Får du något annat meddelande än detta så är något knasigt. Se över de tidigare stegen så du inte missat något.

Exempel på TabPy in action: Text sentiment analys

Nu börjar det roliga. 😃 Med alla delar på plats har vi nu möjlighet att skapa nya fält i Tableau som kan hantera Python kod och allt spännande det innebär. Till exempel kan man nu utnyttja Pythons packet för Sentiment analys av text (hur positiv eller negativ en mening är) eller Pythons packet för Churn analys (hur stor inverkan en parameter har på ett viss utfall, exempelvis att en kund lämnar en prenumeration)

I Tableau använder du funktionerna SCRIPT_REAL, SCRIPT_INT m fl för att kommunicera med Python. Här är sista delen av namnet t ex REAL eller INT den datatyp som din kod returnerar. Vi testar. Skapa ett mätvärde i Tableau som visar sentimentvärdet för en mening med hjälp av Python, så här:

Python-koden OCH FÖRKLARING RAD FÖR RAD

SCRIPT_REAL(”from vaderSentiment.vaderSentiment import SentimentIntensityAnalyzer

vs=[]

analyzer=SentimentIntensityAnalyzer()

for i in range(0,len(_arg1)):

a=analyzer.polarity_scores(_arg1[i])[‘compound’]

vs.append(a)

return vs”,ATTR([Comments]))

 

Tableau förväntar sig ett decimaltal i retur och vi säger att vi vill använda vaderSentiment

Vi skapar en array som heter vs

Vi skapar en variabel som innehåller ett objekt av typen SentimentIntensityAnalyzer

Vi skapar en for loop som går från 0 till antalet meningar i _arg1 som är det vi skickar in från Tableau

Variabeln a tilldelas en poäng beroende på hur positiv eller negativ meningen är

Vi lägger den poängen i vår vs array

Vi returnerar vår array med sentiment poäng och efter komma tecknet anger vi vilket argument som ska skickas med från Tableau. I det här fallet ett kommentarsfält

 

OBS!
Notera att vi använder vaderSentiment-paketet, detta måste finnas i ditt pythonbibliotek för att allt ska fungera. Men inga problem, det hjälper Pip till att fixa enkelt. För att importera ett bibliotek gör du så här:

  1. Öppna en command prompt med Admin rättigheter
  2. Skriv pip install vaderSentiment
  3. Klart!!

 

Nu har du skrivit din första pythonkod i Tableau och det är bara att köra på och låta fantasin flöda. Nu kan du använda dina befintliga pythonkunskaper för avancerade analyser och sedan visualisera dina resultat och upptäckter i Tableau. Jag tycker det är en fantastiskt bra kombination.

 

Vill du läsa fler tips om Tableau så titta in på Tableausektionen på bloggen. Om du hellre vill ha hjälp att lära dig så finns ett helt gäng kurser att välja på här.