Scoprire i segreti di KEPFILTERS in DAX

Esplorare KEPFILTERS in DAX

La funzione KEEPFILTERS() in DAX è una funzione sottovalutata. Quindi, ho deciso di approfondire questa funzione e fornirti alcuni dettagli interessanti su di essa e un effetto sorprendente.

Foto di Ian Tuck su Unsplash

Introduzione

Quando utilizziamo la funzione CALCULATE() in DAX, di solito aggiungiamo un semplice filtro come questo:

Product[Color] = “Green”

Questo filtro sostituisce qualsiasi filtro esistente sulla colonna [Color] con il valore “Green”.

Ma talvolta, abbiamo bisogno di fare un ulteriore passo avanti e conservare un filtro esistente su una tabella o su una colonna per eseguire alcuni calcoli interessanti.

E a volte, otteniamo un risultato errato dalle nostre Misurazioni e non riusciamo a capire perché succede.

Sono queste le situazioni in cui la funzione KEEPFILTERS() può aiutarci.

Query di origine

Prima di tutto, definiamo la Query su cui vogliamo lavorare.

Voglio ottenere una lista di Vendite Online per Colore:

DEFINE  MEASURE 'All Measures'[Online Sales] = SUMX('Online Sales', [UnitPrice]*[SalesQuantity])  EVALUATE     SUMMARIZECOLUMNS('Product'[Color]                      ,"Online Sales", [Online Sales]                      )

Utilizzo SUMX per moltiplicare [UnitPrice] per [SalesQuantity].

Il risultato appare così:

La query appare così quando aggiungo un filtro con CALCULATE(), come descritto in precedenza.

// Solo le vendite GreenDEFINE  MEASURE 'All Measures'[Online Sales] = SUMX('Online Sales', [UnitPrice]*[SalesQuantity])   MEASURE 'All Measures'[All Green Sales] =                 CALCULATE([Online Sales]                             ,'Product'[Color] = "Green"                            ) EVALUATE  SUMMARIZECOLUMNS('Product'[Color]                    ,"Online Sales", [Online Sales]                    ,"Green Sales", [All Green Sales]                    )

E il risultato appare così: