In questo articolo parleremo delle relazioni tra tabelle e di come crearle praticamente con Power BI.
Risulta importante introdurre preliminarmente il concetto di chiave: ogni tabella dovrebbe contenere (e in quasi tutti i casi contiene) una colonna o un insieme di colonne che identificano univocamente una riga nella tabella. Quella colonna o quella serie di colonne prendono il nome generico di Chiave della tabella. Riprendiamo il modello visto nella lezione precedente:


La chiave della tabella dei clienti è il Customer ID (cioè il codice identificativo del cliente), mentre la chiave della tabella dei prodotti è lo SKU (cioè il codice identificativo del prodotto). La chiave della tabella delle transazioni invece è il Transaction_id.
Relazioni tra le tabelle
Per far comunicare le anagrafiche dobbiamo sfruttare delle “relazioni” tra le colonne, la colonna Customer ID è presente sia sull’anagrafica cliente che sulla tabella delle transazioni, Osserviamo che mentre nella tabella del cliente è un campo chiave, quindi con valori distinti (non troverò due righe con lo stesso Customer ID in quella tabella), all’interno della tabella delle transazioni lo stesso campo è potenzialmente presente più volte, in più righe (poiché potrei avere due o più transazioni per lo stesso cliente).
In questo caso diremo che la relazione è quindi di tipo 1 a molti (in power BI i “molti” sono indicati con un *, quindi una relazione 1 a *). Questa caratteristica delle relazioni prende il nome di Cardinalità, possiamo quindi avere relazioni:
- 1 a molti
- 1 a 1
- molti a molti
Tipicamente comunque le relazioni 1 a molti sono le più comuni e quelle caratteristiche dei rapporti anagrafica – fatti. Le altre relazioni sono più rare: quelle 1 a 1 indicano che la separazione dei dati in più tabelle non sta riducendo la quantità di dati contenuti dal modello, non stiamo cioè riducendo la ridondanza. Una relazione molti a molti può essere utilizzata in condizioni particolari ma può presentare una serie di comportamenti problematici (potete approfondire qui)
Oltre alla cardinalità di una relazione dobbiamo anche parlare della direzione. Quando imposto la direzione di una relazione sto stabilendo quale tabella filtra quale tabella. Per fare un esempio, se la direzione del filtro va dalla tabella dei clienti verso la tabella dei fatti, allora quando filtreremo uno specifico cliente dalla tabella dei clienti, la tabella dei fatti verrà filtrata mostrando solo i dati di quel cliente. Tuttavia se seleziono una transazione dalla fatti la tabella dei clienti non verrà filtrata sul cliente relativo a quella transazione. Se volessi quest’ ultimo comportamento potrei impostare la relazione come bidirezionale.
Tipicamente le relazioni anagrafica – fatti hanno direzione univoca che va dalla anagrafica verso i fatti, ma non è una regola ferrea, posso anche utilizzare delle relazioni bidirezionali. In questo caso dobbiamo stare attenti perché le diverse anagrafiche si filtreranno tra di loro utilizzando la tabella dei fatti come “ponte”. Non è evidentemente possibile creare delle relazioni “circolari”, condizioni ad esempio in cui la tabella A filtra la tabella B che filtra A a sua volta. Power BI in questo caso restituirà un errore.
Il modello dati va pensato prima dell’implementazione, portare tutte le tabelle su Power BI e poi aggiungere le relazioni secondo quello che abbiamo spesso ci porta a non avere né un modello a stella né un modello snowflake, ma un modello più complesso e difficile da gestire.
Creare le relazioni in Power BI
Le relazioni in Power BI possono essere create solo dopo aver portato le tabelle a modello, cioè dopo aver importato tutto tramite Power Query. Per crearle sfruttiamo una sezione dedicata, a cui si può accedere cliccando sul terzo simbolo dall’alto nella colonna a sinistra della Home.

Accedendo alla sezione verrà mostrato uno schema con tutte le tabelle presenti a modello ed eventuali relazioni già presenti. Infatti da un po’ di tempo Power BI di default effettua un “auto-detect” delle relazioni, quindi è probabile che quando accederete alla sezione delle relazioni vedrete che le chiavi sono già state individuate e create (questa impostazione può comunque essere modificata). Nel raro caso in cui il vostro modello contenga molte tabelle (comunque più di una dozzina), Power BI potrebbe di default non mostrare nulla, in quel caso potrete selezionare e trascinare verso il centro dal menù a destra le tabelle per cui vi interessa creare delle relazioni o vedere le relazioni esistenti tra esse.
Dallo stesso menù cliccando su una tabella potrete aggiungere una descrizione (principalmente come traccia per se stessi o per gli altri nel caso in cui si voglia condividere il file con terzi) o aggiungere dei sinonimi, utili per le funzioni di Question & Answers o “Q&A”, che potete approfondire qui. Potete inoltre nascondere la tabella dal modello cliccando sul toggle “is hidden”: in questo caso una volta tornati sul report view la tabella e il suo contenuto non saranno visibili nel pan a destra.

Per creare una nuova relazione o modificarne una esistente basta cliccare su “gestisci relazioni” o “manage relationships” dal menù in alto. Si aprirà un menù che mostra tutte le relazioni esistenti a modello, inoltre è presente un box “autodetect” che può essere cliccato appunto per effettuare l’autodetect nel caso in cui sia disattivato di default.

Effettuando un doppio click su una relazione (o cliccando su edit) si aprirà un pop-up da cui si possono leggere le tabelle e le chiavi coinvolte dalla relazione, la direzionalità e la sua cardinalità. Da questa schermata avremo anche la possibilità di modificare una qualsiasi delle proprietà delle relazioni.
Continua a imparare
- Visita la pagina del mio videocorso su Power BI
- Leggi l’articolo successivo sul linguaggio DAX
- Torna all’indice delle lezioni