Kalkulacje w Tableau

Michał Maliszewski, Sebastian Wareluk

lip 23, 2020

Tableau

kalkulacje

Spis treści:

  • Kalkulacje w Tableau – wprowadzenie do Encyklopedii Wiedzy
  • Kalkulacje agregowane i nieagregowane
  • IF i CASE – możliwości funkcji warunkowych i ich zastosowanie
  • Funkcja DATEPARSE czyli jak sobie poradzić, kiedy Tableau nie rozpozna daty?

Kalkulacje w Tableau – wprowadzenie do Encyklopedii Wiedzy

Pisząc rozmaite artykuły lub wpisy blogowe na naszej stronie internetowej, w zespole redakcyjnym, doszliśmy do wniosku, że rzeczą, której istotnie brakuje w zasobach dotyczących Tableau w polskim internecie, jest solidna, poparta przykładami, baza wiedzy o funkcjach kalkulacji, z których możemy korzystać w Tableau.

Kalkulacje w Tableau – co to jest?

Ten wpis będzie artykułem wprowadzającym, do rozwijanego przez nas zasobu wiedzy z tego właśnie obszaru. Zacznijmy zatem od podstaw, co to są te kalkulacje w Tableau, gdzie możemy z nich korzystać i co je odróżnia od formuł w Excelu.

Kalkulacje, a właściwie zgodnie z nomenklaturą Tableau Pola Kalkulowane (Calculated Fields), to formuły, które możemy budować przy zastosowaniu rozmaitych funkcji, zgodnie z przyjętą przez Tableau składnią. Wśród początkujących użytkowników, często pada pytanie, co to jest za składnia? Taka jak Excelu? Python? SQL?

Otóż sama składnia w Tableau jest specyficzna dla tego systemu i najbliżej jej do… języka naturalnego. Przekonasz się w kolejnych wpisach z tej serii, że bardzo łatwo przeczytać i zinterpretować napisaną kalkulację w całkowicie naturalny sposób. Jeśli zaś chodzi o funkcje, to te już bardzo mocno nawiązują do innych środowisk. IIF – znamy z excela, CASE – chociażby SQL, IF – masa różnych technologii. Oczywiście trzeba poznać specyfikę aplikacji w tym zakresie. Na przykład pisząc formułę z kilkoma warunkami z wykorzystaniem funkcji IF, w Tableau będziemy stosować ELSEIF, gdzie np. w Pythonie musielibyśmy użyć ELIF. Jednak z samą konstrukcją kalkulacji aplikacja nam na bieżąco dzielnie podpowiada, dzięki czemu łatwo się zorientować, jakich kolejnych argumentów wybrana funkcja oczekuje.

Czym różni się kalkulacja w Tableau od formuły w Excelu?

Po uruchomieniu Tableau możesz do aplikacji zaimportować dane z których chcesz korzystać. Niezależnie od tego, czy będzie to tylko jedna tabela z pojedynczego pliku, czy będzie to połączenie kilku tabel z różnych baz danych, to Tableau finalnie ‘produkuje’ sobie do pracy w obszarze raportu jedną tabelę płaską. Czyli podobnie jak w Excelu, finalnie pracujemy na tabeli. Jeśli natomiast przygotujesz jakąś formułę w Excelu, to będzie ona zajmowała jedną komórkę (chyba że ją rozciągniemy w jakimś wybranym zakresie). Natomiast zbudowanie pola kalkulowanego w Tableau, będzie skutkowało stworzeniem nowej kolumny w naszym modelu danych (Rys. 1). Doprecyzuję w tym miejscu: Ta nowa kolumna pojawi się tylko w modelu przechowywanym po stronie Tableau. Aplikacja niczego nie zapisze do systemu źródłowego – działa tylko w trybie odczytu.

W jakich miejscach w Tableau możemy tworzyć kalkulacje?

a) Zaczynając od obszaru roboczego, w którym budujemy nasze wizualizacje pola kalkulowane możemy budować w panelu danych, otwierając rozwijane menu na poziomie tytułu górnego panelu Dimensions. Takie samo menu zobaczysz klikając na puste miejsce w panelu danych.

b) Kalkulacje zbudujesz również klikając na pigułkę w panelu danych, prawym przyciskiem myszy. W jej menu kontekstowym, znajdziesz pozycję Create>Calculated Field.

c) Kolejnym miejscem, a właściwie miejscami na obszarze roboczym są obszary, do których można przenosić pigułki w trakcie budowy wizualizacji. Są to tak zwane ‘Calculations in Shelf’. Nie będziemy tutaj korzystali z pełnego edytora, będziemy za to mogli edytować pigułkę (Edit in Shelf) lub stworzyć nową kalkulację już w obszarze wizualizacji.

