Condividi tramite


Panoramica sulle relazioni

In questo argomento vengono introdotte le relazioni che è possibile definire tra tabelle in PowerPivot per Excel. In questo argomento sono incluse le sezioni seguenti:

  • Definizione di relazione

  • Requisiti per le relazioni

  • Inferenza e rilevamento automatici delle relazioni

Al termine della lettura di questo argomento verrà compresa la definizione di relazione, quali sono i requisiti per la definizione di una relazione e in che modo PowerPivot per Excel è in grado di rilevare automaticamente le relazioni. Durante l'illustrazione dell'argomento si apprenderà una parte della terminologia utilizzata dai professionisti dei database per la descrizione delle relazioni.

Definizione di relazione

Una relazione è una connessione tra due tabelle di dati, in base a una o più colonne in ogni tabella (esattamente una colonna in ogni tabella per PowerPivot). Per capire perché le relazioni sono utili, provare a immaginare di tenere traccia degli ordini di un cliente della propria azienda. È possibile tenere traccia di tutti i dati in un'unica tabella che dispone di una struttura simile alla seguente:

CustomerID

Name

EMail

DiscountRate

OrderID

OrderDate

Product

Quantity

1

Ashton

chris.ashton@contoso.com

.05

256

2010-01-07

Compact Digital

11

1

Ashton

chris.ashton@contoso.com

.05

255

2010-01-03

SLR Camera

15

2

Jaworski

michal.jaworski@contoso.com

.10

254

2010-01-03

Budget Movie-Maker

27

Questo approccio può funzionare, tuttavia comporta l'archiviazione di molti dati ridondanti, ad esempio l'indirizzo di posta elettronica del cliente per ogni ordine. L'archiviazione è economica ma è necessario assicurarsi di aggiornare ogni riga relativa al cliente nel caso in cui l'indirizzo di posta elettronica cambi. Una soluzione a questo problema è suddividere i dati in più tabelle e definire relazioni tra tali tabelle. Si tratta dell'approccio utilizzato nei i database relazionali come SQL Server. Ad esempio, un database importato in PowerPivot per Excel potrebbe rappresentare i dati dell'ordine tramite tre tabelle correlate:

Customers

[CustomerID]

Name

Email

1

Ashton

chris.ashton@contoso.com

2

Jaworski

michal.jaworski@contoso.com

CustomerDiscounts

[CustomerID]

DiscountRate

1

.05

2

.10

Orders

[CustomerID]

OrderID

OrderDate

Product

Quantity

1

256

2010-01-07

Compact Digital

11

1

255

2010-01-03

SLR Camera

15

2

254

2010-01-03

Budget Movie-Maker

27

Se si importano tali tabelle dallo stesso database, PowerPivot è in grado di rilevare le relazioni tra le tabelle in base alle colonne tra [parentesi] e può riprodurre tali relazioni nella finestra di PowerPivot. Per ulteriori informazioni, vedere Inferenza e rilevamento automatici delle relazioni in questo argomento. Se si importano tabelle da più origini, è possibile creare manualmente relazioni come descritto in Creare una relazione tra due tabelle.

Colonne e chiavi

Le relazioni sono basate su colonne in ogni tabella contenente gli stessi dati. Ad esempio, le tabelle Customers e Orders possono essere correlate tra loro poiché contengono entrambe una colonna in cui è archiviato un ID cliente. Nell'esempio, i nomi della colonna sono gli stessi ma questo non è un requisito. Uno potrebbe essere CustomerID e l'altro CustomerNumber, purché tutte le righe nella tabella Orders contengano un ID archiviato anche nella tabella Customers.

