Linee guida per la relazione bidirezionale
Questo articolo è rivolto a un modellatore di dati che lavora con Power BI Desktop. Offre indicazioni su quando creare relazioni di modello bidirezionali. Una relazione bidirezionale è una relazione che filtra in entrambe le direzioni.
Nota
Questo articolo non fornisce un'introduzione alle relazioni nei modelli. Se non si ha familiarità con le relazioni, le relative proprietà o le modalità di configurazione, è consigliabile leggere per prima cosa l'articolo Relazioni nei modelli in Power BI Desktop.
È anche importante avere una conoscenza di base della progettazione dello schema star. Per altre informazioni, vedere Informazioni su uno schema star e sull'importanza di questo schema per Power BI.
In genere, è consigliabile ridurre al minimo l'uso di relazioni bidirezionali. Ciò è dovuto al fatto che possono influire negativamente sulle prestazioni delle query del modello e possibilmente offrire esperienze confuse per gli utenti del report.
Esistono tuttavia tre scenari in cui il filtro bidirezionale può risolvere requisiti specifici:
Relazioni speciali dei modelli
Le relazioni bidirezionali svolgono un ruolo importante quando si creano i due tipi seguenti di relazione speciale dei modelli:
- Uno-a-uno: tutte le relazioni uno-a-uno devono essere bidirezionali, non è possibile configurarle diversamente. In genere, non è consigliabile creare questi tipi di relazioni. Per una discussione approfondita e per i modelli di progettazione alternativi, consultare le linee guida sulle relazioni uno a uno .
- Molti-a-molti: quando si mettono in relazione due tabelle di dimensioni , è necessaria una tabella di collegamento . È necessario un filtro bidirezionale per garantire la propagazione dei filtri nella tabella di bridging. Per altre informazioni, vedere linee guida per le relazioni di tipo molti-a-molti.
Opzioni filtro "con dati"
Le relazioni bidirezionali possono fornire slicer che limitano le opzioni ai punti in cui esistono i dati. Se si ha familiarità con le Tabelle Pivot di Excel e gli slicer, si tratta del comportamento predefinito quando i dati vengono recuperati da un modello semantico di Power BI o da un modello di Analysis Services. Per spiegare cosa significa, considerate innanzitutto il seguente diagramma del modello.
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 dimensionali e ciascuna ha una relazione uno-a-molti con la tabella Sales
. Ogni relazione filtra in un'unica direzione.
Per semplificare la descrizione del funzionamento del filtro bidirezionale, il diagramma del modello è stato modificato in modo da visualizzare le righe delle tabelle. Tutti gli esempi in questo articolo sono basati su questi dati.
I dettagli delle righe 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
ha tre righe:-
SKU
CL-01,Product
T-shirt,Color
Verde -
SKU
CL-02,Product
Jeans,Color
Blue -
SKU
AC-01,Product
Cappello,Color
Blu
-
- La tabella
Sales
ha 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 di report seguente.
La pagina è costituita da due filtri dei dati e da un oggetto visivo della scheda. Il primo filtro dei dati si basa sul campo Country-Region
e ha due opzioni: Australia e Stati Uniti. Attualmente esegue il filtro dei dati per Australia. Il secondo filtro dei dati si basa sul campo Product
e ha tre opzioni: Cappello, Jeans e Maglietta. Non è selezionato alcun elemento, ovvero i prodotti non vengono filtrati. L'oggetto visivo della scheda visualizza una quantità pari a 30.
Quando gli utenti del report segmentano per Australia, è possibile limitare il filtro del prodotto per visualizzare le opzioni dove i dati sono collegati alle vendite australiane. Questo è ciò che significa mostrare le opzioni del filtro "con i dati". È possibile ottenere questo comportamento impostando la relazione tra le tabelle Product
e Sales
per filtrare in entrambe le direzioni.
Il filtro dei dati del prodotto elenca ora un'unica opzione: T-shirt. Questa opzione rappresenta l'unico prodotto venduto ai clienti australiani.
Prima di tutto, è consigliabile valutare attentamente se questa progettazione funziona per gli utenti del report. Alcuni utenti del report riscontrano confusione perché non capiscono perché le opzioni del filtro dei dati vengono visualizzate o scompaiono in modo dinamico quando interagiscono con altri filtri dei dati.
Se si decide di visualizzare le opzioni del filtro dati "con i dati", non consigliamo di 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 al livello visivo al selettore del prodotto stesso.
Si consideri ora che la relazione tra le tabelle Product
e Sales
non filtra più in entrambe le direzioni. E la definizione di misura seguente è stata aggiunta alla tabella Sales
.
Total Quantity = SUM(Sales[Quantity])
Per visualizzare le opzioni del filtro dei dati del prodotto "con i 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 fattuale come una tabella di collegamento . In questo modo, supporta l'analisi dei dati della tabella delle dimensioni all'interno del contesto di filtro di una tabella delle dimensioni diversa.
Usando il modello di esempio in questo articolo, considerare come rispondere alle domande seguenti:
- Quanti colori sono stati venduti ai clienti australiani?
- Quanti paesi/aree hanno acquistato jeans?
È possibile rispondere a entrambe le domande senza riepilogare i dati nella tabella dei fatti di bridging. Tuttavia, richiedono che i filtri vengano propagati da una tabella delle dimensioni all'altra. Quando i filtri vengono propagati tramite la tabella dei fatti, è possibile ottenere il riepilogo delle colonne della tabella delle dimensioni usando la funzione DAX DISTINCTCOUNT e possibilmente le funzioni DAX MIN e MAX.
Poiché la fact table si comporta come una tabella di connessione, è possibile applicare le linee guida per le relazioni molti-a-molti per mettere in relazione due tabelle delle dimensioni. Sarà necessaria la configurazione di almeno una relazione per filtrare in entrambe le direzioni. Per ulteriori informazioni, consultare le linee guida sulle relazioni molti-a-molti .
Tuttavia, come già descritto in questo articolo, questo design genererà probabilmente un impatto negativo sulle prestazioni e comporterà conseguenze sull'esperienza utente correlate alle opzioni del slicer "con dati". È quindi consigliabile attivare il filtro bidirezionale in una definizione di misura usando invece la funzione DAX CROSSFILTER. È possibile usare la funzione CROSSFILTER 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 del modello tra le tabelle Customer
e Sales
è stata impostata per filtrare in una direzione singola.
Different Countries Sold =
CALCULATE(
DISTINCTCOUNT(Customer[Country-Region]),
CROSSFILTER(
Customer[CustomerCode],
Sales[CustomerCode],
BOTH
)
)
Durante la valutazione della misura Different Countries Sold
, la relazione tra le tabelle Customer
e Sales
filtra in entrambe le direzioni.
Nella tabella oggetti visivi seguente vengono visualizzate le statistiche relative a ogni prodotto venduto. La colonna Quantity
è semplicemente la somma dei valori di quantità. La colonna Different Countries Sold
rappresenta il conteggio distinto dei valori di area geografica di tutti i clienti che hanno acquistato il prodotto.
Contenuto correlato
Per altre informazioni correlate a questo articolo, vedere le risorse seguenti:
- Relazioni nei modelli in Power BI Desktop
- Informazioni su uno schema star e sull'importanza di questo schema per Power BI
- Linee guida per relazioni uno-a-uno
- Linee guida per le relazioni molti-a-molti
- Linee guida per la risoluzione dei problemi relativi alle relazioni
- Domande? Prova a chiedere alla Fabric Community
- inviare suggerimenti, Contribuire idee per migliorare Fabric