d) Kalkulacje to nie tylko obszar roboczy przy budowie wizualizacji – wracając do ekranu, w którym budujemy nasz model danych, tam również możemy zbudować kalkulację, jeszcze na etapie przygotowywania naszej tabeli Mogłeś to zaobserwować na rysunku 1. Żeby taką kalkulację stworzyć, klikamy na nagłówek kolumny i wybieramy Create Calculated Field.

e) Ostatnim, lecz równie przydatnym miejscem, które pozwoli nam na stworzenie kalkulacji będzie obszar tworzenia połączenia między tabelami. Tworząc Join’a, wybieramy kolumny z obu tabel, po których ma nastąpić ich połączenie. Może się jednak okazać, że któraś z kolumn będzie wymagała wstępnej obróbki, na przykład usunięcia prefiksów w danych czy skorygowania małych i wielkich liter. Do tego będzie służyła funkcja ‘Create join Calculation’.

Jak tworzyć kalkulacje w Tableau?

Wiemy już gdzie możemy budować kalkulacje, pozostaje pytanie jak to robić? Otóż jeśli chodzi o składnię i poszczególne funkcje, to będzie temu poświęcona cała seria artykułów w ramach Encyklopedii Kalkulacji. Natomiast tutaj, napiszę jeszcze kilka słów o tym, jak korzystać z edytora kalkulacji i jak może nam on ułatwić pracę.

Na powyższym rysunku, widzimy edytor, na którym zaznaczyłem kolejnymi liczbami miejsca, które będą dla Ciebie istotne.

  • Nazwa kalkulacji – zdarza się, że ją pomijamy i zostawiamy domyślną, nadaną przez Tableau. Warto jednak pamiętać o utrzymaniu porządku podczas pracy, żebyśmy po jakimś czasie nie musieli zastanawiać się nad tym, do czego miała służyć np. Calculation12.
  • Obszar, w którym wpisujemy treść naszej kalkulacji i naszym przykładzie wpisana funkcja DATETRUNC().
  • Funkcja, żeby mogła spełnić swoje zadanie, musi mieć przez nas dostarczone wymagane argumenty. O tym jakie to mają być argumenty, informuje nas etykieta. Zgodnie z informacją w niej zawartą, funkcja DATETRUNC oczekuje poziomu daty, na którym chcemy operować (np. ‘year’ albo ‘quarter’) – to jest oznaczone jako date_part oraz daty lub kolumny przechowującej dane w formacie daty, na której chcemy wykonać tę funkcję.
  • Informacja o tym, czy składnia jest poprawna. Jeśli nie jest, tak jak w naszym przypadku, po kliknięciu na ten komunikat otrzymamy informację, czego w naszej formule może brakować.
  • Apply i OK. Dwa przyciski, które będą zapisywać kalkulację. Apply zrobi to bez zamykania okienka kreatora a OK zapisze kalkulacje i zamknie.
  • Lista Dostępnych funkcji, z podziałem na ich typy, w zależności od rodzaju danych, przy których można ich używać.
  • Wzór składni funkcji.
  • Opis jej działania.
  • Przykładowe działanie funkcji.

W kontekście kreatora, warto również wspomnieć o tym, jak możemy do niego dodawać poszczególne funkcje, czy też pigułki symbolizujące kolumny z naszego panelu danych. Możemy je oczywiście zacząć wpisywać i wtedy kreator zacznie nam podpowiadać wszystkie możliwe opcje pasujące do wprowadzonego przez nas tekstu. Dobrze jest również wiedzieć o tym, że pigułki do kreatora możemy przeciągnąć i upuścić w odpowiednim miejscu, tak, żeby całą formułę budować jak przy użyciu klocków.

Kalkulacje w Tableau – znaczenie kolorów tekstu

Ostatnia rzecz, o której chciałbym wspomnieć, to kolory tekstu, jakim Tableau w kalkulacjach oznacza poszczególne elementy:

  • Elementy instrukcji takich jak IF czy CASE – kolor czarny
  • Funkcje i agregacje – kolor niebieski
  • Tekst zawarty w znacznikach ‘tekst’ lub ”tekst” – kolor szary
  • Kolumny danych – kolor pomarańczowy
  • Parametry – kolor fioletowy

Przy pierwszym uruchomieniu Tableau, kiedy otworzysz kreator kalkulacji, może się zdarzyć, że nie będziesz widział panelu z funkcjami po prawej stronie. Jest on domyślnie zminimalizowany ale możesz go otworzyć przy użyciu strzałki, która znajduje się na prawej krawędzi okna (na powyższym rysunku, zaznaczona na zielono).

