Pagina 1 di 1

Schema a fiocco di neve

Inviato: dom 29 ago 2021, 13:02
da Davide.par
Buongiorno a tutti,

vorrei chiedervi un chiarimento sul modello dati presente nel File1.
Qui c'e' una tabella dei fatti, una prima anagrafica collegata direttamente alla tabella dei fatti, e una seconda anagrafica collegata alla prima a fiocco di neve.
Da entrambe le anagrafiche vorrei creare degli slicer a partire da informazioni testuali e delle misure basate su campi numerici.
Ho creato una pivot mettendo in riga attributi presi dalla prima tabella anagrafica (Prodotto_cliente_Lookup).
Dalla seconda tabella anagrafica (Prodotto_regione_Lookup) vorrei creare uno slicer e usare il campo "Budget Prodotto_Regione" all'interno di una misura.
A questo punto sia lo slicer che la misura non funzionano come previsto.

Per far funzionare il modello ho dovuto fare una modifica, che allego nel File2.
Qui ho portato il campo "Budget Prodotto_Regione" dalla seconda tabella anagrafica alla prima attraverso un RELATED().
Questo mi sembra pero' un passaggio superfluo, dato che le due anagrafiche sono gia' in relazione.

Mi potete chiarire il motivo per cui il modello nel File1 non funziona come previsto?
Potreste inoltre darmi un consiglio su come impostare un modello con N tabelle anagrafiche collegate a fiocco di neve affinche' si possano creare slicer e misure da tutte le angrafiche?

Grazie
Davide

Schema a fiocco di neve

Inviato: dom 29 ago 2021, 13:39
da Andrea90
Ciao Davide.par,

Il motivo è legato ad un errore concettuale in fase di realizzo del modello dati.

Sulle righe della pivot hai inserito le dimensioni provenienti dalla tabella cliente e li hai inizialmente utilizzati per creare delle misure che aggregano i dati della tabella fact (e fin qui tutto ok).

Poi hai creato una misura che aggrega i dati di una tabella (regione) che risiede sul lato 1 della relazione. Pertanto i campi della tabella cliente non sono in grado di filtrare i dati della tabella regione, ecco perché nel file 1 vedi il campo che riporta sempre lo stesso identico valore, perchè non riuscendo a filtrare la tabella regione, ti fa il totale di tutti i record che vede.

L'errore è che tu stai utilizzando una tabella anagrafica, per filtrare i dati di un'altra tabella anagrafica. Le tabelle anagrafiche filtrano le tabelle dei fatti poiché sfruttano la relazione 1 a * che si genera nel modello.

Un modo per risolverlo è anche quello di utilizzare CROSSFILTER(), in modo da attivare una relazione bidirezionale per la sola misura desiderata:

Codice: Seleziona tutto

=
CALCULATE (
    SUM ( Prodotto_regione_Lookup[Budget Prodotto_regione] );
    CROSSFILTER ( Prodotto_cliente_Lookup[Prodotto_regione]; Prodotto_regione_Lookup[Prodotto_regione]; BOTH )
)
Per quel che riguarda poi il dato che hai inserito nella tua seconda versione, proverei a rivedere i valori di Grand Total, non mi sembrano corretti ed il motivo è che utilizzando quel RELATED per creare un campo calcolato sei andato a duplicare i valori di budget.

Andrea

Schema a fiocco di neve

Inviato: lun 30 ago 2021, 17:07
da Davide.par
Grazie Andrea!
Si', quello che dici sulla misura che aggregava i dati di Budget della tabella Regione (lato 1) mi torna.
Eliminando quella misura anche lo slicer Sales Manager preso della tabella Regione poi funziona.
E grazie anche per la soluzione con CROSSFILTER che risolve il tutto.

Facendo qualche prova qua e la c'e' pero' un'altra cosa che ho notato e che vorrei provare a chiederti.
In base alla spiegazione che mi hai dato mi aspetterei che non solo la misura che inizialmente aggregava i dati di Budget della tabella Regione (lato 1) non funzioni, ma anche questa ad esempio che la richiama all'interno di una divisione.

Codice: Seleziona tutto

=DIVIDE([Total Sales];SUM(Prodotto_regione_Lookup[Budget Prodotto_regione]))
E infatti come prima cosa resituitsce dei valori non corretti
Se pero' inserisco il campo "Budget Prodotto_regione" della tabella Regione come dimensione in riga, allora questa nuova misura funziona correttamente. Ho allegato questo esempio nel File_3
Mi sai dire il perche' con la dimensione funziona e senza no? Mi sfugge qualcosa?

Grazie,
Davide

Schema a fiocco di neve

Inviato: lun 30 ago 2021, 17:19
da Andrea90
Ciao Davide.par,

Scusa perché pensi che non dovrebbe funzionare?

Stai utilizzando un campo della tabella regione, che filtra a sua volta i campi della tabella cliente (per i quali hai utilizzato le dimensioni prodotto e cliente), che a sua volta filtra la tabella Fact.

Se non metti il campo regione come puoi poi calcolare correttamente questa:

Codice: Seleziona tutto

SUM(Prodotto_regione_Lookup[Budget Prodotto_regione])
Andrea

Schema a fiocco di neve

Inviato: mar 31 ago 2021, 18:27
da Davide.par
Ciao Andrea90,

in effetti credo di aver fatto confusione.
Grazie ancora

Davide