Linee guida per le relazioni bidirezionali
Questo articolo è destinato a un modello di dati che usa Power BI Desktop. Fornisce indicazioni su quando creare relazioni tra modelli bidirezionali. Una relazione bidirezionale è uno che filtra in entrambe le direzioni.
Nota
Un'introduzione alle relazioni tra modelli non è descritta in questo articolo. Se non si ha familiarità con le relazioni, le relative proprietà o come configurarle, è consigliabile leggere prima l'articolo Relazioni tra modelli in Power BI Desktop .
È anche importante avere una conoscenza della progettazione dello schema star. Per altre informazioni, vedere Informazioni sullo schema star e sull'importanza di Power BI.
In genere, è consigliabile ridurre al minimo l'uso di relazioni bidirezionali. Possono influire negativamente sulle prestazioni delle query del modello e possibilmente offrire esperienze confuse per gli utenti del report.
Esistono tre scenari in cui il filtro bidirezionale può risolvere requisiti specifici:
- Relazioni speciali tra modelli
- Elementi del filtro dei dati "con dati"
- Analisi da dimensione a dimensione
Relazioni speciali tra modelli
Le relazioni bidirezionali svolgono un ruolo importante quando si creano i due tipi di relazione di modello speciali seguenti:
- Uno-a-uno: tutte le relazioni uno-a-uno devono essere bidirezionali, non è possibile configurare in caso contrario. In genere, non è consigliabile creare questi tipi di relazioni. Per una discussione completa e progetti alternativi, vedere Linee guida per le relazioni uno-a-uno.
- Molti-a-molti: quando si riguardano due tabelle di tipo dimensione, è necessaria una tabella di bridging. Per garantire la propagazione dei filtri nella tabella di bridging, è necessario un filtro bidirezionale. Per altre informazioni, vedere Linee guida per le relazioni molti-a-molti (Correlare dimensioni molti-a-molti).
Elementi del filtro dei dati "con dati"
Le relazioni bidirezionali possono recapitare filtri dei dati che limitano gli elementi alla posizione in cui esistono i dati. Se si ha familiarità con tabelle pivot e filtri dei dati di Excel, si tratta del comportamento predefinito durante l'origine dei dati da un modello semantico di Power BI (noto in precedenza come set di dati) o un modello di Analysis Services. Per spiegare cosa significa, considerare prima di tutto il diagramma del modello seguente.
La prima tabella è denominata Customer e contiene tre colonne: Country-Region, Customer e CustomerCode. La seconda tabella è denominata Product e contiene tre colonne: Color, Product e SKU. La terza tabella è denominata Sales e contiene quattro colonne: CustomerCode, OrderDate, Quantity e SKU. Le tabelle Customer e Product sono tabelle di tipo dimensione e ognuna ha una relazione uno-a-molti con la tabella Sales . Ogni relazione filtra in una singola direzione.
Per descrivere il funzionamento del filtro bidirezionale, il diagramma del modello è stato modificato per visualizzare le righe della tabella. Tutti gli esempi in questo articolo sono basati su questi dati.
Nota
Non è possibile visualizzare righe di tabella nel diagramma del modello di Power BI Desktop. Questa operazione viene eseguita in questo articolo per supportare la discussione con esempi chiari.
I dettagli della riga per le tre tabelle sono descritti nell'elenco puntato seguente:
- La tabella Customer ha due righe:
- CustomerCode CUST-01, Customer Customer-1, Country-Region Stati Uniti
- CustomerCode CUST-02, Customer Customer-2 , Country-Region Australia
- La tabella Product include tre righe:
- SKU CL-01, T-shirt prodotto , Colore verde
- SKU CL-02, Product Jeans, Color Blue
- SKU AC-01, Product Hat, Color Blue
- La tabella Sales contiene tre righe:
- OrderDate 1 gennaio 2019, CustomerCode CUST-01, SKU CL-01, Quantity 10
- OrderDate 2 febbraio 2019, CustomerCode CUST-01, SKU CL-02, Quantity 20
- OrderDate 3 marzo 2019, CustomerCode CUST-02, SKU CL-01, Quantity 30
Si consideri ora la pagina del report seguente.
La pagina è costituita da due filtri dei dati e da un oggetto visivo scheda. Il primo filtro dei dati è per Country-Region e ha due elementi: Australia e Stati Uniti. Attualmente viene sezioni in base all'Australia. Il secondo filtro dei dati è per Product e ha tre elementi: Hat, Jeans e T-shirt. Nessun elemento selezionato (ovvero nessun prodotto viene filtrato). L'oggetto visivo scheda visualizza una quantità di 30.
Quando gli utenti del report riguardano l'Australia, è possibile limitare il filtro dei dati Product per visualizzare gli elementi in cui i dati sono correlati alle vendite australiane . È ciò che significa mostrare gli elementi del filtro dei dati "con i dati". È possibile ottenere questo comportamento configurando la relazione tra la tabella Product e Sales per filtrare in entrambe le direzioni.
Il filtro dei dati Product elenca ora un singolo elemento: T-shirt. Questo articolo rappresenta l'unico prodotto venduto ai clienti australiani.
È innanzitutto consigliabile valutare attentamente se questa progettazione funziona per gli utenti del report. Alcuni utenti del report riscontrano confusione nell'esperienza. Non capiscono perché gli elementi del filtro dei dati vengono visualizzati o scompaiono dinamicamente quando interagiscono con altri filtri dei dati.
Se si decide di visualizzare gli elementi del filtro dei dati "con i dati", non è consigliabile configurare relazioni bidirezionali. Le relazioni bidirezionali richiedono un'elaborazione maggiore e quindi possono influire negativamente sulle prestazioni delle query, in particolare quando aumenta il numero di relazioni bidirezionali nel modello.
Esiste un modo migliore per ottenere lo stesso risultato: invece di usare filtri bidirezionali, è possibile applicare un filtro a livello visivo al filtro dei dati Product stesso.
Si consideri ora che la relazione tra la tabella Product e Sales non viene più filtrata in entrambe le direzioni. E la definizione di misura seguente è stata aggiunta alla tabella Sales .
Total Quantity = SUM(Sales[Quantity])
Per visualizzare gli elementi del filtro dei dati Product "con dati", è sufficiente filtrare in base alla misura Total Quantity usando la condizione "non è vuota".
Analisi da dimensione a dimensione
Uno scenario diverso che prevede relazioni bidirezionali considera una tabella di tipo fatto come una tabella di bridging. In questo modo, supporta l'analisi dei dati della tabella di tipo dimensione all'interno del contesto di filtro di una tabella di tipo dimensione diversa.
Usando il modello di esempio in questo articolo, considerare come è possibile rispondere alle domande seguenti:
- Quanti colori sono stati venduti ai clienti australiani?
- Quanti paesi/aree geografiche hanno acquistato jeans?
Entrambe le domande possono essere risposte senza riepilogare i dati nella tabella dei fatti di bridging. Tuttavia, richiedono che i filtri vengano propagati da una tabella di tipo dimensione all'altra. Una volta propagati i filtri tramite la tabella di tipo fatto, è possibile ottenere il riepilogo delle colonne di tabella di tipo dimensione usando la funzione DAX DISTINCTCOUNT e possibilmente le funzioni DAX MIN e MAX .
Poiché la tabella di tipo fatto si comporta come una tabella di bridging, è possibile seguire le linee guida per le relazioni molti-a-molti per correlare due tabelle di tipo dimensione. Richiederà la configurazione di almeno una relazione per filtrare in entrambe le direzioni. Per altre informazioni, vedere Linee guida per le relazioni molti-a-molti (Correlare dimensioni molti-a-molti).
Tuttavia, come già descritto in questo articolo, questa progettazione genererà probabilmente un impatto negativo sulle prestazioni e le conseguenze dell'esperienza utente correlate agli elementi del filtro dei dati "con i dati". È quindi consigliabile attivare il filtro bidirezionale in una definizione di misura usando invece la funzione DAX CROSSFILTER . La funzione CROSSFILTER può essere usata per modificare le direzioni del filtro o persino disabilitare la relazione durante la valutazione di un'espressione.
Si consideri la definizione di misura seguente aggiunta alla tabella Sales . In questo esempio la relazione di modello tra le tabelle Customer e Sales è stata configurata per filtrare in una singola direzione.
Different Countries Sold =
CALCULATE(
DISTINCTCOUNT(Customer[Country-Region]),
CROSSFILTER(
Customer[CustomerCode],
Sales[CustomerCode],
BOTH
)
)
Durante la valutazione dell'espressione di misura Different Countries Sold , la relazione tra le tabelle Customer e Sales filtra in entrambe le direzioni.
L'oggetto visivo tabella seguente presenta statistiche per ogni prodotto venduto. La colonna Quantity è semplicemente la somma dei valori di quantità. La colonna Different Countries Sold (Paesi diversi venduti ) rappresenta il conteggio dei valori distinti di tutti i clienti che hanno acquistato il prodotto.
Contenuto correlato
Per altre informazioni relative a questo articolo, vedere le risorse seguenti:
- Relazioni tra modelli in Power BI Desktop
- Comprendere lo schema star e l'importanza per Power BI
- Linee guida per le relazioni uno-a-uno
- Linee guida per le relazioni molti-a-molti
- Linee guida per la risoluzione dei problemi relativi alle relazioni
- Domande? Contattare la community di Power BI
- inviare suggerimenti, Contribuire con idee per migliorare Power BI
Commenti e suggerimenti
https://aka.ms/ContentUserFeedback.
Presto disponibile: Nel corso del 2024 verranno gradualmente disattivati i problemi di GitHub come meccanismo di feedback per il contenuto e ciò verrà sostituito con un nuovo sistema di feedback. Per altre informazioni, vedereInvia e visualizza il feedback per