In un database relazionale esistono molti tipi di chiavi, in genere semplici colonne con proprietà speciali. I seguenti quattro tipi di chiavi sono i più interessanti per gli scopi di questo argomento:

  • Chiave primaria: identifica in modo univoco una riga in una tabella, ad esempio CustomerID nella tabella Customers.

  • Chiave alternativa (o chiave candidata): una colonna diversa dalla chiave primaria univoca. Ad esempio, in una tabella Employees potrebbero essere archiviati un ID dipendente e un numero di previdenza sociale, entrambi univoci.

  • Chiave esterna: una colonna che fa riferimento a una colonna univoca in un'altra tabella, ad esempio CustomerID nella tabella Orders, che fa riferimento a CustomerID nella tabella Customers.

  • Chiave composta: una chiave composta da più di una colonna. Le chiavi composte non sono supportate in PowerPivot per Excel. Per ulteriori informazioni, vedere "Chiavi composte e colonne di ricerca" in questo argomento.

In PowerPivot per Excel, la chiave primaria o la chiave alternativa viene definita colonna di ricerca correlata o semplicemente colonna di ricerca. Se una tabella dispone sia di una chiave primaria sia di una alternativa, è possibile utilizzare entrambe come colonna di ricerca. La chiave esterna viene definita colonna di origine o semplicemente colonna. Nell'esempio viene definita una relazione tra CustomerID nella tabella Orders (la colonna) e CustomerID (la colonna di ricerca) nella tabella Customers. Se vengono importati dati da un database relazionale, per impostazione predefinita in PowerPivot per Excel viene scelta la chiave esterna da una tabella e la chiave primaria corrispondente dall'altra. Tuttavia, è possibile utilizzare qualsiasi colonna che disponga di valori univoci per la colonna di ricerca.

Tipi di relazioni

La relazione tra Customers e Orders è una relazione uno-a-molti. Ogni cliente può disporre di più ordini ma un ordine non può disporre di più clienti. Gli altri tipi di relazioni sono uno-a-uno e molti-a-molti. La tabella CustomerDiscounts, che definisce un solo tasso di sconto per ogni cliente, è in una relazione uno-a-uno con la tabella Customers. Un esempio di una relazione molti-a-molti è una relazione diretta tra Products e Customers, in cui un cliente può comprare molti prodotti e lo stesso prodotto può essere comprato da molti clienti. PowerPivot per Excel non supporta relazioni molti-a-molti nell'interfaccia utente. Per ulteriori informazioni, vedere 'Relazioni molti-a-molti' in questo argomento.

Nella tabella seguente sono riportate le relazioni tra le tre tabelle:

Relazione

Tipo

Colonna di ricerca

Colonna

Customers-CustomerDiscounts

uno-a-uno

Customers.CustomerID

CustomerDiscounts.CustomerID

Customers-Orders

uno-a-molti

Customers.CustomerID

Orders.CustomerID

Relazioni e prestazioni

Dopo aver creato una relazione, generalmente PowerPivot per Excel deve ricalcolare le formule che utilizzano le colonne provenienti dalle tabelle della relazione appena creata. L'elaborazione può richiedere del tempo, a seconda della quantità di dati e della complessità delle relazioni. Per ulteriori informazioni, vedere Ricalcolare le formule.

Requisiti per le relazioni

PowerPivot per Excel prevede che vengano rispettati diversi requisiti durante la creazione di relazioni:

Singola relazione tra tabelle

Più relazioni possono comportare dipendenze ambigue tra le tabelle. Per creare calcoli accurati, è necessario un unico percorso da una tabella a quella successiva. Di conseguenza può essere presente una sola relazione tra ogni coppia di tabelle. Ad esempio, in AdventureWorksDW2012 , la tabella DimDate contiene una colonna DateKey correlata a tre colonne diverse della tabella FactInternetSales: ovvero OrderDate, DueDate e ShipDate. Se si tenta di importare queste tabelle, la prima relazione viene creata correttamente, ma per le relazioni successive che riguardano la stessa colonna verrà visualizzato il messaggio di errore seguente:

* Relazione: tabella[colonna 1]-> tabella[colonna 2] - Stato: errore - Motivo: Impossibile creare una relazione tra le tabelle <tabella 1> e <tabella 2>. Tra due tabelle può esistere solo una relazione diretta o indiretta.

