Uso di relazioni e cardinalità

Completato

A differenza di altri sistemi di gestione di database, in Power BI esiste il concetto di direzionalità di una relazione. Questa direzionalità gioca un ruolo importante nel filtraggio dei dati tra più tabelle. Quando si caricano i dati, Power BI cerca automaticamente le relazioni esistenti all'interno dei dati associando i nomi delle colonne. Si può inoltre usare Gestisci relazioni per modificare queste opzioni manualmente.

Si supponga, ad esempio, di aver recuperato molte tabelle dal database delle vendite e che l'immagine seguente sia un esempio del modello semantico usato. Power BI ha rilevato automaticamente molte relazioni, ma il loro significato non è chiaro. È necessario verificare che le relazioni riflettano accuratamente quelle esistenti nei dati.

Relazioni

Di seguito sono elencati i diversi tipi di relazioni disponibili in Power BI.

Relazione molti-a-uno (*:1) o uno-a-molti (1: *)

  • Descrive una relazione in cui sono presenti molte istanze di un valore in una colonna che sono correlate a una sola istanza corrispondente univoca in un'altra colonna.

  • Descrive la direzionalità tra le tabelle dei fatti e delle dimensioni.

  • È il tipo di direzionalità più comune ed è quello predefinito di Power BI quando si creano le relazioni automaticamente.

Un esempio di relazione uno-a-molti potrebbe essere quello tra le tabelle CountryName e Territory, dove è possibile avere molte aree associate a un unico paese.

Relazione uno-a-uno (1:1):

  • Descrive una relazione in cui una sola istanza di un valore è comune tra due tabelle.

  • Richiede valori univoci in entrambe le tabelle.

  • Questa relazione è non consigliata perché memorizza informazioni ridondanti e suggerisce che il modello non sia progettato correttamente. È buona norma combinare le tabelle.

Un esempio di relazione uno-a-uno si verifica quando i prodotti e gli ID prodotto si trovano in due tabelle diverse. La creazione di una relazione uno-a-uno genera dati ridondanti e queste due tabelle dovrebbero essere combinate.

Relazione molti-a-molti (.):

  • Descrive una relazione in cui molti valori sono in comune tra due tabelle.

  • Non richiede valori univoci in nessuna delle tabelle in una relazione.

  • Non è un tipo di relazione consigliato. L'assenza di valori univoci crea ambiguità e gli utenti potrebbero non sapere associare i singoli valori alle singole colonne di valori.

La figura seguente, ad esempio, mostra una relazione molti-a-molti tra le tabelle Sales e Order nella colonna OrderDate perché possono esserci più ordini associati a più vendite. L'ambiguità nasce dal fatto che entrambe le tabelle possono avere la stessa data dell'ordine.

Direzione filtro incrociato

I dati possono essere filtrati su uno o entrambi i lati di una relazione.

Con una direzione filtro incrociato impostata su singola:

  • Solo una tabella della relazione può essere usata per filtrare i dati. Ad esempio, la Tabella 1 può essere filtrata in base alla Tabella 2, ma la Tabella 2 non può essere filtrata in base alla Tabella 1.

    Suggerimento

    Seguire la direzione della freccia nella relazione tra le tabelle per conoscere la direzione del filtro. In genere, si desidera che queste frecce puntino alla tabella dei fatti.

  • Per una relazione uno-a-molti o molti-a-uno, la direzione del filtro incrociato sarà dal lato "uno", il che significa che il filtraggio verrà eseguito nella tabella che contiene molti valori.

Con le direzioni filtro incrociato impostate su entrambi o il filtro incrociato bidirezionale:

  • Una tabella della relazione può essere usata per filtrare l'altra. Ad esempio, una tabella delle dimensioni può essere filtrata tramite la tabella dei fatti e le tabelle dei fatti possono essere filtrate tramite la tabella delle dimensioni.

  • Le prestazioni potrebbero essere inferiori se si usa il filtro incrociato bidirezionale con le relazioni molti-a-molti.

Attenzione quando si usa il filtro incrociato bidirezionale: è consigliabile non abilitare le relazioni con filtro incrociato bidirezionale a meno che non si conoscano pienamente le implicazioni di tale azione. L'attivazione di questo tipo di relazione può generare ambiguità, sovracampionamento, risultati imprevisti e potenziale degrado delle prestazioni.

Cardinalità e direzione filtro incrociato

Per le relazioni uno-a-uno, l'unica opzione disponibile è il filtro incrociato bidirezionale. I dati possono essere filtrati su entrambi i lati di questa relazione e generare un singolo valore distinto e non ambiguo. È possibile, ad esempio, filtrare in base a un ID prodotto e ottenere un singolo prodotto e si può filtrare in base a un prodotto e ottenere un singolo ID prodotto.

Per le relazioni molti-a-molti, è possibile scegliere di filtrare in una sola direzione o in entrambe le direzioni usando il filtro incrociato bidirezionale. L'ambiguità associata al filtro incrociato bidirezionale è amplificata in una relazione molti-a-molti perché esisteranno più percorsi tra tabelle diverse. Se si crea una misura, un calcolo o un filtro, potrebbero verificarsi conseguenze indesiderate nel punto in cui i dati vengono filtrati e, a seconda della relazione scelta dal motore Power BI per l'applicazione del filtro, il risultato finale potrebbe essere diverso. Questa situazione è vera anche per le relazioni bidirezionali ed è per questo che bisogna essere cauti quando le si usa.

Per questo motivo, le relazioni molti-a-molti e/o le relazioni bidirezionali risultano complicate. A meno che non si sia certi di come appaiono i dati una volta aggregati, questi tipi di relazioni aperte con più direzioni di filtraggio possono introdurre più percorsi attraverso i dati.

Creazione di relazioni molti-a-molti

Si immagini uno scenario in cui si viene incaricati di creare un oggetto visivo che esamina i budget dei clienti e i conti. Si possono avere più clienti sullo stesso conto e più conti con lo stesso cliente, quindi occorre creare una relazione molti-a-molti.

Per creare questa relazione, andare a Gestisci relazioni>Nuova. Nella finestra che viene visualizzata creare una relazione tra le colonne Customer ID in CustomerTable e AccountTable. La relazione è impostata su molti-a-molti e il tipo di filtro è in entrambe le direzioni. Si verrà immediatamente avvisati della necessità di usare questo tipo di relazione solo se si prevede che nessuna delle colonne avrà valori univoci, altrimenti si potrebbero ottenere valori imprevisti. Poiché si desidera filtrare in entrambe le direzioni, scegliere il filtro incrociato bidirezionale.

Selezionare OK. A questo punto è stata creata una relazione molti-a-molti.

Per altre informazioni, vedere Relazioni molti-a-molti in Power BI.