Szukaj na tym blogu

Ładowanie...

2016-09-19

Korelacja po raz drugi. Tableau, Alteryx i R

O korelacji pisaliśmy 2 lata temu. Korelacja była liczona przy użyciu funkcji SCRIPT_REAL, wywołującej skrypt R, zwracający wynik będący korelacją dwóch zmiennych. Jeżeli użyjemy wymiarów, wynik można liczyć wielokrotnie uzyskując np tabele korelacji według różnych segmentów. Niestety tym sposobem nie da się stworzyć macierzy korelacji. Tableau nie potrafi pobrać z R ramki danych tylko pojedynczy element.
Można obejść to ograniczenie zapisując wyniki z R w pliku csv, które podłączamy jako nowe źródło danych. Rozwiązanie to jest uciążliwe, postanowiłem więc przygotować dane w Alteryx.

Gotowa macierz korelacji w Tableau


Zbiór danych, który chcemy przeanalizować, dotyczy wyników badań Kliniki Immunologii, Transplantologii i Chorób Wewnętrznych Warszawskiego Uniwersytetu Medycznego, udostępnionych przez dr Dariusza Sołdackiego. Zbiór zawiera 18 miar i ponad 100 obserwacji.

Wstępne przeszukanie komponentów Alteryxowych wykazało, że mamy dwie możliwości liczenia korelacji metodą Pearsona lub Spearmana.

Komponent liczący metodą Pearsona przyjmuje dowolną ilość parametrów liczbowych i zwraca macierz korelacji. Niestety uzyskana macierz jest częściowo wypełniona Null'ami. 


Konfiguracja parametrów do korelacji metodą Pearsona

Wyniki które zwraca Alteryx
Drugi z komponentów jest makrem, pobiera 2 argumenty i zwraca ich korelacje (podobnie jak w Tableau). Aby uzyskać macierz, musielibyśmy stworzyć taką strukturę danych, która pozwalałaby wykonać połączenie każdej miar z każdą.



Ponieważ nie mogłem na szybko znaleźć przyczyny wartości Null, a drugi z komponentów działał zupełnie inaczej, skłoniło mnie to do użycia R.

Alteryx ma wbudowany kompilator R i pozwala na włączanie do procesu przeliczeń w R. Dane mogą być przekazywane i zwracane jako data frame. Skrypt pisany w komponencie posiada podświetlenie składni. W trakcie tworzenia skryptu, popełniłem kilka błędów, kompilator zwracał sensowne opisy błędów. Poniżej mój przykład liczący korelacje według trzech metod dostępnych w standardowej funkcji cor. Jedyna rzecz, która wymagała odpalenia RStudio, to eksperymetny z wynikami zwracanymi przez cor. Alteryx potrzebuje na wyjściu data frame, cor zwraca matrix, stąd przekształcenie do odpowiedniego typu i dodanie w pierwszej kolumnie nazwy wierszy.

Kod R wewnątrz komponentu Alteryx liczący korelacje według różnych metod

Na koniec, przygotowałem dane do Tableau, dodając pole z metodą, tworząc union z wyników i dekomponując macierz do postaci tabelarycznej.


Czas zabrać się za wizualizacje. W pierwszym podejściu zrobiłem tabele z kółeczkami, dodałem atrybuty kolor, wielkość.


Ponieważ macierz zawiera zdublowane informacje, dodatkowo na przecięciu zawsze jest 1, więc usunąłem dolną część wraz z przecięciem przy użyciu funkcji lower.tri dostępnej w R. Do kodu R w Alteryx dodałem następującą zmianę.



Dodatkowo aby lepiej zauważyć istotne korelacje wprowadziłem możliwość włączenia kwadratu współczynnika korelacji. Wynik wygląda następująco.




















Jeżeli jesteś zainteresowany możliwościami jakie daje Tableau wypróbuj za darmo!.

2016-09-16

Wykres powierzchniowy w dwóch odsłonach


Jak przejrzyście wizualizować procentową zmianę wartości? Możliwości są dwie, a kryją się pod tym samym rodzajem wykresu - powierzchniowym. Oto przykład, jak szybko zmienić wygląd swoich danych za pomocą jednej funkcjonalności Tableau.
  • Jako przykład wykorzystamy dane o  udziale systemów operacyjnych na rynku na przestrzeni kilku miesięcy. Nasz plik jest w formacie csv. Dodajemy go do źródeł danych, następnie wybieramy Text File Properties, aby go odpowiednio sformatować.
 Zmieniamy Locale na English, aby dane zostały prawidłowo podzielone na kolumny.

  • W nowym arkuszu umieszczamy wymiar Date (dzieląc go np. na miesiące), w wierszach procentowy udział systemu (Percent of Usage). Do tego ustawiamy filtr Mobile Operating System, gdzie zaznaczamy tylko kilka systemów mobilnych. W Marks ustawiamy systemy operacyjne wg koloru. Efekt powinien być następujący:






















