Applicare l'impostazione Considera integrità referenziale in Power BI Desktop
Quando ci si connette a un'origine dati tramite DirectQuery, è possibile usare la selezione Assume integrità referenziale per consentire l'esecuzione di query più efficienti sull'origine dati. Questa funzionalità presenta alcuni requisiti per i dati sottostanti ed è disponibile solo quando si usa DirectQuery.
L'impostazione Presupporre l'integrità referenziale consente alle query sull'origine dati di usare istruzioni INNER JOIN anziché OUTER JOIN, migliorando così l'efficienza delle query.
Requisiti per l'uso di Presupporre l'integrità referenziale
Questa impostazione avanzata viene abilitata solo quando ci si connette ai dati con DirectQuery. Per il corretto funzionamento dell'integrità referenziale sono necessari i requisiti seguenti:
- I dati nella colonna Da della relazione non sono mai Null o vuoti
- Per ogni valore nella colonna Da è presente un valore corrispondente nella colonna A
In questo contesto la colonna Da corrisponde a Molti in una relazione Uno-a-molti oppure alla colonna della prima tabella in una relazione Uno-a-uno.
Esempio di utilizzo di Considera integrità referenziale
Nell'esempio seguente viene illustrato come si comporta l'integrità referenziale quando viene usata nelle connessioni dati. L'esempio mostra una connessione a un'origine dati che include una tabella Orders, una tabella Products e una tabella Depots.
Nella figura seguente che mostra la tabella Orders e la tabella Products esiste integrità referenziale tra Orders[ProductID] e Products[ProductID]. La colonna [ProductID] nella tabella Orders non è mai Null e tutti i valori vengono anche visualizzati nella tabella Products. Di conseguenza, si supponga che sia impostata l'integrità referenziale per ottenere query più efficienti. L'uso di questa impostazione non modifica i valori visualizzati negli oggetti visivi.
Nella figura seguente non esiste integrità referenziale tra Orders[DepotID] e Depots[DepotID], perché DepotID è Null per alcuni elementi Orders. Di conseguenza, si supponga che l'integrità referenziale non debba essere impostata.
Infine, non esiste alcuna integrità referenziale tra Orders[CustomerID] e Customers[CustID] nelle tabelle seguenti. CustomerID contiene un valore, CustX, che non esiste nella tabella Customers. Di conseguenza, si supponga che l'integrità referenziale non debba essere impostata.
Impostazione Presupporre l'integrità referenziale
Per abilitare questa funzionalità, selezionare Assume integrità referenziale come illustrato nell'immagine seguente.
Se selezionata, l'impostazione viene convalidata in base ai dati per assicurare che non ci siano righe Null o non corrispondenti. Tuttavia, per i casi con un numero molto elevato di valori, la convalida non garantisce l'assenza di problemi di integrità referenziale.
Inoltre, la convalida viene eseguita quando si modifica la relazione e non riflette eventuali modifiche successive ai dati.
Cosa accade se si imposta erroneamente Assume integrità referenziale?
Se si imposta Assume integrità referenziale quando si verificano problemi di integrità referenziale nei dati, tale impostazione non genera errori. Tuttavia, i dati mostrano apparenti incoerenze. Ad esempio, per la relazione con la tabella Depots descritta di seguito, si ottiene quanto segue:
- Un oggetto visivo che mostra il totale order Qty mostra un valore pari a 40.
- Un oggetto visivo che mostra il totale di Order Qty by Depot City avrebbe un valore totale di appena 30 perché non include l'ID ordine 1, in cui DepotID è Null.
Contenuto correlato
- Altre informazioni su DirectQuery.
- Altre informazioni sulle relazioni in Power BI.
- Altre informazioni sulla visualizzazione modello in Power BI Desktop.