To już wszystko, co na początek powinieneś wiedzieć o kalkulacjach. Z takim przygotowaniem z powodzeniem będziesz mógł się zagłębić w nasze kolejne artykuły o kalkulacjach.

Kalkulacje agregowane i nieagregowane.

Aplikacja Tableau w założeniu ma być łatwa dla użytkownika biznesowego. To oznacza również łatwość budowania nowych kalkulacji, pól, z których możemy później korzystać podczas budowy wizualizacji. Tworzenie formuł jest proste i choć są one specyficzne dla Tableau, dla użytkowników Excela czy zapytań SQL nie będą sprawiać żadnych trudności. Kalkulacje w Tableau działają jednak inaczej niż w przypadku Excela – jako, że Excel jest arkuszem kalkulacyjnym, formułę tworzymy w jednej komórce, a następnie możemy ją multiplikować na całą kolumnę danych. Tableau tymczasem po skonstruowaniu kalkulacji, tworzy de facto nową kolumnę z danymi, tworząc tym samym nowy wymiar bądź miarę, w zależności od potrzeb.

Pole kalkulowane wywołujemy po lewej stronie ekranu, tam gdzie widnieją już kolumny z podłączonego źródła danych:

Po włączeniu opcji „Create Calculated Field” pojawia się okno z pustym miejscem na tworzenie kalkulacji:

Po prawej stronie znajduje się strzałka, rozwijająca menu kalkulacji/formuł, których możemy używać w Tableau:

Kalkulacje możemy tworzyć, wybierając je z menu z prawej strony, bądź pisać w pustym oknie. Wtedy asystent tworzenia kalkulacji podpowie nam formuły bądź pola, których możemy użyć w kalkulacji.

Pola możemy też wstawiać poprzez użycie funkcjonalności drag & drop, przeciągając pola na okno kalkulacji.

Agregacja w Tableau

Zanim zajmiemy się tym, czy kalkulacje powinny być agregowane na etapie tworzenia, czy też na etapie wizualizacji, kilka słów o agregatach właśnie.

Tableau, jako aplikacja służąca do wizualizacji danych, działa na agregatach. Łatwo to zauważyć, kiedy przeniesiemy jakieś pole z grupy Measures (miary) do wierszy:

Miara Sales, która w bazie danych pokazuje wartość sprzedaży na poziomie pojedynczego wiersza, jest automatycznie agregowana do sumy: SUM(). Ten typ agregacji może zostać również zmodyfikowany, na poziomie menu pigułki:

Takich agregacji możemy użyć również w kalkulacji.

Kalkulacja agregowana i nie-agregowana:

Jeśli tworzymy nową miarę w Tableau przy pomocy kalkulacji, możemy użyć agregatu wewnątrz, bądź pozwolić na jej agregację już w widoku.

W przypadku użycia agregacji na widoku, kalkulacja liczona jest na poziomie pojedynczego wiersza w bazie, a następnie agregowana w dowolny sposób w widoku.

Jeśli chcielibyśmy policzyć profit ratio na poziomie pojedynczego wiersza, wtedy użyjemy kalkulacji nieagregowanej:

Taka kalkulacja podzieli nam zysk przez sprzedaż na poziomie pojedynczego wiersza, a następnie w widoku agreguje wynik:

Suma takiego wyniku nie ma sensu, natomiast średnia już tak:

Jednakże w sytuacji, w której chcielibyśmy policzyć faktyczny wskaźnik na wyższym poziomie agregacji, Segmencie lub Kategorii produktu, prawidłowe będzie użycie agregacji wewnątrz kalkulacji:

W ten sposób policzymy sumę sprzedaży i zysku na dowolnym poziomie agregacji, a następnie podzielimy obie wartości przez siebie, uzyskując faktyczną wartość wskaźnika zyskowności na poziomie całej bazy:

Jak również na dowolnym poziomie szczegółowości, na przykład na poziomie Segmentu (Segment):

I kategorii (Category):

IF i CASE – możliwości funkcji warunkowych i ich zastosowanie.

IF i CASE to kalkulacje znane z SQL języka zapytań, w Tableau lekko zmodyfikowanych, aby ułatwić pracę z nimi w narzędziu łatwym dla biznesu.

Obie kalkulacje pozwalają na zbudowanie wymiarów bądź miar, opartych na określonych warunkach.

Kalkulacje IF w Tableau

Jeśli pracujecie z Excelem, znana jest wam funkcja JEŻELI(), która pozwala na sprawdzenie określonego testu i przypisanie wartości w nowej komórce.

