What-If analysis w Tableau

Sebastian Wareluk

sie 7, 2018

Tableau

Business Intelligence

W tym wpisie omówimy temat analizy wrażliwości w Tableau, czyli popularnych “What-if analysis”.

Mechanizm w tym przypadku jest bardzo prosty: mając jakąś wartość po stronie bazy danych tworzymy nowe pole kalkulowane, które pokaże wartość tego pola w oparciu o parametr, a warstwa wizualna zadba o to, by ułatwić Ci interpretację wyników i wyciągnięcie odpowiednich wniosków.

Zróbmy więc pierwszą próbę, dla wszystkich tych, dla których temat parametrów i pól kalkulowanych w Tableau jest nowością. Wyobraź sobie, że pracujesz w firmie, która zajmuje się importem ubrań, za które firma płaci w USD. Żeby jeszcze bardziej uprościć sytuację, na wszystkie grupy produktów firma ma cenę zakupu fixed-price, więc skupimy się na T-shirt’ach, sukienkach i spodniach, których cena zakupu wynosi kolejno 12, 21 i 30 USD. Sprzedaż na terenie Polski jest prowadzona w cenach 47, 80 i 115 PLN. Na podstawie takich wartości tworzę prostą tabelę w Excelu i importuję ją do Tableau.

TIP: Jeśli chcesz stworzyć szybką analizę części danych z Excela, możesz zaznaczyć obszar który Cię interesuje, skopiować go “Cltr+C”, a następnie już w pierwszym ekranie Tableau, w menu Data wybrać polecenie ‘Paste’ lub po prostu wkleić dane do Tableau ‘Cltr+V’.

Co Ci daje wklejanie danych opisane w powyższym TIP’ie? Po pierwsze pomijasz ekran budowania modelu danych, a po drugie, na etapie budowania wizualizacji dane są wstępnie ułożone w formie tabelarycznej na wzór tego, jak były ułożone w Excelu. Na potrzeby tego przykładu to bardzo dobra wiadomość :).

Obecnie nasza tabela zawiera informacje o produktach, cenie zakupu w USD i cenie sprzedaży w PLN. Stwórzmy nowe pole kalkulowane, które policzy dla nas ceny zakupu w PLN. Kliknij prawym przyciskiem myszy na pigułce ‘Cena zakupu USD’ i wybierz opcję ‘Create’ -> ‘Calculated Field’. Moja formuła będzie wyglądała następująco:

SUM([Cena zakupu USD])*3.6

Po zapisaniu kalkulacji umieszczam nowe pole w sekcji ‘Measure Values’. Kolejnym elementem, który stworzymy będzie pole kalkulowane, przy pomocy którego wyświetlimy wysokość marży. Ja swoją kalkulację nazwę ‘Profit’, a jej formuła będzie wyglądała następująco:

SUM([Cena sprzedaży (PLN)])-[Cena zakupu PLN]

Możesz się zastanawiać, dlaczego jedna miara jest zagregowana poprzez ‘SUM’, a druga nie. Otóż Tableau pozwala na porównywanie, czy też tworzenie wyrażeń na podstawie miar, których właściwości co do agregacji są takie same, tzn. oba z nich są zagregowane lub nie. W powyższym przykładzie ‘Cena zakupu PLN’ jest polem kalkulowanym, które jest zagregowane wewnątrz jego własnej formuły, dlatego też w powyższa kalkulacja będzie poprawna.

‘Profit’ również umieszczamy w ‘Measure Values’ na samym dole obszaru, co spowoduje dodanie go na końcu tabeli.

Dobrze, ale co by było gdyby (ok, but what if…)?

Co by było, gdyby kurs dolara się zmienił i za amerykańską walutę musielibyśmy zapłacić 4PLN? Jak zapewne pamiętasz, konstruując miarę ‘Cena zakupu PLN’ mnożyliśmy zakup w USD x 3,60. Pora więc dodać naszej tabeli nieco więcej funkcjonalności – kliknij prawym przyciskiem myszy obszar ‘Data Pane’, a następnie wybierz opcję ‘Create Parameter’. Jego właściwości ustaw zgodnie z poniższym rysunkiem.

