L’argomento che tratterò nel blog di oggi sono gli altri tipi di JOIN esistenti.
Iniziamo subito con un breve ripasso delle JOIN esistenti (potete leggerle nel dettaglio nel blog di Federica); la JOIN è una combinazione del contenuto di due o più tabelle che consente di generare un gruppo di risultati contenente le righe e le colonne di ciascuna tabella che contengono dei dati in comune.
Tipologie di JOIN
Possiamo dividere questo macro gruppo in 4 sottoinsiemi:
- (INNER) JOIN: È l’unione tra i soli campi in comune tra due tabelle
- LEFT (OUTER) JOIN: È l’unione tra tutti i valori presenti nella tabella di sinistra più i valori che hanno dei campi in comune con quest’ultima
- RIGHT (OUTER) JOIN: Possiamo definirla come l’esatto contrario della left join: l’unione tra tutti i valori presenti nella tabella di destra più i valori che hanno dei campi in comune con la parte di destra
- FULL (OUTER) JOIN: È l’unione di tutti i campi presenti nelle due tabelle
Altri tipi di combinazioni che mi vengono in mente possono essere:
- I prodotti cartesiani ovvero quelle coppie ordinate che hanno come primo elemento un elemento di A e come secondo elemento un elemento di B (in parole povere, correlo tutto con tutto)
- La seconda combinazione può essere quella che esclude tutto ciò che non è presente nell’insieme/tabella di destra con quello di sinistra
Casi d’uso ed esempi di Join in SQL e Alteryx
Il primo caso può essere facilmente risolto utilizzando un Append Fields Tool (a breve uscirà un blog su questo); immaginiamo di avere due parti di flow o due data source che vorremmo fossero messe in relazione per comporre un prodotto cartesiano, non dovremmo far altro che importare in canvas come detto sopra l’Append Fields Tool (come si può vedere nell’immagine sotto).
Il secondo caso, quindi quella combinazione che esclude i campi comuni, può essere svolta con la stessa facilità del prodotto cartesiano, ovvero semplicemente aggiungendo un filtro che esclude i campi che hanno Field1 = Field3.
Vi starete chiedendo il perché spiegarvi una cosa così semplice, presto detto:
Magari qualcuno di voi ancora non conosce Alteryx, altri non sanno cosa sia un prodotto cartesiano o magari altri non sanno utilizzare un Apped Fields Tool, voglio però mostrarvi cosa dovrei fare utilizzando SQL e ragionare quindi sul perchè Alteryx è lo strumento giusto per chi in azienda deve occuparsi di Data Preparation o di tutta la parte di ETL in generale.
Qui proveremo a risolvere questi due tipi di combinazioni sia con Alteryx che con SQL.
Partiamo dando una definizione di SQL (Structured Query Language) ovvero è un linguaggio che permette di entrare in un database, leggerlo, modificarlo e soprattutto e da la possibilità di interrogare in più modi il DB, attravero le cosidette query. Le query a sua volta permettono di estrarre, inserire, aggiornare e cancellare record da un database, oltre a creare nuovi database, nuove tabelle in un database e molte altre funzioni.
Nel primo caso avrei dovuto scrivere qualcosa del genere in SQL:
SELECT *
FROM [Tabella1$],[Tabella2$]
In questo modo vado però ad estrarre tutte le colonne presenti nel DB, nel caso si volessero estrarne solo alcune, avrei dovuto specificarle tutte.
Invece nel secondo caso abbiamo il seguente linguaggio SQL:
SELECT [Tabella1$].[Field1], [Tabella2$].[Field2]
FROM [Tabella1$]
INNER JOIN [Tabella1$] [Tabella2$] ON [Tabella1$].[Field1] <> [Tabella2$1].[Field3]
GROUP BY [Tabella1$].[Field1], [Tabella2$].[Field2]
In questo caso come potete osservare, ho dovuto specificare le colonne da estrarre e sul quale devo andare a fare la ‘JOIN’ escludendo gli elementi comuni.
Come potete vedere è molto più semplice ed intuitivo andare ad utilizzare Alteryx; inoltre usando il nostro strumento di ETL preferito ho la possibilità di fare JOIN su DataBase di vario tipo e non provenienti da una sola fonte. I punti forti sono quindi:
- flessibilità
- velocità
- scalabilità
- e semplicità perchè non occorre fare scripting
Contattatemi nel caso abbiate bisogno di informazioni riguardanti Alteryx, o lasciate un feedback/ commento.
Qui il mio profilo Tableau Public, Linkedin e Twitter.