W tym przypadku dane występują w postaci skumulowanej. Z czego wynika, że wszystkie wybrane systemy stanowiły ponad 80% całego rynku na przełomie kwietnia i maja.

  • To samo zestawienie można przedstawić w inny sposób, wyłączając przedstawianie danych w stosie (Analysis - Stack Marks - Off). Wtedy przedstawione wyniki zachodzą na siebie. W tej wersji dane prezentują się następująco:


Tableau automatycznie decyduje, czy dane zestawienie lepiej zaprezentuje się w postaci skumulowanej czy przy częściowym pokrywaniu się. W zależności od wizualizacji Tableau automatycznie rekomenduje włączenie lub wyłączenie funkcji Stack Marks.
A tak wygląda porównanie obu form wykresu

Jeżeli jesteś zainteresowany możliwościami jakie daje Tableau wypróbuj za darmo!.

2016-09-15

Tableau – integracja z SharePoint

Ostatnio natrafiłem na ciekawy problem u klienta, który dotyczył konfiguracji TableauEmbeddedView dodatku wyświetlającego obiekty Tableau w SharePoint. Dodatek można  znaleźć w plikach instalacyjnych Servera Tableau. Pomimo prawidłowego skonfigurowania trusted authentication zgodnie z instrucją WebPart nadal nie mógł wyświetlić raportu w Sharepoincie.

Założenie wykorzystania tego dodatku było następujące
  • Każda osoba posiadająca uprawnienia do wskazanej strony SharePoint powinna mieć uprawnienia do oglądania raportu zamieszczonego na stronie,
  • możliwość ustawienia raportu w formie obrazka,
  • możliwość konfiguracji wielkości obrazka.
W tym przypadku problem polegał na tym, że SharePoint posiadał skonfigurowane logowanie AD a Tableau Server wykorzystywało autentykacje lokalną, przekazywaną z wykorzystaniem ticketów. Po uruchimieniu debuggingu w Visual Studio wszystko okazało się jasne. Użytkownik zalogowany w systemie SharePoint przedstawiał się serwerowi Tableau przy pomocy konta domenowego. Tableau oczywiście nie rozpoznawało tego typu konta i zwracało błąd autentykacji.
Rozwiązaniem tego było dodanie parametru konfiguracyjnego umożliwiającego określenie użytkownika w kontekście, którego będzie pobierany raport. Oczywiście wymagane jest konto Tableau, które ma dostęp do wybranego przez nas raportu.


Program sprawdza czy parametr został wypełniony. Jeśli parametr jest pusty raport będzie pobierany w kontekście użytkownika SharePoint w przeciwnym razie zostanie użyte konto wpisane we właściwościach WebPart-u.

Dodanie parametru z użytkownikiem Tableau

Dodanie wyżej wskazanego parametru rozwiązało nam problem z logowaniem jednak w dalszym ciągu raport nie był wyświetlany. 

Kolejny problem, na który natrafiłem to sytuacja, w której użytkownik ma dostęp do wielu site-ów na serwerze Tableau a WebPart TableauEmbeddedView umożliwia pobieranie raportu tylko z domyślnego site.

Rozwiązaniem było dodanie kolejnego parametru WebPart, umożliwiającego podanie nazwę site-u, z którego będzie pobierany raport. 

Dodanie parametru personalizującego site.

Podczas pobierania Ticket-u przekazywana jest nazwa site-u, co pozwala serwerowi Tableau jednoznacznie określić skąd ma być pobierany raport.
Zastosowanie dodatkowego parametru pozwoliła nam wyświetlić pożądany raport.

Przykładową konfiguracja WebPart-u oraz widok raportu w Sharepoincie

Parametry konfiguracyjne pozwalają określić:
  • Tableau Server Name – link do serwera Tableau
  • View Path – ścieżka do wybranego raportu
  • Site name – nazwa witryny, na której znajduje się raport. 
  • User login- nazwa użytkownika Tableau w kontekście, którego będą pobieranie raporty, jeśli właściwość jest niewypełniona program pobierze raport w kontekście aktualnie zalogowanego użytkownika. 
  • Use Trusted Authentication - właściwość pozwala ustawić zintegrowane logowanie. Użytkowni korzystający z SharePoint bez potrzeby dodatkowego logowania mogą korzystać z raportów Tableau
  • Embed view as an image – właściwość pozwala określić czy raport ma być wyświetlany w formie dynamicznej czy statycznego obrazka.
  • Image Width – szerokość raportu
  • Image Height – wysokość raportu