Po kliknięciu OK w lewym dolnym rogu ekranu pojawi się nowy obszar ‘Parameters’. Rozwiń menu przy swoim nowym parametrze i wybierz opcję ‘Show Parameter Control’. Spowoduje to wyświetlenie okienka kontrolnego parametru, a Ty będziesz mógł przejść do ostatniego kroku tego ćwiczenia, czyli do podpięcia parametru do widoku.

Jak to zrobić? Nic prostszego! Edytuj pole ‘Cena zakupu PLN’, a następnie zastąp statyczną cenę dolara (którą wcześniej podaliśmy) parametrem.

Tabela już z pewnością zmieniła swoje wartości, natomiast Ty możesz zaobserwować, że powyżej pewnej ceny zakupu dolara, nie zmieniając cen sprzedaży, nasz biznes zaczyna przynosić straty.

Oczywiście w skali 3 produktów, których ceny są do siebie zbliżone, wykorzystywanie Tableau do takich analiz nie ma wielkiego uzasadnienia biznesowego, natomiast w praktyce w wielu przypadkach mówimy o tysiącach produktów będących w ofercie firmy, które często charakteryzuje bardzo różna wrażliwość na różne czynniki, choćby właśnie takie jak zmiany cen walut. Zupełnie inną wrażliwością będą charakteryzowały się produkty ze sprzedaży których zysk bierze się z dużej marży jednostkowej, a inną takie w przypadku których jednostkowo nie zarabiamy dużo, ale sedno tkwi w ilości sprzedanych sztuk.

What-if a rozkład miary w czasie

Drugim przykładem, który dzisiaj omówimy będzie zestawienie What-if z ciągiem czasowym. Na końcu tej części wpisu wyświetlimy informację o tym, jak zmieni się zysk i ilość zamówień, które przyniosły nam zysk/stratę w stosunku do procentowej zmiany ceny zakupu towarów. Na potrzeby tej wizualizacji wykorzystam źródło ‘Sample – Superstore’.

Po otworzeniu go w Tableau tworzymy widok rozkładu miary ‘Profit’ w czasie, czyli przenosimy pigułkę ‘Profit’ do obszaru ‘Rows’, natomiast w ‘Columns’ umieszczamy datę zamówienia (Order Date) w formie ciągłej z podziałem na miesiące. Następnie zbudujmy nową miarę, która będzie mówiła o cenie zakupu towarów. Stwórz pole kalkulowane, w którym od ceny sprzedaży odejmiesz profit:

[Sales]-[Profit]

Kolejnym krokiem będzie stworzenie alternatywnej miary profitu, której wartość będzie  zmieniała się w zależności od ceny zakupu. Zacznijmy więc od stworzenia parametru, który pozwoli nam na kontrolowanie kolejnej miary. Jak tworzyć parametry dowiedziałeś się w pierwszym przykładzie, więc teraz pominę szczegóły – ja swój parametr nazwałem ‘% zmiana ceny zakupu’, a jego wartości ustawiłem następująco: typ danych ‘Float’, Allowable Values: Range, Min: 0, Max: 1, Step size: 0,01. Następnie w menu parametru wybieram opcję ‘Defaut Properties’ -> ‘Number Format’ i zaznaczam formatowanie procentowe.

W dalszej części pracy tworzę pole kalkulowane, które będzie moją drugą miarą profitu, natomiast jej wartość będzie zależała właśnie od parametru. Formuła pola ‘Profit 2’ wygląda następująco:

[Sales]-([Zakup]*(1+[% zmiana ceny zakupu]))

Nowo utworzoną miarę umieszczam w obszarze ‘Rows’ obok pierwotnej miary ‘Profit’, a efekty mojej dotychczasowej pracy wyglądają tak, jak na rysunku poniżej.

