Funkcje łączenia tabel JOIN są ekstremalnie użyteczne w codziennej pracy analityka. Ich użycie prezentuje się następująco:
SQL
CREATE TABLE TABELA_JOIN as SELECT t1.*, t2.attribute
FROM t1
INNER JOIN t2 ON t1.key_id=t2.id and t1.order_date>t2.booking_date and t2.attribute in (“Y”,”M”,”D”)
SQL umożliwia pełną kontrolę nad łączeniem tabel. W zapytaniu doprecyzowujemy dokładnie po jakich kolumnach chcemy się łączyć i w jaki sposób (INNER, LEFT, RIGHT, FULL OUTER). Możemy dodać także więcej warunków łączących jak w powyższym przykładzie. Pamiętajmy, aby kolumny łączące były zawsze tego samego typu.
Interesującą, acz rzadziej używaną odmianą jest CROSS JOIN. Zwraca on iloczyn kartezjański wszystkich wierszy pierwszej tabeli z drugą:
SELECT * FROM t1 CROSS JOIN t2
Jeszcze inną odmianą jest NATURAL JOIN. Działa on jak INNER, ale nie trzeba wpisywać kolumn łączących. Tabele są łączone po kolumnach z tą samą nazwą, jeśli będą miały też ten sam typ danych.
SELECT * FROM t1 NATURAL JOIN t2
Python
import pandas as pd
tabela_join = pd.merge(t1,t2, left_on = 'attribute_id', right_on = 'id', how = 'inner')
W języku Python możemy łączyć tabele z podobnie bogatą funkcjonalnością jak w SQL. Przy pomocy funkcji MERGE biblioteki Pandas, określamy parametry połączenia tabel.
DAX
Na tę chwilę DAX oferuje tylko funkcje NATURALINNERJOIN oraz NATURALLEFTOUTERJOIN. Musimy sami zadbać o to by kolumny interesujących nas tabel miały tę samą nazwę.
NATURALINNERJOIN ( t1, t2 )
Rezultatem wyrażenia jest tabela.
Używając funkcji JOIN w DAX, trzeba zwrócić uwagę na połączenie (data lineage) między tabelami. Jeżeli takie istnieje w modelu danych, najbezpieczniej jest wcześniej „przygotować” sobie te tabele, zrywając data lineage (oraz zmieniając nazwy kolumn na takie same):
TABELA_JOIN = VAR TAB1 = SELECTCOLUMNS („NAME”, T1[NAME], „ATTRIBUTE_ID”, T1[ATTRIBUTE_ID] & ”” )
VAR TAB2 = SELECTCOLUMNS (“DOD_DANE”, T2[DOD_DANE], “ATTRIBUTE_ID”, T2[ID] & ””
RETURN NATURALINNERJOIN(TAB1,TAB2)