Pivotowanie danych w Tableau

Sebastian Wareluk

gru 31, 2019

Tableau

Wizualizacja Danych

pivot

Ten wpis na naszym blogu możesz potraktować jako krótki, podstawowy tutorial związany z pivotowaniem danych w Tableau. Wpis powstał spontanicznie i został inspirowany pytaniem jednej ze studentek studiów podyplomowych Data Science, które już od kilku lat współprowadzimy na Politechnice Warszawskiej.

Co to jest Pivot danych?

Jest to technika, która pozwala na przekształcenie tabeli, polegające na zastąpieniu kilku kolumn (na przykład takich, które zawierają cykliczne dane), dwiema nowymi. Pierwsza z nich będzie zawierała kategorie umożliwiające agregowanie danych na podstawie kategorii a druga, wartości przypisane do tych kategorii. Kategorie, o których mowa powstają na bazie nazw pierwotnych kolumn. W przykładach, które dzisiaj przygotowałem, zobaczysz, że możemy pivotować tylko część tabeli, na której pracujemy. Skutkiem tej operacji będzie zmniejszenie ilości kolumn i zwiększenie ilości wierszy. Dzieje się tak dlatego, że informacje, które dla danego rekordu przechowywało wyjściowo np. 5 kolumn, będą musiały być zawarte w takiej samej ilości wierszy. Bardzo prosty schemat pivota, możesz zobaczyć na poniższym obrazku:

W kolejnym przykładzie pokażę Ci, dlaczego warto pivotować dane i kiedy warto to robić. Na potrzebę tego przykładu posłużę się uproszczonymi danymi, zawierającymi informację o numerze transakcji, kwocie oraz o tym, czy płatność za to zamówienie została zrealizowana przy pomocy karty płatniczej, przelewem czy też nabywca opłacił swoją fakturę gotówką.

Nie mielibyśmy najmniejszego problemu z raportowaniem tych danych, jeśli tabela wyglądałaby w następujący sposób:

Często możemy się jednak spotkać z danymi, w których pewne informacje oznaczane są przy pomocy flag, np. 0 i 1. Tak też jest w przypadku naszych danych, których próbka wygląda następująco:

Chcąc stworzyć prosty wykres, który pozwoli nam pokazać, jakie kwoty wpłynęły do naszej firmy poszczególnymi metodami płatności, możemy stworzyć kalkulację dla każdej z kolumn tak, żeby uzyskać sumy właściwe dla każdej z nich. Taka metoda pracy ma sens wtedy, kiedy kolumn, na których chcemy pracować jest stosunkowo niewiele i wtedy, kiedy wiemy, że logika oznaczania zdarzeń w obrębie kolumny nie zmieni się z 0 i 1 na przykład na 0, 1, 2, 3. Wtedy przy większym zestawie danych i w sytuacjach kiedy w ich obrębie często pojawiają się jakieś zmiany łatwo o przeoczenia i mnożące się z czasem niedoskonałości w obrębie raportów. Zobaczmy jednak, jak możemy zbudować nasz wykres przy pomocy kalkulacji.

Po podłączeniu danych do Tableau, dla każdej formy płatności, tworzymy nowe pole kalkulowane, wg poniższego wzoru:

Następnie posługując się elementami, które Tableau generuje przy każdych podłączanych do aplikacji danych, czyli Measure Names i Measure Values, budujemy wizualizację tak, jak pokazuje poniższy rysunek:

Co jeśli w rzeczywistości kolumn odpowiadających naszym przykładowym formom płatności będzie znacznie więcej?

Tutaj z pomocą przychodzi tytułowy Pivot, lub – jak kto woli – transpozycja danych w Tableau. Ta funkcja jest dostępna na etapie podłączania danych do naszej dzielnej aplikacji, a więc zatrzymamy się na chwilę właśnie na tym etapie. Tym, co będziemy chcieli osiągnąć będzie zamiana naszych kolumn z metodami płatności w pojedynczą kolumnę, która zgromadzi te informacje. Drugą kolumną, która jest efektem przekształcenia, będzie informacja z naszymi flagami. Na tym etapie warto również wspomnieć, że niezależnie od tego czy w źródle danych pojawi się z czasem sytuacja, o której wspominałem wyżej, czyli rozszerzenie zakresu flag w kategoriach, pivotowane dane będą te zmiany dynamicznie obsługiwać.

Ok, więc jak użyć Pivota w Tableau?

Nic prostszego – w podłączonej do Tableau tabeli, zaznaczamy kolumny, które chcemy objąć przekształceniem. Następnie klikamy prawym przyciskiem myszy na którymś z zaznaczonych nagłówków i z menu wybieramy pozycję Pivot (funkcja ta dostępna jest również w widoku metadanych).

W efekcie, uzyskamy dwie kolumny, o których wspominałem wcześniej. Jedna z nich, Pivot Field Names, to nasze metody płatności a Pivot Field Values to flagi. W moim przykładzie od razu zmieniam nazwy kolumn i przechodzę do budowania wizualizacji.

Na kolejnym etapie widzę, że Flagi (czyli Pivot Field Values) znalazły się w sekcji Measures. Oznacza to, że Tableau będzie nasze zera i jedynki traktował jako miarę i domyślnie próbował sumować. My jednak wiemy, że flagi powinny być traktowane jako wymiar (Dimension), żebyśmy mogli na ich podstawie rozróżniać kategorie 0 i 1. Zatem przeciągam Flagi z obszaru Measures do Dimensions i mogę zacząć budować wykres.

I tutaj, będzie bajecznie prosto – żeby stworzyć prosty wykres słupkowy podobny do tego z poprzedniego przykładu mogę wykorzystać pewną własność Tableau, która pozwala na szybkie, automatyczne budowanie wykresów. Klikam dwukrotnie na pigułkę Kwota transakcji, następnie na metody płatności, a na koniec przenoszę Flagi do pola filtrów, zaznaczając tylko wartość 1. Pozostałe efekty kosmetyczne to oczywiście kwestia gustu lub potrzeb.

Jeśli dotarłeś do tego momentu artykułu, może Ci się wydawać, że cała opisywana przeze mnie operacja zajmuje dużo czasu, ale w praktyce, kiedy nie skupiamy się na opisywaniu wszystkiego krok po kroku, całość pracy od Pivota do takiego prostego wykresu jak w przykładzie może zając ok. 30 sekund.

Kilka słów na zakończenie

Ze względu na charakterystykę danych z różnych źródeł, Tableau Desktop udostępnia funkcję Pivot głównie dla danych pochodzących z arkuszy kalkulacyjnych, bo zazwyczaj to właśnie tam spotykamy się z potrzebą zastosowania tej techniki. Może się jednak okazać, że spotkamy się z sytuacją w której takiego przekształcenia będą wymagały dane ze źródeł dla których nie mamy w menu dostępnej funkcji pivota. Co wtedy zrobić? O tym już niebawem w drugiej części artykułu o pivotach w Tableau, gdzie postaramy się wycisnąć nieco więcej z Tableau Desktop i przyjrzymy się, co ma nam do zaoferowania Tableau Prep Builder.

Dziękuję za Twój poświęcony czas i zapraszam do lektury pozostałych wpisów naszego bloga.