Se per le nostre viz utilizziamo più tabelle, è importante individuare dal principio il corretto modello dati, in modo da poterci dedicare alla realizzazione delle nostre viste senza dover effettuare continue revisioni.
A partire dalla versione 2020.3, Tableau offre in alternativa alle classiche join, la possibilità di utilizzare le Relazioni (relationship), più leggere e flessibili.
Quindi, la prima domanda che dobbiamo porci è: Join o Relazioni?
Le Relazioni (relationship) su Tableau
Quando stabiliamo una Relazione tra due o più tabelle non viene realizzata alcuna join iniziale, evitando così la creazione di una nuova tabella fisica. Ci verrà chiesto soltanto di specificare quali sono i campi alla base della relazione e sarà Tableau, in maniera automatica, a effettuare di volta in volta delle join “volanti” in base al contesto e all’analisi che stiamo svolgendo in un dato momento.
Differenze tra Join e Relazioni su Tableau: un esempio
Proviamo ad analizzare le principali differenze tra Join e Relazioni con un esempio che utilizza una data source composta dai seguenti 3 file Excel:
- Popolazione età per comune: contiene, per ciascun comune e per ciascuna età, il numero di maschi e femmine (806.208 record);
- Elenco scuole: contiene l’anagrafica delle scuole statali italiane (tranne Province di Aosta, Trento e Bolzano, 51.081 record);
- Studenti per scuola: contiene, per ciascuna scuola, il numero di studenti con l’indicazione dell’età (308.482 record).
Nel nostro esempio vogliamo rispondere alle seguenti tre domande:
- Come sono distribuiti i Licei Scientifici tra le regioni?
- Quanti sono gli studenti dei Licei Scientifici in ciascuna regione?
- Qual è il rapporto tra gli studenti dei Licei Scientifici e la popolazione con età compresa tra i 14-19 anni nelle diverse regioni?
Usiamo le join
Se usiamo le join, dovremo costruire un modello dati come quello nell’immagine sottostante, che agirà a livello di intero workbook.
Infatti, così facendo:
- a ciascun comune (tab. A) abbiniamo le relative scuole (tab. B);
- a ciascuna scuola (tab. B) abbiniamo i relativi studenti suddivisi per età (tab. C).
Dobbiamo usare una join di tipo “left” perché in molti comuni italiani non è presente alcuna scuola, ma non vogliamo perdere le informazioni sulla popolazione di tali comuni, necessarie per rispondere al terzo quesito.
Il risultato della join sarà una tabella fisica (garanzia di stabilità) di oltre 33 milioni di record, dato che le due relazioni descritte sopra sono di tipo 1:n (uno a molti) e che le tabelle hanno una diversa lunghezza e un diverso livello di dettaglio.
Prendendo, ad esempio, il solo Comune di Milano, avremo oltre 463 mila record, necessari a coprire le diverse combinazioni tra le 101 fasce di Età della tabella A (da 0 a 100 anni), le 473 scuole della tabella B e le informazioni sugli studenti ripartiti per fascia d’età della tabella C.
A causa della replicazione dei record dovremo porre molta attenzione alle aggregazioni delle misure e sarà necessario ricorrere a delle espressioni Level of Detail per rispondere al quesito numero 3) Qual è il rapporto tra gli studenti dei Licei Scientifici e la popolazione con età compresa tra i 14-19 anni nelle diverse regioni?
Risulterà, invece, immediato rispondere al quesito 2) Quanti sono gli studenti dei Licei Scientifici in ciascuna regione? dato che potremo filtrare in base al campo “tipo_scuola” (tabella B) andando a selezionare il valore “Liceo Scientifico”.
Usiamo le Relazioni
Se usiamo le relazioni sarà necessario dichiarare quali campi reggono il legame tra una tabella e l’altra, ma non dovremo specificare la direzione della di relazione (left, right, inner).
Inoltre, non verrà creata una nuova tabella fisica: le tabelle A, B e C potranno essere utilizzate individualmente se necessario, e saranno tra loro collegate da una join “volante” solo se l’analisi lo richiederà.
Ad esempio, per rispondere alla domanda 1 “Come sono distribuiti i Licei Scientifici tra le regioni?” è sufficiente utilizzare la Tabella B “Elenco scuole”, che ha una valenza analitica anche se trattata individualmente, dato che contiene una anagrafica completa delle scuole; in fase di costruzione della vista, quindi, non verrà effettuato alcuna join. Le Relazioni, quindi, agiscono a livello di singolo worksheet e solo le tabelle utilizzate nella vista saranno chiamate in causa da una query.
Ricapitolando
Quando scegliamo tra relazioni e join è bene riflettere sui seguenti aspetti:
- se le tabelle hanno un livello di dettaglio diverso, una join duplicherà alcune informazioni;
- se ad alcuni punti della nostra analisi possiamo rispondere usando una sola tabella, l’impiego di join può risultare sconveniente in termini di prestazioni, visto che agiscono a livello di intero workbook. Le relazioni, invece, operano a livello di singola vista;
- le join garantiscono un legame stabile e il tipo di legame viene fissato in fase di creazione del modello dati (left, right, inner, full outer). Se l’analisi richiede un legame in più direzioni, le relazioni rappresentano la soluzione più agile.
Leggi tutti i nostri articoli su Tableau
Vuoi scoprire le ultime novità o approfondire alcune funzionalità per diventare un esperto?
Visualitics Team
Questo articolo è stato scritto e redatto da uno dei nostri consulenti.
Fonti:
Condividi ora sui tuoi canali social o via email: