Połączenie Tableau z R - praca z ramkami danych

         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

Nazwa

Alteryx,8,astrafox,1,ASTRAFOX ACADEMY,16,case study,16,Data Science,44,Konferencje,31,Mapy i geokodowanie,6,Opinie,1,Przygotowane danych - ETL,4,R,4,Tableau,202,Tips & Tricks,61,Wizualizacja danych,50,
ltr
item
Polski blog Tableau - ASTRAFOX: Połączenie Tableau z R - praca z ramkami danych
Połączenie Tableau z R - praca z ramkami danych
https://4.bp.blogspot.com/-KF0pcE2E2G8/VkERHPIKwiI/AAAAAAAAALA/0A9gIg6RLd0/s640/diagram%2BTableau%2B%252B%2BR.png
https://4.bp.blogspot.com/-KF0pcE2E2G8/VkERHPIKwiI/AAAAAAAAALA/0A9gIg6RLd0/s72-c/diagram%2BTableau%2B%252B%2BR.png
Polski blog Tableau - ASTRAFOX
http://blog.tableau-software.pl/2015/04/poaczenie-tableau-z-r-praca-z-ramkami.html
http://blog.tableau-software.pl/
http://blog.tableau-software.pl/
http://blog.tableau-software.pl/2015/04/poaczenie-tableau-z-r-praca-z-ramkami.html
true
9139349578575077505
UTF-8
Załadowano wszytskie posty Nie znaleziono żadnych postów ZOBACZ WSZYSTKIE Czytaj więcej Odpowiedz Usuń komentarz Usuń Napisane przez Home STRONY POSTY Zobacz wszystko POLECANE ETYKIETA ARCHIWUM SZUKAJ WSZYSTKIE POSTY Nie znaleziono tematów ani postów pasujących do twoich kryteriów Powrót Niedziela Poniedziałek Wtorek Środa Czwartek Piątek Sobota Nd Pon Wt Śr Czw Pt Sob Styczeń Luty Marzec Kwiecień Maj Czewiec Lipiec Sierpień Wrzesień Październik Listopad Grudzień Styczeń Luty Marzec Kwiecień Maj Czerwiec Lipiec Sierpień Wrzesień Październik Listopad Grudzień teraz minutę temu $$1$$ minutes ago godzinę temu $$1$$ hours ago wczoraj $$1$$ days ago $$1$$ weeks ago ponad 5 tygodni temu Obserwujący Obserwuj TO JEST TREŚĆ PREMIUM Udostępnij, by odblokować Kopiuj cały kod Zaznacz cały kod Cały kod został skopiowany Nie można skopiować kodu / tekstu, naciśnij [CTRL]+[C] (or CMD+C w Mac) by skopiować