Back

Sincronizzazione degli slicer in Power BI

Questo articolo spiega perché questa è una caratteristica importante che dovrebbe sostituire i filtri bidirezionali utilizzati per lo stesso scopo.

Le funzionalità di modellazione dei dati in Power BI sono molto potenti. A volte, questo potere viene utilizzato senza considerare i possibili effetti collaterali. Una caratteristica che viene spesso utilizzata in modo errato è il filtro incrociato bidirezionale nelle relazioni. È possibile trovare una descrizione dei rischi e delle best practice nel video Power BI e nelle relazioni e ambiguità bidirezionali nell’articolo DAX . Esiste una funzionalità nell’aggiornamento di Power BI del giugno 2019 che riduce notevolmente la necessità di filtri incrociati bidirezionali: possiamo applicare filtri visivi agli slicer, quindi è possibile filtrare gli slicer usando una misura. Vediamo come agisce questa funzionalità e perché è così rilevante.

Nel seguente report, un slicer sta filtrando i clienti per nome, un altro strumento di slicing mostra i colori e due matrici mostrano l’importo delle vendite per marchio e per colore. Nel Filtro cliente, viene selezionata Amanda Allen.

La cosa evidente nel comportamento dello slicer è che le due matrici mostrano solo i marchi e i colori acquistati da Amanda. Tuttavia, lo slicer Color mostra ancora tutti i colori, anche se sappiamo che Amanda ha acquistato solo tre colori: Grigio, Argento e Bianco.

Il motivo è che le matrici, come la maggior parte degli elementi grafici di Power BI, nascondono le righe se la misura che stanno visualizzando produce uno spazio vuoto. Poiché Amanda non ha acquistato alcun prodotto rosa, il valore di “Sales Amount for Pink” risulta in uno spazio vuoto, pertanto la matrice rimuove il colore rosa dal suo risultato. Prima della release di Power BI del maggio 2019, gli slicer non mostravano questo comportamento perché gli slicer non avevano una misura da valutare: mostrando solo un elenco di valori da una colonna; inoltre, i filtri a livello di visualizzazione non erano consentiti negli slicer mentre erano disponibili in altri elementi visivi quali grafici, tabelle e matrici.

Per questi motivi, molti sviluppatori hanno fatto affidamento su filtri bidirezionali per mantenere sincronizzati gli slicer. Attivando il filtro incrociato bidirezionale nella relazione tra Vendite e Prodotti, è possibile filtrare il colore dal cliente – il contesto del filtro mostra solo i colori relativi ai prodotti venduti ai clienti selezionati. Ciononostante l’uso di filtri incrociati bidirezionali per la sincronizzazione di slicer è una pessima idea, mettendo il modello ad alto rischio di produrre risultati errati.

Power BI ora consente l’aggiunta di filtri a livello di visualizzazione a uno slicer, che include non solo la colonna che viene filtrata, ma qualsiasi misura:

 

Pertanto, come possiamo nascondere i colori che Amanda non ha acquistato? È sufficiente utilizzare una misura che diventa vuota quando non ci sono vendite per Amanda. Il filtro visivo per l‘importo delle vendite (Sales Amount) funziona ora ottimamente:

Aggiungendo il filtro visivo che richiede che l’importo delle vendite non sia vuoto, tutti i colori che non risultano venduti scompaiono dallo slicer. Il risultato è molto accurato.

Come abbiamo detto, la funzionalità di per sé non è così eccitante. È utile, ma non così potente. Ciò che rende un enorme passo avanti nella qualità del reporting è che gli utenti non devono più abilitare il filtro incrociato bidirezionale per raggiungere lo stesso obiettivo. Se si desidera sincronizzare gli slicer, è sufficiente fare affidamento su un filtro a livello visivo, quindi non rovinare il modello con un filtro incrociato bidirezionale.

Ecco il primo invito all’azione per te: se hai un filtro bidirezionale nei tuoi modelli solo per sincronizzare gli slicer, interrompi la lettura; apri uno dei tuoi modelli e fai la sincronizzazione dello slicer usando questa funzione, e disabilitando i filtri incrociati bidirezionali. Una volta che hai visto quanto sia facile sbarazzarsi del filtro incrociato bidirezionale dai tuoi modelli, puoi tornare qui, dove andiamo avanti con alcuni esempi di come utilizzare i filtri visivi negli slicer per produrre report ancora più interessanti.

