W tym artykule omawiamy różnice między JOIN, CROSS-DATABASE JOIN a DATA BLENDING. Zwłaszcza te dwa ostatnie zagadnienia mogą być problematyczne dla nowych użytkowników. Nieraz spędzają sen z powiek starym wyjadaczom. Warto uporządkować wiedzę na temat tych funkcjonalności i przekazać kilka wskazówek, w jakich okolicznościach najlepiej się one sprawdzą, a jakie są ich ograniczenia.
JOIN
Relacyjne bazy danych są zbudowane z tabel połączonych ze sobą określonymi polami tzw. kluczami. Każdy wiersz tabeli jest rekordem z unikalnym identyfikatorem w postaci klucza. Kolumny tabeli zawierają atrybuty danych, a każdy rekord ma zwykle wartość dla każdego atrybutu, co ułatwia ustalenie relacji między punktami danych.
Przykład takiej relacji między tabelami
Dla przykładu, systemy ERP zbudowane są na relacyjnych bazach danych, które zawierają tzw. tabele faktów czyli zdarzeń (sprzedaży, ruchów magazynowych, księgowań, zamówień itd.) oraz tabele słownikowe, które określają dane podstawowe wszystkich podmiotów, które generują fakty (klienci, produkty, elementy struktury organizacyjnej).
Próbując odpowiedzieć na proste pytanie biznesowe „Jaka była sprzedaż w zeszłym roku do top 10 klientów w kategorii X?” musimy odpytać połączone tabele faktów sprzedaży oraz słowniki klientów i produktów. Odpytując system przesyłamy zapytanie do bazy danych, które łączy tabele faktów ze słownikami tworząc logiczną i kompletną strukturę.
To tak tytułem wstępu dla osób, które słowo JOIN widzą po raz pierwszy. W Tableau wspaniałe jest to, że nie musicie mieć wiedzy o relacyjnych bazach danych, aby łączyć tabele. Ponieważ odbywa się to w sposób bardzo intuicyjny i wizualny.
Najważniejsze jest zrozumienie typów połączeń i implikacji każdego typu połączenia, które w rezultacie mogą zwracać różną ilość rekordów.
Poniższa grafika jest podsumowaniem typów i efektów operacji JOIN.
Relacje między tabelami definiujemy w karcie Data Source.
JOIN wykonujemy z użyciem tabel z tego samego źródła (1) w tym przypadku arkusze Excela, łączymy je za pomocą jednego z 4 typów połączeń (2). Aby nawiązać relację między tabelami wskazujemy pole klucz z tabeli Orders i klucz z tabeli Returns. Został wybrany typ połączenia LEFT JOIN dlatego, że nie wszystkie zamówienia zostały zwrócone przez klientów a chcemy policzyć odsetek zwróconych zamówień z całości.
Podsumowanie
JOIN na tym samym typie źródła danych powinien być pierwszym wyborem, ponieważ jest najbardziej wydajny i daje największe możliwości łączenia i przekształcania połączonych tabel w źródło danych. Operacja JOIN w Tableau wykonywana w sposób wizualny poprzez interfejs jest tłumaczona na język VizSQL i działa tak samo jak zapytanie w klasycznym SQL.
Zalety:
- Najbardziej wydajny typ połączenia tabel
- Możliwość tworzenia relacji po polach kalkulowanych
- Możliwość tworzenia relacji z użyciem wielu pól
Ograniczenia:
- Typowe dla relacji między tabelami
- Typowe dla typu bazy danych i dialektu SQL
CROSS-DATABASE JOIN
To użyteczna funkcjonalność, którą możemy wykorzystać aby połączyć, na poziomie wierszy, tabele z różnych typów źródeł danych. Na przykład tabelę z Microsoft SQL Server z plikiem Excel oraz csv.
Łączenie tabel w relacje odbywa się w taki sam sposób i z zachowaniem tych samych zasad jak przy zwykłych JOIN.
Definiowanie Cross-database Join
Klikając niebieskie Add, do tabeli Orders z bazy Microsoft SQL Server (1) dodajemy kolejne pierwotne źródło danych tj. plik Excel ze zwrotami (2).
Tworzymy relacje dokładnie tak jak w pierwszym przykładzie. Zwróćcie uwagę, że Tableau identyfikuje pochodzenie atrybutów poprzez oznaczenie ich kolorami i opisem.
Pola rozróżnione kolorem to mała rzecz a cieszy.
Zalety:
- Pozwala łączyć różne typy baz i plików (nie wszystkie w dowolnych konfiguracjach)
- Łącznie odbywa się w taki sam sposób jak JOINy dlatego jest intuicyjne
Ograniczenia:
- Generuje problemy wydajnościowe, ponieważ dane są łączone lokalnie na dysku a nie po stronie bazy
- Nie działa UNION z tabel z różnych typów źródeł (ale UNION z jednego źródła + JOIN z drugim już tak)
- Nie wszystkie typy kalkulacji mogą być wykorzystane do utworzenia relacji
- Nie można używać funkcjonalności Pivot
DATA BLENDING
Blendowanie to unikalna i bardzo użyteczna funkcjonalność Tableau, która działa wyłącznie na poziomie arkusza (konkretnej wizualizacji) tworząc relacje między niezależnymi zbiorami danych. Działa podobnie jak LEFT JOIN. Łączenie tabel działa po agregacji. Znaczy to, że dane z Primary oraz Secondary data source są pobierane, agregowane do określonego poziomu szczegółowości a później łączone na poziomie wizualizacji.
W przeciwieństwie do operacji JOIN na tabelach relacyjnych, która najpierw łączy tabele na poziomie rekordów respektując klauzule INNER, LEFT, RIGHT, FULL OUTER a później dokonuje agregacji. Data Blending łączy źródła ad hoc i pozostają one niezależne.
Kiedy używać JOIN?
Kiedy mamy możliwość sięgam najpierw po JOIN ale są przypadki kiedy Data Blending wygrywa. Zwłaszcza, kiedy chcemy na jednym dashboardzie połączyć filtrem dwie lub więcej wizualizacji zbudowanych z różnych źródeł danych, a których nie da się sensownie połączyć poprzez JOIN (np. przez różne poziomy szczegółowości).
Jak Blendować?
W naszym scenariuszu łączę wykonanie sprzedaży z targetem. Wykorzystam Blendowanie, ponieważ target mam w pliku Excel tylko na poziomie producenta a realizację symuluję z systemu sprzedażowego w oparciu o bazę Sample – Superstore.
Krok 1
Data Blending znajdziemy w Menu->Data->Edit Relationships
Krok 2
Definiuję „relację” między źródłami. Primary (1) oraz Secondary (2) poprzez wskazanie wspólnych wymiarów, które pozwolą dołączyć zagregowany target (3). Jeśli nazwy nie zostały rozpoznane, robię to ręcznie, klikając Add/Edit.
Krok 3
Buduję wykres pociskowy (Bullet Graph) pokazujący wykonanie vs target. Na razie zaczynam od przedstawienia wykonania. Moim głównym Primary data source jest Sample – Superstore.
Krok 4
Klikam na Secondary data source Targets po to by dociągnąć miarę Target. Wrzucam ją do Marks i tworzę linię referencyjną w oparciu o tą miarę.
W kilku krótkich krokach udało się wykonać zadanie.
O czym pamiętać przy Blendowaniu?
- Kolejność wybrania pola ze źródła ma znaczenie. Pierwsze użyte pole determinuje tzw. Primary vs Secondary data source (Niebieski „ptaszek” = Primary, Pomarańczowy „ptaszek” = Secondary)
- Zawsze zweryfikuj relację, która została utworzona. Czy relacja jest aktywna na wizualizacji rozpoznasz poprzez czerwony łańcuch.
- Jeśli zobaczysz asterisk, oznacza to, że wiele punktów danych odwołuje się do twojego punktu na wizualizacji. Blending nie obsłuży relacji jeden do wielu.
Zalety
- Pozwala łączyć różne źródła danych, które trudno logicznie połączyć poprzez JOIN lub UNION
- Pozwala łączyć różne źródła gdy nie mam możliwości użycia cross-database Join
- Ułatwia pracę jeśli chcemy zrobić szybkie zestawienie z dwóch źródeł
Ograniczenia
- Performance – Ponieważ Tableau ściąga każde źródło osobno, a następnie wykonywane są zapytania do tych źródeł, które są łączone na poziomie wizualizacji, możemy doświadczyć wolnej pracę naszej analizy. Wszystko zależy od:
- ilości połączonych źródeł
- ilości danych w każdym ze źródeł
- poziom szczegółowości na poziomie analizy
- Wymuszona agregacja – miary mogą być wyłącznie zagregowane do poziomu segmentów na wizualizacji. Nie ma możliwości użycia kalkulacji LOD.
- Niedostępność niektórych agregacji np. COUNTD, MEDIAN
- Wymuszona relacja 1:1 – relacja 1 do wielu pokaże błąd w postaci asterisk*.
JOIN powinien być zawsze pierwszym wyborem, ponieważ takie połączenie tabel daje nam pełną paletę możliwości w manipulowaniu danymi. Jednak nie zawsze jest to możliwe, dlatego też nie raz sięgamy po Data Blending. Mam nadzieję, że ten artykuł przybliżył Wam ten budzący wiele wątpliwości i pytań temat.
Happy Blending!