Tableau działa podobnie, z tym że dana kalkulacja działać będzie na całej bazie danych. Innymi słowy, stworzenie pola kalkulowanego tworzy całą kolumnę z danymi.

W zależności od tego, czy użyjemy kalkulacji na poziomie wiersza danych, czy agregacji, kalkulacja będzie wyliczana albo na poziomie wiersza, albo dopiero na wizualizacji, na określonym przez wymiary poziomy szczegółowości.

Kalkulacja IF ma konstrukcję następującą:

IF <expr> THEN <then> [ELSEIF <expr2> THEN <then2>…] [ELSE <else>] END

Gdzie <expr> jest jakimś wyrażeniem, np. równaniem czy nierównością,

<then> oznacza zwracaną wartość w tworzonym polu, a <else> oznacza zwracaną wartość w pozostałych przypadkach.

Dobrym przykładem jest stworzenie kalkulacji, która może dać nam możliwość formatowania warunkowego, poprzez dodanie powstałej kalkulacji do półki Color w Marks Card.

Przykładem takiej warunkowej kalkulacji może być znalezienie handlowców, którzy wykonali cel:

If Sum([Sales])>SUM([Sales Target Extract].[Sales Target])

THEN “Above Target”

ELSE “Below Target” END

Powyższa kalkulacja podzieli nam wszystkich Handlowców na dwie kategorie, które możemy pokazać jako nowy wymiar, lub pokolorować wizualizację, podobnie jak przez formatowanie warunkowe w Excelu.

Kalkulacja IF z wyrażeniami AND i OR w Tableau

W kalkulacji IF możemy używać też wyrażeń takich jak AND czy OR, które pozwalają nam dodać więcej warunków sprawdzanych jednocześnie.

I tak, jeśli chcemy np. sklasyfikować Sprzedawców, według poziomu realizacji targetu na więcej niż dwie grupy,  możemy zrobić to tak:

If Sum([Sales])/SUM([Sales Target Extract].[Sales Target])>=1 then “Above Target”

ELSEIF  Sum([Sales])/SUM([Sales Target Extract].[Sales Target])<1 AND Sum([Sales])/SUM([Sales Target Extract].[Sales Target])>0.8

THEN “Close to Target”

ELSE “Below Target”

END

Kalkulacja powyższa podzieli nam handlowców na 3 grupy:

W ten sposób możemy tworzyć  klasyfikacje, grupowanie dynamiczne, ale oczywiście użycie kalkulacji IF nie musi być ograniczone tylko do tego rodzaju segmentacji.

Kalkulacja CASE w Tableau

Kalkulacja CASE, odnosząca się do wartości danego pola, kolumny danych bądź parametru, jest czasem wygodniejsza, jako że może zawierać wiele wierszy warunków dotyczących tej wartości.

Struktura kalkulacji wygląda następująco:

CASE <expression> WHEN <value1> THEN <return1> WHEN <value2> THEN <return2> … ELSE <default return> END

Analogicznie jak w wypadku IF, <expression> to wyrażenie, <return> – co ma zwracać pole.

Możemy przy pomocy CASE korzystać z wartości parametru(wtedy to parametr będzie wyrażeniem), która przy zmianie jego wartości, zmienia wartość wyliczanego przy pomocy CASE pola.

Takim przykładem może być użycie parametru w postaci listy, gdzie parametr zmienia sposób wyliczenia:

CASE <parametr>

WHEN „PLN” THEN <wartość>

WHEN “USD” THEN <wartość>*<kurs USD>

END

Parametr pozwala pokazać wartość w PLN albo USD, w zależności od wyboru wartości parametru.

Obie kalkulacje to jedne z częściej używanych formuł w Tableau, warte poznania, jeśli chcemy budować efektywne dashboardy.

Dzięki temu rozwiązaniu możemy w łatwy sposób analizować wskaźnik na dowolnym poziomie szczegółowości.Jeśli natomiast formuła, jakiej chcesz użyć, będzie liczyć prawidłowo zarówno na poziomie pojedynczego wiersza, jak i dowolnej agregacji, jak np. w dodawaniu, wtedy lepiej użyć kalkulacji w postaci nieagregowanej – dzięki takiemu podejściu będziemy mogli użyć dowolnej agregacji w widoku, zarówno sumy, jak i średniej czy wartości maksymalnej.

Funkcja DATEPARSE czyli jak sobie poradzić, kiedy Tableau nie rozpozna daty?