Se sono presenti due tabelle unite da più relazioni, sarà necessario importare più copie della tabella contenente la colonna di ricerca e creare una relazione tra ogni coppia di tabelle.

Una relazione per ogni colonna di origine

Una colonna di origine non può partecipare a più relazioni. Se una colonna è già stata utilizzata come colonna di origine in una relazione ma si desidera utilizzarla per connetterla a un'altra colonna di ricerca correlata in una tabella diversa, è possibile creare una copia della colonna e utilizzare tale colonna per la nuova relazione.

Creare una copia di una colonna che dispone esattamente degli stessi valori è un'operazione semplice, eseguibile tramite una formula DAX in una colonna calcolata. Per ulteriori informazioni, vedere Colonne calcolate.

Identificatore univoco per ogni tabella

In ogni tabella deve essere presente una colonna singola che ne identifichi in maniera univoca ogni riga. La colonna correlata viene spesso definita chiave primaria.

Colonne di ricerca univoche

I valori dei dati nella colonna di ricerca devono essere univoci. In altri termini, la colonna non può contenere valori duplicati. In PowerPivot per Excel le stringhe Null e vuote sono equivalenti a un valore blank, che è un valore dei dati distinto. Ciò vuole dire che non è possibile avere più valori Null nella colonna di ricerca.

Tipi di dati compatibili

I tipi di dati nella colonna di origine e nella colonna di ricerca devono essere compatibili. Per ulteriori informazioni sui tipi di dati, vedere Tipi di dati supportati nelle cartelle di lavoro di PowerPivot.

Chiavi composte e colonne di ricerca

Non è possibile utilizzare chiavi composte in una cartella di lavoro di PowerPivot. È necessario che vi sia sempre esattamente una colonna che identifica in modo univoco ogni riga nella tabella. Se si tenta di importare tabelle con una relazione esistente basata su una chiave composta, la relazione viene ignorata dall'Importazione guidata tabella, in quanto non può essere creata in PowerPivot.

Se si desidera creare una relazione tra due tabelle in PowerPivot e sono presenti più colonne che definiscono le chiavi primarie ed esterne, è necessario combinare i valori per creare una singola colonna chiave prima di creare la relazione. L'operazione può essere effettuata prima di importare i dati oppure in PowerPivot creando una colonna calcolata.

Relazioni molti-a-molti

PowerPivot per Excel non supporta relazioni molti-a-molti e non è possibile aggiungere semplicemente tabelle di collegamento in PowerPivot. È tuttavia possibile utilizzare funzioni DAX per modellare relazioni molti-a-molti.

Self-join e cicli

I self-join non sono consentiti nelle tabelle di PowerPivot. Un self-join è una relazione ricorsiva tra una tabella e se stessa. I self-join vengono spesso utilizzati per definire gerarchie padre-figlio. Ad esempio, è possibile unire in join una tabella Employees a se stessa in modo da creare una gerarchia che mostra la catena di gestione di un'azienda.

PowerPivot per Excel non consente la creazione di cicli tra relazioni in una cartella di lavoro. In altre parole, il set di relazioni seguente non è consentito.

Da Table 1, column a   a   Table 2, column f

Da Table 2, column f   a   Table 3, column n

Da Table 3, column n   a   Table 1, column a

Se si tenta di creare una relazione che comporterebbe la creazione di un ciclo, viene generato un errore.

Inferenza e rilevamento automatici delle relazioni

Quando vengono importati dati nella finestra di PowerPivot, l'Importazione guidata tabella rileva automaticamente le relazioni esistenti tra tabelle. Inoltre, quando viene creata una tabella pivot, in PowerPivot per Excel vengono analizzati i dati nelle tabelle. Vengono rilevate le possibili relazioni non definite e vengono suggerite le colonne appropriate da includere in tali relazioni.

