Wprowadzone już w wersji Tableau 9.0 kalkulacje LOD (Level Of Details) wprowadziły małą rewolucję w elastyczności obliczeń w Tableau. W czym tkwi ich wyjątkowość? Najprościej mówiąc kalkulacje LOD pozwalają na tworzenie i wyświetlanie kalkulacji na innym poziomie szczegółowości niż dane wyświetlane na naszej wizualizacji. Tworząc kalkulacje w Tableau możemy tworzyć je na poziomie wierszów (row level) – przykładowo [sales] / [orders]. Drugą opcją jest agregacja miar – czyli sum([sales]) / sum ([orders]). Jeżeli natomiast chcielibyśmy poznać różnicę pomiędzy miarą a jej średnią – czyli np. [sales] – avg([sales]), Tableau zwróci nam błąd Cannot mix aggregate and non-aggregate arguments with this function. Dzięki LOD takie obliczenia są możliwe, co daje analitykom większą elastyczność w kalkulacjach.
FIXED LOD – zamrażamy wymiary
Najprościej zrozumieć koncept LOD przy pomocy wyrażenia FIXED. Wyrażenie to niejako zamraża nam wymiary (dimensions), wg których kalkulowana jest miara dla zadanej agregacji (sum, avg, min, max etc.). Składnia wyrażenia jest następująca (wyrażania LOD zawsze ubieramy w nawiasy klamrowe):
1 – rodzaj wyrażenia LOD (oprócz FIXED są też INCLUDE oraz EXCLUDE – o tych wyrażeniach w kolejnym akapicie)
2 – wymiary wg których będzie odbywać się agregacja (może być zero, jeden i więcej – wtedy wymieniamy po przecinku)
3 – sposób agregacji (suma, średnia, min, max etc)
4 – agregowana miara
Na czym polega różnica pomiędzy standardową kalkulacją, a LOD? Na wykresie poniżej widzimy porównanie sumy sprzedaży wg segmentów i kategorii oraz LOD z zamrożonym wymiarem Segment. Jak widać kalkulacja nie bierze pod uwagę podziału wg kategorii, a obliczana jest jedynie na poziomie wymiaru Segment. Dlatego też wartość tej kalkulacji jest taka sama dla każdej kategorii.
Aby lepiej zobrazować ten przykład, dodamy kolejną miarę – LOD FIXED na poziomie Category. Jak widać dla każdej kategorii wartości powtarzają się w każdym segmencie.
FIXED LOD – stosujemy w praktyce
Powstaje pytanie do czego przydaje się FIXED LOD. Zastosowań jest oczywiście sporo, natomiast skupię się na kilku podstawowych. Po pierwsze – procent całości. Dzięki FIXED LOD możemy wyznaczyć miarę na zadanym (wyższym) poziomie agregacji, a następnie podzielić miarę na niższym poziomie przez tę miarę, uzyskując procent całości:
Żądany efekt możemy oczywiście uzyskać stosując Table Calculations, ale przy TC musimy pamiętać o odpowiedniej parametryzacji funkcji i jej zmianie przy zmianie układu wizualizacji. W przypadku LOD mamy sztywną kalkulację którą możemy stosować dowolnie.
Kolejnym zastosowaniem jest poszukiwanie maksymalnej wartości i następnie porównanie jej do innych wartości. Załóżmy, że chcemy szybko znaleźć maksymalne zamówienie – i dla której kategorii ono występuje. Wykorzystując pole kalkulowane: {FIXED: max([Sales])} i następnie do wyznaczenia różnicy ([Sales])-{FIXED: max([Sales])} od razu widzimy, że największe zamówienie wystąpiło dla sub-kategorii Machines/Technology:
Ostatnim przypadkiem będzie porównanie wartości sprzedaży do wartości danej kategorii. Załóżmy, że chcemy porównać sprzedaż wszystkich kategorii do wartości sprzedaży w kategorii Supplies/Office Supplies. W tym celu wyznaczamy pole kalkulowane:
Natomiast po dodanie pola do naszej tabeli, wartość zgodnie z kalkulacją będzie wyznaczona tylko dla sub-kategorii Supplies. Aby ominąć ten problem, dodamy kalkulację LOD:
Dzięki temu osiągamy efekt:
Nie tylko FIXED – Kalkulacje LOD INCLUDE oraz EXCLUDE
FIXED jest jednym z rodzajów LOD, natomiast nie jedynym. Oprócz tej opcji mamy do wyboru również INCLUDE oraz EXCLUDE. Zacznijmy od INCLUDE. Jak nazwa wskazuje, ten rodzaj LOD dodaje do kalkulacji wymiary, których nie mamy na wizualizacji. Załóżmy, że chcemy poznać średnią sprzedaż wg klientów. Jeżeli umieścimy na wizualizacji pole Sales w agregacji Average, wtedy uzyskamy średnią na poziomie wiersza (transakcji/zamówienia). Jeżeli natomiast dodamy LOD INCLUDE, wtedy przy kalkulacji zostanie wzięty pod uwagę klient (customer name):
Agregując miarę wg średniej, uzyskujemy średnią sprzedaż po klientach – a nie po transakacjach jak w przypadku standardowej miary.
Skoro INCLUDE dodaje wymiary do kalkulacji, EXCLUDE działa dokładnie odwrotnie – eliminuje wymiary z kalkulacji. Chcąc w analizowanym przypadku wyznaczyć sprzedaż wg kategorii, możemy zastosować EXCLUDE LOD:
Uzyskując podobny efekt do funkcji FIXED:
Kalkulacje LOD- FIXED, INCLUDE CZY EXCLUDE?
FIXED LOD jest najczęściej stosowany i najbardziej praktyczny. Przy zastosowaniu FIXED możemy osiągnąć dokładnie te same efekty, co przy zastosowaniu INCLUDE oraz EXCLUDE. Więc aby nie mieszać zbytnio w składni często czysto praktycznie analitycy wykorzystują głównie FIXED. Należy pamiętać o jednej zasadniczej różnicy, mianowicie różnej pozycji kalkulacji FIXED oraz INCLUDE/EXCLUDE w kolejności obliczeń Tableau (order of operations):
FIXED LOD jest kalkulowany przed filtrami wymiarów (Dimensions), a INCLUDE/EXCLUDE po. Ma to wpływ na sposób kalkulacji, dlatego należy o tym pamiętać i w razie konieczności dodać filtry do kontekstu (czyli przenieść z Dimension do Context filters).
QUICK LOD – proste tworzenie kalkulacji
W jednej z ostatnich wersji Tableau (2021.1) została dodana opcja szybkiego tworzenia kalkulacji LOD. Aby stworzyć szybkie FIXED LOD wystarczy wybrać miarę, następnie z wciśniętym przyciskiem control na klawaiaturze przenieść miarę na wybrany wymiar, według którego chcemy zagregować miarę. Automatycznie stworzy się nowe pole kalkulowane zawierające odpowiednią składnię:
Niestety poza stworzeniem pola i składnią rozwiązanie nie dostarcza zbyt wielu opcji – nadal bardziej zaawansowanego przypadku musimy samodzielnie edytować, dodając nowe wymiary lub zmieniając agregacje. Niemniej jest to pewne ułatwienie zwłaszcza dla początkujących użytkowników.
Mateusz Karmalski,
Tableau Author