Zarówno Tableau Desktop jak i Tableau Prep, po podłączeniu danych, starają się automatycznie rozpoznać ich typy. Z reguły się to udaje i nie musimy specjalnie ingerować w ustawienia, które system samodzielnie dobiera. To samo dotyczy rozpoznawania daty. Analizując dane w poszczególnych kolumnach, Tableau jest w stanie rozpoznać kilkadziesiąt formatów daty i na tej podstawie przyporządkować kolumnie odpowiedni typ danych. Jeśli jednak okaże się, że aplikacja sobie z jakiegoś powodu nie poradziła, to możemy jej w tym pomóc, zmieniając typ danych ręcznie, w nagłówku kolumny w podglądzie modelu danych, lub klikając na ikonę typu danych, w panelu danych, już na etapie pracy przy budowie wizualizacji.

Może się jednak okazać, że i to nie pomoże, a po zmianie typu danych z tekstu na datę, kolumna wypełni się NULL’ami.

Czy to oznacza dla nas ślepą uliczkę? Absolutnie nie. Właśnie w takiej sytuacji może nam pomóc funkcja DATEPARSE, która służy do ręcznego określenia formatu daty w polu tekstowym, przy użyciu kalkulacji. Gotowe pole kalkulowane będzie domyślnie przyjmować typ danych daty, dzięki czemu z powodzeniem uporasz się nawet z najbardziej skomplikowanym zapisem.

Żeby to zobrazować, posłużę się prostym przykładem; Przypuśćmy, że mamy kolumnę z datą w formacie takim, jak na rysunku obok. Trzy litery opisują miesiąc, następnie mamy separator oraz rok.

Pominę tutaj fakt, że w takim przypadku, Tableau poradzi sobie z nadaniem typu danych po prostu po wybraniu daty w nagłówku. Spróbujmy jednak stworzyć datę przy pomocy kalkulacji. Tworzymy nowe pole kalkulowane i wybieramy funkcję DATEPARSE. Na rysunku po lewej, możesz zauważyć, że funkcja oczekuje dwóch argumentów – wzoru zapisu daty, w naszym przypadku będzie to ‘MMM-yyyy’, oraz informacji, na której kolumnie tekstowej, kalkulacja ma być wykonana. W tym przykładzie będzie to oczywiście kolumna Data. Na rysunku po prawej możesz zobaczyć jak cała kalkulacja powinna wyglądać oraz kolumnę, która powstała po zapisaniu pola kalkulowanego.

Jak określać wzór daty?

Kolejne pytanie, które naturalnie rodzi się po przeczytaniu poprzedniego akapitu dotyczy tego, jak możemy poprawnie określić wzory daty? Czy jest do tego jakaś instrukcja? Wszak w przykładzie wspominaliśmy o rzeczach prawie oczywistych, tj. miesiąc i rok. Daty natomiast, szczególnie te, z którymi w praktyce możemy mieć trudności będą zdecydowanie bardziej rozbudowane i mogą zawierać chociażby informacje dużo bardziej szczegółowe. Np. data i czas z dokładnością do setnych sekund.

Przytoczę tutaj tabelę wszystkich symboli, które możemy wykorzystać w pisaniu takich formuł. Tabela pochodzi z zasobów help.tableau.com i moim zdaniem jest najbardziej rzetelnym źródłem takich informacji.

Spróbujmy zatem poradzić sobie, z nieco bardziej rozbudowanym przykładem. Tym razem, próbka daty, ma następującą postać: 2018-07-16 00:00:00.000. Dobierając odpowiedni wzór wg powyższej tabeli, takie pole tekstowe, może również zostać skonwertowane na datę.

Pamiętaj również o tym, że drugi argument funkcji, musi ‘finalnie’ pasować do określonego wzoru. Mówię finalnie, ponieważ poza datą mogą się w kolumnie znajdować jakieś dodatkowe, nie istotne elementy, których możemy się również wewnątrz kalkulacji pozbyć. Na rysunku poniżej zobaczysz, jak możesz sobie poradzić w sytuacji, kiedy datę poprzedza jakiś prefiks:

Na koniec, chciałbym Ci jeszcze powiedzieć, że powyższą tabelę, możesz wykorzystać do jeszcze jednej rzeczy. Kiedy definiujesz właściwości daty w panelu formatowania, możesz wybrać kilka dostępnych formatów daty, lub zdefiniować własny, w pozycji Custom. Okienko Custom przyjmuje wzory daty zgodne z tym, o czym wcześniej pisałem.

A co jeśli DATEPARSE nie działa? Lub jeśli funkcja jest niedostępna? Na to również mamy receptę, w postaci funkcji DATE, o której już wkrótce napiszemy w kolejnym artykule.