Blog
1.2.2020

JOINS vs BLENDING

Spis treści:
Tagi:
No items found.
Klient:
Autor:
Mateusz Różański

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

join table z primary key

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.

Typy relacji między tabelami

Relacje między tabelami definiujemy w karcie Data Source.

Definiowanie relacji między tabelami

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).

Definiowanie Cross-database Join

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.

Oznaczanie atrybutów kolorami i opisem

Pola rozróżnione kolorem to mała rzecz a cieszy.

Pola rozróżniane kolorem

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.

Łączeni sprzedaży z targetem

Krok 1

Data Blending znajdziemy w Menu->Data->Edit Relationships

Data Blending znajdziemy w Menu

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.

Definiowanie „relacji” między źródłami

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.

Budowanie Bullet Graph

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ę.

Secondary data source Targets

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!

,
No items found.