W Tableau mamy możliwość łączenia się
ze środowiskiem R za pomocą pól kalkulowanych i funkcji tabelarycznych. Uzyskany wynik jest zwracany z powrotem do
Tableau w postaci wektora określonego typu i jak każda kalkulacja, może
podlegać dalszej analizie i wizualizacji.
Przypominam, że konfiguracja
połączenia wymaga zainstalowania pakietu „Rserve”. Na Polskim blogu Tableau
znajdziemy post, poświęcony uzyskaniu połączenia:
a pod etykietą Integracja
Tableau z R inne posty z przykładami zastosowań.
Standardowo
możemy pracować jedynie na wektorach, a jak powszechnie wiadomo, R jest
środowiskiem statystycznym, w którym często pracuje się na ramkach danych. Wyniki w postaci ramek nie mogą być przekazane bezpośrednio
do Tableau, zatem konieczny jest eksport danych np. do Exela czy innego formatu
obsługiwanego przez Tableau. Brzmi jak niezbyt wygodne rozwiązanie? Cały ten proces
można zautomatyzować. Szczegóły zostaną szczegółowo omówione w dalszej części
postu. Techniczne aspekty takiego połączenia zostały przedstawione na poniżej
zamieszczonym diagramie.
W Tableau łączymy się ze środowiskiem R
za pomocą pól kalkulowanych i czterech funkcji z grupy „Table Calculation”, które przyjmują jako pierwszy argument kod R (podany w
cudzysłowie), a jako kolejne dowolną liczbę zmiennych ze zbioru wczytanego do
Tableau (zmienne liczbowe
powinny być zagregowane). Uzyskany
wynik jest zwracany z powrotem do Tableau w postaci wektora określonego typu. Nazwy
funkcji są związane z typem obsługiwanych wartości:
·
SCRIPT_BOOL (od boolean) – wartości logiczne, TRUE or FALSE,
·
SCRIPT_INT (od integer) –
wartości całkowite,
·
SCRIPT_REAL – wartości
rzeczywiste,
·
SCRIPT_STR (od string) –
tekstowe.
Wyniki w postaci ramek danych nie mogą być przekazane
bezpośrednio do Tableau, zatem konieczny jest eksport danych z poziomu skryptu
R – owego, podanego jako pierwszy argument w wybranej funkcji, np. do Exela czy
innego formatu obsługiwanego przez Tableau. Ze zbiorem wynikowym łączymy się jednorazowo,
a gdy wyniki ulegną zmianie (np. na skutek operowania dynamicznymi parametrami
w Tableau, wykorzystanymi do budowy kalkulacji), zbiór ten zostanie nadpisany i
wystarczy odświeżyć połączenie za pomocą opcji Refresh, do której
skrótem jest klawisz F5.
Do
eksportowania wyników możemy wykorzystać np. funkcje z pakietów R – owych
„data.table” i „utils”. Mimo wszystko, kalkulacja musi zwrócić jakąś wartość do
Tableau. Najprostszym rozwiązaniem jest korzystanie z funkcji SCRIPT_REAL()
bądź SCRIPT_INT() i zwrócenie wartości 1. Poniżej zamieszczam przykładowy kod, który
eksportuje wykonane obliczenia, które mają postać ramki danych lub macierzy, do
pliku .csv, z wykorzystaniem funkcji write.table() z pakietu „utils”. Komentarze
w R poprzedzone są znakiem hash.
library(utils) # wczytywanie pakietu
write.table(file = "Zbior_wynikowy.csv",
x = ramka_danych_lub_macierz,
col.names = TRUE,
row.names = FALSE,
sep = ";",
quote = FALSE,
dec =
",")
1 # wartość zwrócona do Tableau
Aby skorzystać z funkcji, która znajduje
się w pakiecie, który nie wbudowany w podstawę programu R, tak jak w
przypadku pakietu „utils”, musimy jednorazowo zainstalować ten pakiet poprzez
wpisanie w konsolę programu R polecenia
install.packages("utils")
Przed każdym wywołaniem funkcji z pakietu
spoza podstawy, wczytujemy go w kodzie R – owym za pomocą komendy library().
Przypomnijmy, że funkcje
umożliwiające połączenie z R należą do grupy funkcji agregujących. Oznacza to,
że w Tableau musimy ustalić poziom agregacji, na jakiej wykona się kalkulacja.
Najprościej jest utworzyć w workbooku oddzielną zakładkę, dzięki której będziemy wywoływać
naszą kalkulację i generować zbiór wynikowy, poprzez wykorzystanie jej na
widoku do zbudowania prostej tabeli. Na przykład, gdy nie chcemy agregować zmiennych liczbowych
względem wartości konkretnego wymiaru, wybieramy jako poziom szczegółu zmienną
identyfikatorową w zbiorze (działamy wiersz po wierszu, bez agregacji).
W przyszłości na
Polskim blogu Tableau pojawią się przykłady zastosowania połączenia Tableau z
R, do pracy na ramkach danych, więc zapraszam do śledzenia bloga na bieżąco.
KOMENTARZE