Una domanda interessante prima di andare avanti è se fosse una scelta intelligente o meno scegliere la misura Importo vendite per nascondere i colori. La risposta è semplice: no. Non è necessario calcolare Importo vendite per ciascun colore nello slicer se l’unico obiettivo della misura è quello di nascondere i colori senza vendite. La scelta migliore consiste invece nell’usare un’espressione “NOT ISEMPTY” più semplice, ed è anche più veloce della misura Importo vendite.

La seguente misura si adatta meglio come filtro slicer:

Slicer_ProductsWithSales = INT ( NOT ISEMPTY ( Sales ) )

Il risultato di questa misura è 0 o 1. Lo slicer deve mostrare solo gli elementi che restituiscono 1 a questa misura, nascondendo quelli che restituiscono 0. La conversione in un numero intero è necessaria per abilitare la logica di confronto nel filtro visivo, che non funziona per un valore booleano (Vero / Falso).


Poiché un modello complesso probabilmente contiene molte di queste misure di strumenti create solo per filtrare gli slicer, il loro prefisso con Slicer o qualsiasi altro nome che le renda facilmente riconoscibili è una buona pratica. Un’altra opzione sarebbe la creazione di una tabella Slicers (nascosta se il modello non è pubblicato per altri report) per ospitare tutte queste misure, il che aiuta a evitare di dover esporre queste misure in altre tabelle.

Cosa succede se lo slicer deve mostrare solo i colori per i quali ci sono sia vendite che acquisti? L’importo delle vendite e l’importo degli acquisti sono misure che vengono calcolate in due diverse tabelle. La prima opzione utilizza due misure:

Slicer_ProductsWithSales = INT ( NOT ISEMPTY ( Sales ) )
Slicer_ProductsWithPurchases = INT ( NOT ISEMPTY ( Purchases ) )

Entrambe le misure dovrebbero essere condizioni nel filtro visivo dello Slicer. Più filtri nella stessa vista vengono inseriti in un AND logico, quindi gli utenti saranno in grado di selezionare solo i colori dei prodotti presenti nelle tabelle Vendite e Acquisti.

Questa tecnica funziona bene se hai bisogno di mettere due condizioni differenti in un AND logico. Se vuoi che lo Slicer mostri tutti i colori presenti in Vendite O Acquisti, allora hai bisogno di una misura dedicata per applicare il filtro:
Slicer_ProductsWithPurchasesOrSales = 
    INT (
        NOT ISEMPTY ( Sales )
        ||
        NOT ISEMPTY ( Purchases )
    )

Analogamente alle precedenti misure di slicer, questa misura restituisce anche 1 se ci sono righe in Vendite o Acquisti – quindi l’elemento corrispondente deve essere visibile nello Slicer – e 0 se l’elemento deve essere nascosto.
L’utilizzo di una singola misura rende l’esperienza di modifica complessiva del report un po’ migliore e offre un maggiore controllo nella visualizzazione dello Slicer – se necessario è possibile implementare una logica più complessa.

Le possibilità di filtri visivi con Slicer sono infinite; l’unico limite è la tua immaginazione. Ad esempio, un utilizzo interessante è uno Slicer che mostra solo i primi 5 prodotti in un periodo di tempo selezionato.


In questo caso, la misura che filtra l'affettatrice non può essere un semplice NOT ISEMPTY. Invece, utilizza RANKX per fornire la classifica del prodotto rispetto a quelli selezionati:
SlicerTopProducts := RANKX ( ALLSELECTED ( 'Product' ), [Sales Amount] )

Il filtro visivo richiede quindi che la misura sia inferiore o uguale a cinque.

 

 

RANKX è una funzione pesante. Usarlo per filtrare gli Slicer influisce negativamente sulle prestazioni del dashboard. Questo non vuol dire che dovresti evitarlo del tutto. È una caratteristica interessante che, se utilizzata con cura, ti consente di creare dashboard e report stupendi. Se la usi senza cura, la dashboard sarà splendida, ma anche molto lenta.

 

Conclusioni

I filtri visivi per gli Slicer sono un’aggiunta straordinaria a Power BI. Non solo prevediamo il vantaggio di poter ridurre il contenuto di uno Slicer solo ai valori utili. Per noi, il più grande vantaggio è che gli utenti ora hanno una solida opzione per mantenere sincronizzati gli Slicer, senza dover abilitare il filtro incrociato bidirezionale nel modello dati.

Questo è un piccolo passo per Power BI, un passo da gigante per la qualità dei tuoi report.

 

 

 

fonte: https://www.sqlbi.com/articles/syncing-slicers-in-power-bi/