Applicare l'impostazione Assume 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 dei dati sottostanti ed è disponibile solo quando si usa DirectQuery.
L'impostazione Presuppone 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 dell'integrità referenziale
Questa impostazione è un'impostazione avanzata ed è abilitata solo quando ci si connette ai dati tramite DirectQuery. Per il corretto funzionamento dell'integrità referenziale, sono necessari i requisiti seguenti:
- I dati nella colonna From della relazione non sono mai Null o vuoti
- Per ogni valore nella colonna From è presente un valore corrispondente nella colonna A
In questo contesto, la colonna From è molti in una relazione uno-a-molti oppure è la colonna nella prima tabella in una relazione uno-a-uno.
Esempio di utilizzo di Presupporre l'integrità referenziale
Nell'esempio seguente viene illustrato il comportamento dell'integrità referenziale quando viene usato nelle connessioni dati. L'esempio si connette a un'origine dati che include una tabella Orders, una tabella Products e una tabella Depots.
Nell'immagine seguente che mostra la tabella Orders e la tabella Products , esiste l'integrità referenziale tra Orders[ProductID] e Products[ProductID]. La colonna [ProductID] nella tabella Orders non è mai Null e ogni valore viene visualizzato anche nella tabella Products . Di conseguenza, si supponga che l'integrità referenziale sia impostata per ottenere query più efficienti. L'uso di questa impostazione non modifica i valori visualizzati negli oggetti visivi.
Nell'immagine successiva si noti che non esiste alcuna integrità referenziale tra Orders[DepotID] e Depots[DepotID], perché DepotID è Null per alcuni Ordini. 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 alcuni valori, in questo caso CustX, che non esistono nella tabella Customers. Di conseguenza, si supponga che l'integrità referenziale non debba essere impostata.
Impostazione Presuppone integrità referenziale
Per abilitare questa funzionalità, selezionare Assume integrità referenziale come illustrato nell'immagine seguente.
Se selezionata, l'impostazione viene convalidata rispetto ai dati per assicurarsi che non siano presenti righe Null o non corrispondenti. Tuttavia, per i casi con un numero molto elevato di valori, la convalida non garantisce che non ci siano problemi di integrità referenziale.
Inoltre, la convalida viene eseguita al momento della modifica della relazione e non riflette eventuali modifiche successive ai dati.
Cosa accade se si imposta erroneamente l'integrità referenziale?
Se si imposta Assume integrità referenziale quando si verificano problemi di integrità referenziale nei dati, tale impostazione non genera errori. Tuttavia, comporta incoerenze evidenti nei dati. 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 Order Qty by Depot City mostra un valore totale di soli 30, perché non include l'ID ordine 1, dove DepotID è Null.
Contenuto correlato
- Altre informazioni su DirectQuery.
- Altre informazioni sulle relazioni in Power BI.
- Altre informazioni sulla visualizzazione relazione in Power BI Desktop.