Podsumowując dzięki wprowadzeniu dodatkowych parametrów użytkownicy SharePoint mogą w łatwy sposób (bez potrzeby dodatkowego logowania) korzystać z Tableau przy ustawionym trusted authentication. Opcjonalnie istnieje możliwość łączenia się z tableau w kontekście zdefiniowanego użytkownika i wyświetlaniu raportów w formie obrazka. Rozwiązanie to pozwala udostępnić raport większej liczbie pracowników organizacji.

Obsługiwane wersje SharePoint to 2007, 2010, 2013, 2016.


Jeżeli jesteś zainteresowany możliwościami jakie daje Tableau wypróbuj za darmo!.

2016-09-14

Klasteryzacja oraz Cross-Database Join - Tableau 10

Klasteryzacja oraz Cross-Database Join to kolejne nowe funkcjonalności w dziesiątej wersji Tableau.
Obie równie wyczekiwane, o dużych możliwościach.

Klasteryzacja jest świetnym rozszerzeniem prostych i intuicyjnych funkcji analitycznych. Cross-Database Join rozwiązuje wreszcie problemy związane z blendingiem danych i ograniczeniami z tym związanymi. Mamy możliwość utworzenia jednego źródła danych z wielu różnych baz danych (np. MS SQL z Oracle) czy plików płaskich. Omijamy tym samym problemy blendingu, które w określonych sytuacjach wprowadzały uciążliwe ograniczenia.

Klasteryzacja opiera się na modelu k-średnich, zaaplikowana jest w Tableau w sposób bardzo intuicyjny i maksymalnie uproszczony od strony konfiguracyjnej. Tableau klasteryzuje obserwacje automatycznie, stosując zmienne użyte w wizualizacji oraz samodzielnie dobiera liczbę klastrów.


Wybierzmy dwie miary i stwórzmy wykres typu scatter-plot. W naszym przypadku są to dane określające wielkość sprzedaży oraz wydatki marketingowe dla poszczególnych punktów sprzedaży.


Tworzymy klastry wybierając odpowiednią opcję z zakładki "Analytics".




Tableau tworzy klastry w oparciu o wybrane na wizualizacji miary - Sprzedaż oraz Wydatki marketingowe. Program wygenerował automatycznie dwa klastry, których parametry możemy podejrzeć klikając prawym przyciskiem myszy i wybierając opcję "Describe cluster". 


Nasze klastry zostały zbudowane na podstawie relacji sprzedaży z wydatkami marketingowymi dla każdego punktu sprzedaży. Ze specyfiki danych wynika, że każdy punkty sprzedaży mieszci się w innym mieście. Chciałbym zbadać czy lokalizacja - miasto a raczej wielkość populacji danego miasta wpływa na efektywność danego punktu sprzedaży. 
Dodam do zmiennych klastrujących populację danego miasta. 

W tym celu wykorzystamy funkcjonalność Cross-Database Join, dołączając kolejny plik płaski do poprzedniego źródła danych z danymi sprzedażowymi. 


Określamy relacje między źródłami aby poprawnie przygotować dane. 
W odróżnieniu od blendingu, cross-database join pozwala na utworzenie jednego, kombinowanego źródła danych. 



Po podłączeniu możemy w sposób standardowy dodać nową zmienną "Populacja" do klasteryzacji edytując ikonę klastra.



Jak widzimy, nowa zmienna pozwoliła na utworzenie 3 klastrów, dodając linie trendu jesteśmy w stanie określić, które punkty sprzedaży są warte naszych dalszych inwestycji w działania marketingowe, a których wydajność jest niska. 


Klaster niebieski posiada linię trendu opisaną równaniem liniowym: Sprzedaż=7,31587*Wydatki marketingowe+22850,5. 
W uproszczeniu i przy założeniu ceteris paribus jedna jednostka pieniężna wydana na działania marketingowe w punktach sprzedaży z klastra niebieskiego przyniesie ponad 7 jednostek pieniężnych sprzedaży. Relacja ta jest najkorzystniejsza. Pozostałe klastry opisują zbiory punktów sprzedaży w miejscach o niższej efektywności działań marketingowych. 