Nell'algoritmo di rilevamento vengono utilizzati i dati statistici relativi ai valori e ai metadati delle colonne per eseguire inferenze sulla probabilità di relazioni.

  • I tipi di dati in tutte le colonne correlate devono essere compatibili. Per il rilevamento automatico, sono supportati solo numeri interi e tipi di dati di testo. Per ulteriori informazioni sui tipi di dati, vedere Tipi di dati supportati nelle cartelle di lavoro di PowerPivot.

  • Affinché la relazione venga rilevata correttamente, il numero di chiavi univoche nella colonna di ricerca deve essere maggiore dei valori nella tabella sul lato molti. In altre parole, nella colonna chiave sul lato molti della relazione non deve essere contenuto alcun valore che non sia disponibile nella colonna chiave della tabella di ricerca. Si supponga, ad esempio, di disporre di una tabella in cui siano elencati prodotti con i relativi ID (la tabella di ricerca) e una tabella in cui siano elencate le vendite per ogni prodotto (il lato molti della relazione). Se nei record di vendita è contenuto l'ID di un prodotto che non dispone di un ID corrispondente nella tabella Products, non è possibile creare la relazione automaticamente, ma potrebbe essere creata manualmente. Affinché in PowerPivot per Excel venga rilevata la relazione, è necessario innanzitutto aggiornare la tabella di ricerca Product con gli ID dei prodotti mancanti.

  • Verificare che il nome della colonna chiave sul lato molti sia simile al nome della colonna chiave nella tabella di ricerca. I nomi non devono essere esattamente gli stessi. In uno scenario aziendale, ad esempio, si verificano spesso variazioni nei nomi delle colonne in cui sono contenuti essenzialmente gli stessi dati: Emp ID, EmployeeID, Employee ID, EMP_ID e così via. L'algoritmo consente di rilevare i nomi simili e di assegnare una probabilità superiore alle colonne che dispongono di nomi simili o esattamente corrispondenti. Di conseguenza, per aumentare la probabilità di creare una relazione, è possibile provare a rinominare le colonne dei dati importati con nomi simili alle colonne presenti nelle tabelle esistenti. Se in PowerPivot per Excel vengono riscontrate più relazioni possibili, non viene creata nessuna relazione.

Queste informazioni potrebbero consentire di capire il motivo per cui non tutte le relazioni vengono rilevate o il modo in cui le modifiche apportate ai metadati, ad esempio al nome del campo e ai tipi di dati, possono migliorare i risultati del rilevamento automatico delle relazioni. Per ulteriori informazioni, vedere Risolvere i problemi relativi alle relazioni e il post sul rilevamento automatico delle relazioni di PowerPivot.

Rilevamento automatico per set denominati

Le relazioni non vengono rilevate automaticamente tra set denominati e campi correlati in una tabella pivot. Le relazioni possono essere create manualmente. Se si desidera utilizzare il rilevamento automatico delle relazioni, rimuovere ogni set denominato e aggiungere i singoli campi dal set denominato direttamente alla tabella pivot.

Inferenza delle relazioni

In alcuni casi, le relazioni tra le tabelle vengono concatenate automaticamente. Se ad esempio si crea una relazione tra i primi due set di tabelle indicati di seguito, viene dedotta l'esistenza di una relazione tra le altre due tabelle e viene stabilita automaticamente una relazione.

Products e Category: relazione creata manualmente

Category e SubCategory: relazione creata manualmente

Products e SubCategory: relazione dedotta

Affinché relazioni vengano concatenate automaticamente, le relazioni devono andare in una direzione, come riportato in precedenza. Una relazione non verrebbe dedotta qualora le relazioni iniziali fossero, ad esempio, tra Sales e Products e Sales e Customers. Ciò avviene perché la relazione tra Products e Customers è una relazione molti-a-molti.

Vedere anche

Concetti

Creare una relazione tra due tabelle

Eliminare relazioni

Visualizzare e modificare relazioni

Risolvere i problemi relativi alle relazioni