Gdzie join, gdzie blending, a gdzie relacje
Joiny, blendowanie i relacje to metody na budowanie modelu danych złożonego z kilku tabel. W Tableau od wersji 2020.2 model danych składa się z dwóch warstw – logicznej i fizycznej. Wcześniej korzystaliśmy tylko z warstwy fizycznej. Otwierając teraz podgląd podłączenia danych w Tableau widzimy warstwę logiczną, co wygląda tak:
Prostokąty reprezentują tu poszczególne tabele logiczne, a krzywe – relacje je łączące. Jeśli będziemy mieć jedną tabelę logiczną, pojawi się tylko jeden prostokąt. Gdzie tu miejsce dla joinów i blendingu? Otóż należą do narzędzi warstwy fizycznej. Do kompletu wymienić należy jeszcze uniony. One także są związane z warstwą fizyczną.
Tabele logiczną można wyobrazić sobie jako pudełko. W jego wnętrzu kryje się jej warstwa fizyczna. Na nią składają się tabele fizyczne – zaczerpnięte z bazy, Excela, czy innego źródła. Do łączenia tabel fizycznych służą nam joiny i blending właśnie. By dostać się z poziomu tabeli logicznej do jej warstwy fizycznej, klikamy dwukrotnie w wybrany prostokąt. Wewnątrz zobaczymy takie połączenie do danych, z jakim mieliśmy do czynienia w starszych wersjach Tableau, czyli na przykład takie:
Co ciekawego kryją joiny?
Joiny prawdopodobnie znane są większości czytelników, ale dla przypomnienia kilka zdań wprowadzenia.
Pozwalają one łączyć tabele. W Tableau Desktop jest ich 4 rodzaje: inner join, left join, right join i outer join. Wszystkie opierają się o łączenie tabel w oparciu o ich wspólne pole (kolumnę) lub pola. Pierwszy – inner join – to część wspólna dwóch tabel. Drugi – left join – powstaje, gdy do pierwszej (lewej) tabeli dołączymy pasujące wiersze z drugiej (prawej). Tam, gdzie nie ma danych tabela pozostaje pusta. Right join to zwierciadlane odbicie left joina. Tylko dane dopinamy do tabeli prawej, bo z niej chcemy wziąć wszystkie informacje. Wreszcie outer join zbiera wszystkie dane z obu tabel, pozostawiając puste komórki, tam gdzie brak danych. Podsumowanie tej logiki znajdziecie w poniższym diagramie.
Na tym jednak zabawa z joinami się nie kończy. Kiedy otworzymy klikając dwa razy na symbolu joina okno jego edycji widać, że do wyboru mamy również operatory. Zwykle wybiera się opcję domyślną „równość”. Warto jednak pamiętać i o pozostałych.
Wyobraźmy sobie taką sytuację. Sklep ma dwie tabele z danymi o klientach. W pierwszej jest informacja klientach w programie lojalnościowym – o dacie przystąpienia, opcjach. W drugiej zbiorcza informacja o wszystkich zakupach wszystkich klientów. Chcemy przeanalizować wybory klientów należących do programu lojalnościowego. Jeśli decydujemy się na pracę z tabelą fizyczną, a nie z relacjami potrzebujemy zbudować odpowiedni join. Tylko jaki? Na pewno potrzebujemy informacje wyłącznie o klientach z programu. Pozostali nas tym razem nie interesują. A zatem left join, gdzie lewą tabelą będzie z danymi programu. Polami łączącymi powinny być identyfikator klienta i data. W pierwszym przypadku wystarczy równość. Z bazy ogólnej chcemy dane tylko o klientach uczestniczących w programie. W przypadku daty potrzebujemy informacje o zakupach dokonanych od dnia dołączenia do programu, czyli [Data przystąpienia]<= [Data zakupu]. Sprawę załatwi operator „<=”.
Gdy łączymy dane relacjami w warstwie logicznej, wyborem operatora kieruje dokładanie ta sama logika.
O blendingu słów kilka
Czym jest w takim razie blending? Najprościej rzecz biorąc rodzajem left joina tworzonego, gdy powstaje taka potrzeba, ad hoc. Gdy łączymy tabele joinem efektem jest powstanie nowej tabeli odpowiednio zbudowanej na bazie dwóch pierwotnych. W przypadku blenda tworzymy left join, który działa tylko na potrzeby jednej wizualizacji, czy kalkulacji. Przy blendowaniu nie powstaje „stała tabela”.
Kiedy korzystać z takiego rozwiązania? No cóż, aż prosi się odpowiedzieć „Rzadko!”. Historycznie blendowanie służyło do łączenia tabel z różnych baz. Dziś w zasadzie tylko do łączenia danych o różnym poziomie agregacji. Do tego w większości sytuacji, gdy były potrzebne blendy, wygodniej dziś jest zastosować relacje. Dziś ich zastosowanie ogranicza się do modeli danych ze „spacial join-ami”, (połączeniami danych geograficznych) i takimi, do których dołączane są tabele z uprawnieniami. W tych dwóch przypadkach model zbudowany w oparciu o relacje nie może być przełączony na tryb extract. Extract to istotna rzecz dla szybkości pracy. W takiej sytuacji ważne jest, by pełne połączenie danych odbyło się w tabeli fizycznej w oparciu o joiny, uniony i blending właśnie.
Przykład? Do danych dziennych o regionach sprzedaży dołączamy ich kształty, by pokazać je na mapie. Jednocześnie potrzebujemy wartości kwartalnych celów sprzedaży. Jeśli dodamy je joinem, wartość celu zostanie powtórzona dla każdego wiersza w tabeli, czyli dnia. W takiej sytuacji łatwo o błąd i dodanie wartości wielokrotnie. Jeśli cele dołączymy blendem problemu nie będzie.
Czy korzystać z joinów mając do wyboru relacje?
Łączenie tabel logicznych relacjami pozwala nie łączyć tabel na stałe, dzięki czemu zyskuje się na szybkości pracy. Z drugiej strony do nowego rozwiązania trzeba się nieco przyzwyczaić. Chodzi tu zwłaszcza o sytuacje, kiedy nulle w tabelach są wyświetlane lub nie. Jeśli ktoś czuje się pewniej pracując z dotychczasowymi rozwiązaniami w tabelach fizycznych, nic nie stoi na przeszkodzie. Raporty będą działać bez problemów. Kłopot może wystąpić wyłącznie w odwrotnej sytuacji. Wersje Tableau starsze niż 2020.2 nie czytają raportów zbudowanych w oparciu o relacje. Joiny jednak zadziałają w każdej sytuacji.
Agata Mężyńska
Tableau Desktop Certified Professional