Przedsiębiorstwo handlowe posiada ponad 3 letnią
historię sprzedaży. Firma zajmuje się sprzedażą materiałów i akcesoriów
biurowych. Kadra kierownicza oraz Zarząd firmy podjęli decyzję o konieczności
monitorowania w czasie rzeczywistym kluczowych informacji związanych z
działalnością operacyjną organizacji. Dzięki wdrożeniu narzędzia do
wizualnej analizy danych Tableau, organizacja zyskała możliwość szybkiej budowy
operacyjnego kokpitu (dashboardu) sprzedaży, a co za tym idzie, możliwość
monitorowania rentowności poszczególnych produktów czy transakcji oraz ich
wpływu na wynik finansowy.
Danymi wejściowymi dla naszego raportu jest baza danych
systemu transakcyjnego organizacji (może być ona oparta na dowolnym popularnym
systemie bazodanowym). Łączenie narzędzia Tableau ze źródłem danych odbywa się
w czasie rzeczywistym aby zawsze dysponować aktualnymi informacjami (rys.1).
W naszym przypadku skorzystamy z bazy demonstracyjnej Sample – Superstore preinstalowanej w
każdej wersji narzędzia Tableau Desktop.
Rysunek 1 - podłączenie danych Live/Exract
Na podstawie danych transakcyjnych przygotowany zostanie raport
operacyjny przedstawiający wybrane informacje dotyczące poziomu zysku oraz
osiąganej marży. Dane wejściowe
dla przygotowywanego raportu umieszczono w tabeli o następującej strukturze
(tab.1):
Tabela 1
- lista zmiennych źródła danych
Tabela 1 - źródło własne
Przykładowy raport podzielony został na 5 segmentów (rys. 2),
które prezentują poniższe informacje:
•
podsumowanie
całościowego zysku organizacji od początku analizowanego okresu oraz zysk z
dnia bieżącego (segment #1)
•
pięć
produktów o największej sumie sprzedaży z informacją o marżowości każdego z
nich (segment #2)
•
wizualizacja
kroczącej sumy sprzedaży na osi czasu (segment
#3)
•
podsumowanie
sprzedaży za ostatnie 7 dni ze wskazaniem wykonania celu marżowego (segment #4)
•
analiza
wyników sprzedaży QTD (quarter-to-date) w podziale na regiony sprzedaży (segment #5)
Rysunek 2
- dashboard operacyjny - przegląd
Rysunek 2 - źródło własne
Kokpit operacyjny stworzony został w narzędziu Tableau 9.3 z
6 oddzielnych elementów - arkuszy, które następnie zostały zagregowane w
pojedynczym widoku - dashboardzie. Omówimy zasadę budowy każdego elementu
oraz sam proces integracji elementów.
Segment #1 - podsumowanie
zysku organizacji
Element
ten stworzymy w trzech krokach:
•
krok
1 - wyświetlenie zsumowanego zysku
•
krok
2 - skalkulowanie sumy zysku dla dnia bieżącego
•
krok
3 - określenie procentowego udziału zysku dnia bieżącego w całkowitym zysku
organizacji
KROK 1 - Suma zysku
W arkuszu Tableau (nazwijmy go Segment 1) z listy Measures wybieramy zmienną Zysk
przeciągając ją na boks Text
(rys.3.) Tableau wyświetli nam zsumowaną wartość zysku organizacji za pełen
okres, który wczytaliśmy do narzędzia.
Rysunek 3 Boks Text
Rysunek 3 - źródło własne
Kolejnym elementem jest dodanie informacji czym jest liczbą,
którą wyświetliliśmy. W tym celu klikamy ponownie w boks Text i kolejno w trzy-kropek
(rys.4) aby otworzyć okno edycji pola tekstowego.
Rysunek 4 - edycja pola
tekstowego
Rysunek 4 - źródło własne
W polu tekstowym wyświetliliśmy już całkowitą wartość zysku,
która została przez Tableau opisana w jako <SUM(Zysk)>.
W otwartym polu tekstowym mamy możliwość dopisania dowolnego statycznego ciągu znaków
lub wstawienia innej zmiennej, dynamicznie zmieniającej wartości poprzez
funkcję Insert. Na potrzeby naszego
raportu dodajmy, dowolnie sformatowany, napis SUMA ZYSKU (rys.5).
Rysunek 5 - dodanie opisu w
edytorze tabelki
Rysunek 5 - źródło własne
KROK 2 - Zysk dla dnia
bieżącego
Kolejnym krokiem jest skalkulowanie zysku tylko dla dnia
bieżącego, który będzie aktualizował się automatycznie wraz z odświeżaniem
danych ze źródła oraz zmianą daty.
W tym celu należy przygotować nowe pole obliczeniowe poprzez
kliknięcie prawym przyciskiem w sekcji Dimensions
lub Measures i wybranie opcji Create calculated field… (nazwijmy je Today Profit), które zwróci wartość sumy zysku tylko dla dnia bieżącego
(rys.6).
Aby osiągnąć taki efekt zastosujemy formułę logiczną IF
sprawdzającą czy zmienna Data Zamówienia jest równa zmiennej TODAY().
Jeżeli obie wartości będą tożsame Tableau zwróci wartość
zmiennej Zysk dla wspomnianych rekordów.
Rysunek 6 - pole kalkulowane
Today Profit
Rysunek 6 - źródło własne
Utworzoną zmienną przeciągamy z listy miar (Measures) ponownie do boksu Text. Tableau automatycznie zagreguje
wartości jako suma zysku dla dnia bieżącego. Edytując ponownie pole tekstowe
możemy dodać opis naszego pola obliczeniowego (Dziś).
KROK 3 - Udział procentowy
Ostatnim elementem Segmentu 1 jest obliczenie udziału
procentowego zysku dnia bieżącego względem całkowitego zysku. Ponownie
skorzystamy z możliwości stworzenia pola obliczeniowego. Tworzymy dwa
pola obliczeniowe, które nazywamy %
Decline (rys.7) oraz % Growth (rys.8).
Chcemy uzyskać osobne pola z
uwagi na konieczność nadania im koloru czerwonego dla wartości ujemnych oraz
zielonego dla wartości dodatnich. Oba pola mają zbliżoną konstrukcję do
kalkulacji tworzonej w kroku 2. Stosujemy również funkcję logiczne IF gdzie sprawdzamy czy suma zysku dnia
bieżącego (zmienna Today Profit)
jest większa lub mniejsza od zera. W obu przypadkach pola mają zwrócić iloraz
sumy zysku dnia bieżącego oraz sumy zysku dla całego rozpatrywanego okresu. Oba
pola zwrócą wartość liczbową w przypadku spełnienia warunku, w przeciwnym
wypadku zwrócona zostanie wartość NULL.
Rysunek 7 - pole kalkulowane
% Decline
Rysunek 7 - źródło własne
Rysunek 8 - pole kalkulowane
% Growth
Rysunek 8 - źródło własne
Oba pola przeciągamy kolejny raz w boks Text. Edytując pole
tekstowe wartości <AGG(%Decline)>
nadajemy kolor czerwony a kolejnej
zmiennej <AGG(%Growth)> kolor zielony.
Finalne pole tekstowe, które będzie pierwszym elementem
dashboardu operacyjnego, powinno mieć zbliżoną formę do przedstawionej na
rysunku (rys.9).
Rysunek 9 - edycja pola
tekstowego
Segment 2 - pięć produktów o
największej sumie sprzedaży
Drugi element kokpitu przedstawia za pomocą wykresu
słupkowego wartość sprzedaży pięciu najlepiej sprzedających się produktów z
oferty firmy Superstore. Dodatkowo
każdy produkt opatrzony został informacją o poziomie marży a kolor słupków
określa czy wybrany produkt spełnił cel marżowy.
Wykres ten stworzymy w dwóch krokach:
•
krok
1 - stworzenie wykresu słupkowego z filtrem TOP 5
•
krok
2 - stworzenie pola kalkulowanego sprawdzającego realizację celu marżowego
KROK 1 - stworzenie wykresu
słupkowego TOP 5
Klikamy dwukrotnie miarę Sprzedaż,
Tableau automatycznie tworzy wykres słupkowy. W następnej kolejności
czynność tą powtarzamy dla wymiaru Produkty.
Aby wyświetlić wartości sprzedaży na każdym ze słupków przeciągamy ponownie
miarę Sprzedaż na boks Label (rys.10).
Rysunek 10 – boks Labelki
Rysunek 10 - źródło własne
Otrzymujemy mało czytelny wykres wartości sprzedaży dla
wszystkich produktów w ofercie firmy. Projektując dashboard założyliśmy, że
interesuje nas pięć produktów o największym wolumenie sprzedaży. Aby ograniczyć
nasz wykres tylko do interesujących nas produktów należy zdefiniować filtr na
zmiennej Produkty. Prawym
przyciskiem klikamy na zmiennej Produkty
we wstędze Columns i wybieramy opcję
Filter…->Top.
Po wybraniu opcji By
field i ustawienie żądanej ilości rekordów, które chcemy filtrować, Tableau
automatycznie zaproponuje pole, które będzie podstawą do filtrowania. W tym
przypadku będzie to pole Sprzedaż gdzie za funkcję agregującą Tableau uzna
zastosowaną w wykresie sumę (rys. 11).
Po zaakceptowaniu takiego wyporu otrzymamy listę produktów
ograniczoną jedynie do pięciu produktów o największej wartości sprzedaży.
Rysunek 11 - okno edycji
filtra
Rysunek 11 - źródło
własne
Po zaakceptowaniu takiego wyporu otrzymamy listę produktów
ograniczoną jedynie do pięciu produktów o największej wartości sprzedaży.
Wykorzystując funkcjonalność Swap
(rys.12) obracamy wizualizację zamieniając oś rzędnych z osią odciętych.
Rysunek 12 - funkcja SWAP
Pomiędzy nazwą produktu a wartością sprzedaży wyrażoną
słupkiem chcemy wyświetlić wartość marży jaką organizacja wypracowała dla
danego produktu. Dane, którymi dysponujemy, nie posiadają miary Marża. Mamy jednak możliwość obliczenia
jej za pomocą nowego pola kalkulowanego. Przygotujmy nowe pole o nazwie Marża (rys.13).
Rysunek 13 - pole
kalkulowane Marża
Rysunek 13 - źródło własne
Uzyskane pole obliczeniowe powstało z podzielenia sumy zysku
dla danego produktu przez sumę wielkości sprzedaży. Obie miary mają wartości
ciągłe więc wynik kalkulacji również zostanie tak zinterpretowany. Aby
wyświetlić na naszym wykresie marże w postaci liczbowej musimy zmienić typ
naszego nowego pola obliczeniowego z ciągłego na dyskretny. Wystarczy prawym
przyciskiem myszy kliknąć na zmiennej Marża
i wybrać opcję Convert to discrete
(rys.14).
Rysunek 14 - konwersja zmiennej z
ciągłej do dyskretnej
Tak skonfigurowane pole możemy przeciągnąć do wstęgi Rows i upuścić po lewej stronie
znajdującej się tam zmiennej Produkt.
KROK 2 - weryfikacja realizacji
celu marżowego
W kolejnym kroku oznaczymy kolorem słupki wielkości sprzedaży
tych produktów, których marża przekracza założony przez nas poziom. W tym
przypadku kolorem czerwonym oznaczymy produkty, które nie spełniają tego
warunku czyli nie zrealizowały celu. Aby dokonać takiej segmentacji posłużymy
się ponownie polem obliczeniowym z kolejną funkcją logiczną IF. Wynikiem pola o nazwie Performance #1 są znaki określające realizację, bądź nie, celu marżowego. W tym
przypadku cel został określony na poziomie 1% marży (rys.15).
Rysunek 15 - pole
kalkulowane Performance #1
Rysunek 15 - źródło
własne
Przeciągając
otrzymane pole kalkulowane do boksu Color
Tableau oznaczy odmiennymi kolorami te produkty, których marża spełnia nasze
założenie, odróżniając je od tych, które naszego celu nie spełniają (rys.16).
Rysunek 16 - boks Color
Rysunek 16 - źródło własne
Dwukrotne kliknięcie na legendzie koloru pozwoli na dowolną
konfigurację koloru, który zostanie zastosowany do różnicowania.
Realizacja obu kroków zaowocuje wykresem słupkowym dla pięciu produktów o
największej sumie sprzedaży z oznaczeniem celu marżowego (rys.17).
Rysunek 17 - wykres słupkowy
TOP 5 produktów
Segment #3 - wizualizacja
kroczącej sumy sprzedaży na osi czasu
Wykres szeregu czasowego przedstawiającego sumę kroczącą
zysku przygotujemy podobnie jak wykres słupkowy dla segmentu drugiego.
Rozpoczniemy od dwukrotnego kliknięcia w miarę Zysk. Tableau ponownie rozpozna naszą
intencję i przygotuje wykres słupkowy dla sumy zysku firmy. Zysk ten chcemy
przedstawić na osi czasu, w tym celu na wstęgę Columns przeciągamy wymiar Data
zamówienia. Tableau automatycznie zamieni typ prezentacji danych ze
słupkowego na wykres liniowy. Ponadto zmienną czasu wyświetlił jako wymiar
dyskretny zagregowany do pełnych lat. Naszym zadaniem jest prezentacja danych
jako szereg czasowy. Aby osiągnąć zamierzony efekt musimy przekonwertować
zmienną czasu na typ ciągły. Kliknięcie prawym przyciskiem myszy na
zmiennej Data zamówienia znajdującej
się na wstędze Columns pozwoli na
wybór sposobu prezentacji zmiennej czasu. Nasze dane posiadają granulację
najniższego rzędu na poziomie dnia. Właśnie w takiej formie chcemy prezentować
dane na wykresie szeregu czasowego. Wybieramy więc granulację Day typu ciągłego (rys. 18).
Rysunek 18 - wybór
granulacji zmiennej daty
Otrzymany wykres sumy zysku w granulacji dziennej przypomina
bardziej biały szum niż oczekiwaną
równię pochyłą. Celem naszej wizualizacji jest przedstawienie sumy
kroczącej, która zobrazuje w czasie proces osiągania bieżącej sumy zysku.
W tym celu wykorzystamy funkcjonalność Quick table calculation. Opcja ta
zawiera predefiniowane pola kalkulacyjne, które są najczęściej wykorzystywane
podczas tworzenia wizualizacji w narzędziu Tableau. Aby przyspieszyć
obliczenia, Tableau zaimplementował popularne kalkulacje w menu kontekstowym.
Kliknijmy prawym przyciskiem myszy w zmienną Zysk znajdującą się na wstędze
Rows i wybierzmy opcję Quick table
calculation->Running total (rys.19). Program automatycznie dokona
kalkulacji na naszej zmiennej Zysk
oznaczając ją dodatkową ikoną delta
(rys.20) informującą nas, że na zmiennej wykonane zostały dodatkowe
obliczenia.
Rysunek 20 - oznaczenie
zmiennej ze skonfigurowaną kalkulacją tabelaryczną
Rysunek 20 - źródło własne
Rysunek 19 - tworzenie
szybkiej kalkulacji tabelarycznej
Efektem modyfikacji wizualizacji jest krzywa o trendzie
rosnącym przedstawiająca przyrost zysku w funkcji czasu. Aby uatrakcyjnić
wykres, oznaczymy kolorem pole powierzchni pod krzywą skumulowanego
zysku. W boksie Marks
redefiniujemy automatyczny dobór typu wykresu wybierając, z listy rozwijanej,
typ Area (rys.21).
Rysunek 21 - wybór typu
wykresu - wykres powierzchniowy
Rysunek 21 - źródło własne
Efekt końcowy wykresu szeregu czasowego po zastosowaniu
szybkich kalkulacji tabelarycznych powinien być zbliżony do poniższego widoku
(rys.22).
Rysunek 22 - źródło
własne
Segment 4 / Segment 5
Budowa pozostałych segmentów oparta jest na podobnych
technikach, do tych, które zostały już przedstawione. Zachęcam do samodzielnej
budowy pozostałych elementów zaproponowanego dashboardu lub stworzenia zupełnie
nowych elementów, które chcieliby Państwo umieścić w swoim raporcie
operacyjnym. Pełne rozwiązanie wraz danymi potrzebnymi do wykonania dashboardu
są dostępne do pobrania po zalogowaniu.
Dashboard - integracja
poszczególnych segmentów
Po przygotowaniu wszystkich segmentów, które chcemy umieścić
w raporcie operacyjnym możemy przejść do etapu integracji w jeden widok -
dashboard. Tworzymy nowy arkusz - Dashboard klikając ikonę Nowy Dashboard (rys.23).
Rysunek 23 - tworzenie
nowego dashboardu
Rysunek 23 - źródło własne
Wstęga zawierająca do tej pory listę zmiennych przeobraziła
się w listę przygotowanych arkuszy. Przeciągając wybrane wizualizacje na
obszar roboczy możemy ułożyć je w pożądanym przez nas układzie (rys.24).
Rysunek 24 - gotowy
dashboard operacyjny
Rysunek 24 - źródło własne
Zachęcam do przygotowania kilku układów kokpitów oraz
zapoznania się z możliwościami formatowania poszczególnych elementów dashboardu.
Jednym z możliwych układów dashboardu operacyjnego jest propozycja, którą dla
Państwa przygotowałem korzystając z opisanych w artykule segmentów.
Autor: Piotr Adamczyk, ASTRAFOX
Autor: Piotr Adamczyk, ASTRAFOX
KOMENTARZE