Aby połączyć widoki ze sobą, przy pigułce ‘Profit 2’ w obszarze ‘Rows’ zaznaczam opcję ‘Dual Axis’, przy nowopowstałej osi po prawej stronie widoku – ‘Synchronize Axis’, a następnie ją usuwam.

Jeśli wartość naszego parametru jest równa 0%, to linie nałożą się idealnie na siebie. Na tym etapie otwieram zakładkę ‘Analytics’, do mojego widoku dodaję funkcję ‘Forecast’, a następnie edytuję legendę koloru.

Mamy gotowy pierwszy widok, zbudujmy zatem drugi element, który powie nam o ilości, które przyniosłyby zysk, jeśli nasza cena zakupu zmieniłaby się o wartość parametru.

Otwórz nową zakładkę i zacznij od umieszczenia pigułki ‘Order ID’ w polu ‘Rows’, następnie wejdź we właściwości tej pigułki i w podmenu ‘Measure’ zaznacz pozycję ‘Count (Distinct’). Zależy nam tutaj na wyświetleniu ilości zamówień, co domyślnie zrobilibyśmy używając funkcji ‘Count’, natomiast baza danych na której pracujemy jest zbudowana w taki sposób, że ID zamówienia pojawia się w niej tyle razy ile jest w nim pozycji produktowych. Chcąc zachować poprawność naszego widoku, stosując ‘Count (Distinct)’ mówimy Tableau, że chcemy wyświetlić ilość unikalnych wystąpień numeru zamówienia. Kolor naszej pigułki zmieni się na zielony. Przy okazji zwróć uwagę z jaką łatwością możemy stworzyć nową miarę.

Istotna będzie dla nas możliwość filtrowania danych wg lat, więc dodajmy również filtr daty, oparty na polu ‘Order date’. Następnie stworzymy Set, który działając w oparciu o nasz parametr będzie dynamicznie filtrował zamówienia.

Kliknij na pigułkę ‘Order ID’ w panelu ‘Measures’. Z jej właściwości wybierz ‘Create’ -> ‘Set’. W zakładce ‘Condition’ tworzymy logikę, zgodnie z którą do Set’u będą należały te elementy, które według pola ‘Profit 2’ będą większe od 0 (By field Profit 2 (SUM) > 0). Zatwierdzamy ustawienia, a następnie nowo powstały element umieszczamy w sekcji ‘Columns’. Spowoduje to podzielenie słupka z całkowitą ilością zamówień na dwa mniejsze: In i Out. Set umieszczam również na półeczce ‘Color’, a wcześniej utworzoną pigułkę (CNTD) ‘Order ID’ duplikuję z wciśniętym klawiszem Ctrl do obszaru ‘Label’. Spowoduje to wyświetlenie ilości zamówień przy obu słupkach.

Mając gotowe 2 elementy możemy złożyć prosty dashboard, który może wyglądać na przykład tak, jak na rysunku poniżej. Jaka korzyść płynie ze stworzenia takiego raportu? W kilku bardzo prostych krokach możesz odpowiedzieć na pytanie, jak będą zmieniać się wyniki Twojej firmy w zależności od rosnących cen zakupu towarów lub innych istotnych dla Ciebie czynników. To również bardzo przydatne narzędzie w sytuacji, kiedy negocjujesz budżet marketingowy dla Twojego produktu i chcesz mieć natychmiastową odpowiedź, jaki poziom cen “wytrzyma” jaki budżet.

Mam nadzieję, że te dwa proste przykłady pozwoliły Ci zrozumieć, jak możesz stworzyć swoja pierwszą analizę wrażliwości w Tableau i zainspirowały Cię do tego, żeby sprawdzić jak Tableau poradzi sobie z Twoimi danymi.

Jeżeli chcesz sprawdzić jak wygląda analiza „What-if”, zobacz nasze nagranie webinarium dostępne na żądanie.