A jak Wy korzystanie z klasteryzacji? Podzielicie się swoimi pomysłami? 



Jeżeli jesteś zainteresowany możliwościami jakie daje Tableau wypróbuj za darmo!.

2016-09-13

Tableau i SAP BW

W naszych wdrożeniach często spotykamy się z tematem podłączenia SAP BW jako źródła danych do raportów w Tableau. Przedstawię tu kilka rozwiązań tego problemu wraz z opisem zalet/wad i potencjalnych kosztów.

Zacznijmy od rozwiązania gotowego w Tableau czyli konnektora do SAP BW.

Tableau wspiera natywnie dwa tryby połączenia do SAP BW live i poprzez ekstrakt. 

Podłączenie Tableau live do SAP BW

Podłączenie live wymaga wpisania parametrów serwera i właściwie to koniec konfiguracji. Zaletą jest prostota i natychmiastowe uruchomienie. Wada tej konfiguracji wynika z łączenia się do przeliczonych agregatów, stąd niedostępne jest szereg funkcjonalności Tableau takich jak:
  • zmiana agregacji miar
  • budowanie aliasów
  • budowanie hierarchii (hierarchie z SAP BW są przenoszone)
  • zmiana typu danych
  • grupowanie ad hoc
  • nie będzie też działało szereg funkcji pól kalkulowanych np. LOD
Wszystkie ograniczenia połaczenia do kostek są opisane w tym miejscu, wraz z możliwościami obejścia. 
Podsumowując, podłączenie live jest dobre na początek albo w momencie gdy mamy perfekcyjnie przygotowane dane w kostkach BW i będziemy je tylko wizualizowali. Rozwiązanie to ma również tą zaletę że nic nie kosztuje.

Podłączenie Tableau poprzez ekstrakt do SAP BW

Od wersji 8.2 Tableau ma możliwość tworzenia ekstraktu z SAP BW. Jest to opcja do której trzeba mieć specjalny klucz licencyjny. Klucz jest bezpłatny, trzeba poprosić o niego swojego opiekuna w Tableau (i odczekać 1-2 dni na przeprocesowanie).
Po wpisaniu klucza przy próbie podłączania do SAP BW pojawi się opcja extract, będziemy mogli też wybrać filtry np. daty, które pozwolą nam ograniczyć ilość danych ściąganych do Tableau. Po stworzeniu ekstraktu możliwości manipulacji na danych zdecydowanie się poprawiają, odłączyliśmy się od kostek :D Nasze hierarchie z BW wyglądają co prawda dziwnie ale po kilku ruchach wszystko ładnie śmiga. Jest to najlepsza z darmowych opcji raportowania z SAP BW. Posiada ona jednak pewne ograniczenia. Przede wszystkim nie mamy możliwości przyrostowego odświeżania danych, co w połączeniu z ograniczoną metodą komunikacji i pobierania danych (przez MDX), eliminuje ten tryb pobierania dla bardzo dużej ilości danych.
Samo odświeżanie jest powolne i ma standardowe ograniczenie zapytań MDX do 1mln komórek (ilość wierszy x ilość kolumn). Ograniczenie to można zmienić ale szybkość działania niestety pozostanie ta sama.

Theobald Xtract Universal Server

Z pomocą przychodzi nam komponent Theobald, który jest w stanie podłączyć się do dowolnego obiektu SAP w tym SAP BW i wygenerować ekstrakt bezpośrednio na Tableau Server. Theobald łączy się do danych SAP w protokołach SAP, co daje lepsze możliwości skalowania. Przede wszystkim działa szybko i da się odświeżać przyrostowo. Należy podkreślić że Theobald Xtract Server nie stanowi warstwy pośredniej danych a jedynie wydajny silnik, który generuje dane bezpośrednio do Tableau.



Koszt rozwiązania 10k EUR+, przy większej skali danych jest to najkorzystniejsze rozwiązanie jeśli chodzi o cenę/funkcjonalność. Przede wszystkim tańsze niż

BW on SAP HANA

SAP HANA potrafi zmapować gotowe struktury BW, daje wygodny interfejs dla narzędzi zewnętrznych. Działa in memory, więc jest bardzo szybkie, pozwala łączyć się w trybie live i dowolnie manipulować na danych. Jedyna wada to cena, najmniejsze rozwiązania zaczynają się od 100k EUR + wdrożenie, które niestety trwa. W przypadku Enterprise koszt ten może być wielokrotnie wyższy.


Jeżeli jesteś zainteresowany możliwościami jakie daje Tableau wypróbuj za darmo!.