Tableau

Join in Tableau: quale dovrei usare?

Spesso quando faccio una demo mi capita di dover spiegare cosa sia una join e le differenze tra i vari tipi che Tableau supporta. La join è un concetto semplice ma importantissimo infatti se non eseguito correttamente può “falsare” le righe che stiamo analizzando, facendo perdere qualsiasi senso ai nostri dati.
Per semplificare la spiegazione utilizzeremo un esempio banale, con 2 tabelle: la prima contiene i clienti mentre la seconda i prodotti che i clienti hanno comprato nel mio negozio on-line.

 

Perché? Fare una join è necessario quando analizziamo dati che provengono da 2+ tabelle, in questo caso dovrò infatti stabilire che relazione esiste tra queste e come voglio che siano “unite”. Il modo più semplice per capire la logica è utilizzando insiemi e intersezioni, immaginiamo le tabelle come due insiemi.
Nel mio esempio vorrei analizzare quello che i miei clienti hanno comprato, nella tabella “transazioni” manca però un’informazione che vorrei includere nella mia analisi, ossia il nome del cliente. Dovrò perciò connettermi a due tabelle distinte e creare virtualmente un’unica fonte dati, la chiave di join (unione) sarà il campo “ID” che è presente in entrambe le tabelle. Con Tableau, devo solo trascinare le tabelle desiderate e definire la chiave di join, tenendo presente che il risultato cambierà a seconda del join selezionato.
Proviamo tutte le possibilità:

LEFT JOIN

In questo caso stiamo dicendo al database che vogliamo considerare tutti i dati della tabella di sinistra (transazioni) uniti a quelli della tabella di destra che soddisfano la chiave di join (quindi che esistono in transazioni).

Vediamo come dalla tabella “clienti” otteniamo il nome solo di coloro che hanno comprato qualcosa, e che quindi hanno generato una transazione.

RIGHT JOIN

Il right join è esattamente l’opposto rispetto al caso precedente. Il risultato sarà dato dai dati a destra (tabella “clienti”) e da quelli che esistono nella tabella “transazioni”

Vediamo come otteniamo 2 righe in più che sono i clienti che non hanno ancora comprato niente.
Quindi per i clienti che non esistono tra le transazioni (vedi campi: ID Cliente, Prodotto e Valore) avremo un valore nullo.

INNER JOIN

Si tratta di un “mix” degli esempi precedenti, il risultato comprenderà solo i dati la cui chiave esiste in ENTRAMBE le tabelle (nel nostro caso l’ID).

Vediamo come il risultato comprenda solo gli ID presenti in entrambe le tabelle (1,4,5).

FULL OUTER JOIN

In questo caso, non è richiesta alcuna corrispondenza tra la tabelle: il risultato sarà dato da tutti i record presenti.
Questo tipo di join è supportato solo da determinati database e come si nota dalle figure sopra, Excel non è uno di questi. Perciò ho importato gli stessi dati in due tabelle di SQL server, vediamo il risultato:

Da notare come il risultato comprenda tutte le righe esistenti nelle nostre due tabelle.

Spero che l’esempio vi sia stato d’aiuto per capire la logica dei join. Ricordate sempre che un errore a questo punto del procedimento può risultare in dati incongruenti successivamente. Perciò una volta creata la connessione controllate che i dati abbiano senso.
In allegato il file Excel per chi voglia giocare con lo stesso esempio.
File Excel

NB. Per poter ricreare l’esempio, nella videata di selezione del file scegliere “Open with legacy connection”.