In questa sezione viene descritto come creare filtri all'interno delle formule DAX (Data Analysis Expressions). È possibile creare filtri all'interno delle formule per limitare i valori dei dati di origine usati nei calcoli. A questo scopo, specificare una tabella come input per la formula e quindi definire un'espressione di filtro. L'espressione di filtro specificata viene usata per eseguire query sui dati e restituire solo un sottoinsieme dei dati di origine. Il filtro viene applicato in modo dinamico ogni volta che si aggiornano i risultati della formula, a seconda del contesto corrente dei dati.
Contenuto dell'articolo
Creazione di un filtro in una tabella usata in una formula
È possibile applicare filtri nelle formule che accettano una tabella come input. Invece di immettere un nome di tabella, usare la funzione FILTRO per definire un sottoinsieme di righe dalla tabella specificata. Tale sottoinsieme viene quindi passato a un'altra funzione, per operazioni come aggregazioni personalizzate.
Si supponga, ad esempio, di avere una tabella di dati contenente informazioni sugli ordini sui rivenditori e di voler calcolare la quantità di ogni rivenditore venduto. Tuttavia, si vuole visualizzare l'importo delle vendite solo per i rivenditori che hanno venduto più unità dei prodotti di valore superiore. La formula seguente, basata sulla cartella di lavoro di esempio DAX, mostra un esempio di come è possibile creare questo calcolo usando un filtro:
=SOMMA.X(
FILTRO ('ResellerSales_USD', 'ResellerSales_USD'[Quantità] > 5 && 'ResellerSales_USD'[ProductStandardCost_USD] > 100), 'ResellerSales_USD'[SalesAmt] )-
La prima parte della formula specifica una delle funzioni di aggregazione Power Pivot, che accetta una tabella come argomento. SOMMA.Q calcola una somma su una tabella.
-
La seconda parte della formula, FILTER(table, expression),indica SUMX quali dati usare. SUMX richiede una tabella o un'espressione che restituisca una tabella. Qui, invece di usare tutti i dati in una tabella, si usa la funzione FILTER per specificare quali righe della tabella vengono usate.
L'espressione di filtro è composta da due parti: la prima parte assegna un nome alla tabella a cui si applica il filtro. La seconda parte definisce un'espressione da usare come condizione di filtro. In questo caso, si filtrano i rivenditori che hanno venduto più di 5 unità e prodotti il cui costo è superiore a $ 100. L'operatore, &&, è un operatore AND logico, che indica che entrambe le parti della condizione devono essere vere perché la riga appartenga al sottoinsieme filtrato.
-
La terza parte della formula indica alla funzione SUMX quali valori devono essere sommati. In questo caso si usa solo l'importo delle vendite.
Si noti che funzioni come FILTRO, che restituiscono una tabella, non restituiscono mai direttamente la tabella o le righe, ma sono sempre incorporate in un'altra funzione. Per altre informazioni su FILTRO e altre funzioni usate per il filtro, inclusi altri esempi, vedere Funzioni di filtro (DAX).
Nota: L'espressione di filtro è interessata dal contesto in cui viene usata. Ad esempio, se si usa un filtro in una misura e la misura viene usata in una tabella pivot o in un grafico pivot, il sottoinsieme di dati restituito potrebbe essere interessato da altri filtri o filtri dei dati applicati dall'utente alla tabella pivot. Per altre informazioni sul contesto, vedere Contesto nelle formule DAX.
Filtri che rimuova i duplicati
Oltre a filtrare valori specifici, è possibile restituire un set univoco di valori da un'altra tabella o colonna. Ciò può risultare utile quando si vuole contare il numero di valori univoci in una colonna o usare un elenco di valori univoci per altre operazioni. In DAX sono disponibili due funzioni per la restituzione di valori distinti: funzione DISTINCT e funzione VALUES.
-
La funzione DISTINCT esamina una singola colonna specificata come argomento della funzione e restituisce una nuova colonna contenente solo i valori distinti.
-
La funzione VALORI restituisce anche un elenco di valori univoci, ma restituisce anche il membro Unknown. Ciò è utile quando si usano valori di due tabelle unite da una relazione e un valore non è presente in una tabella e nell'altra. Per altre informazioni sul membro Sconosciuto, vedere Contesto nelle formule DAX.
Entrambe queste funzioni restituiscono un'intera colonna di valori; Di conseguenza, usare le funzioni per ottenere un elenco di valori che viene quindi passato a un'altra funzione. Ad esempio, è possibile usare la formula seguente per ottenere un elenco dei prodotti distinti venduti da un determinato rivenditore, usando il codice Product Key univoco, quindi contare i prodotti in tale elenco usando la funzione CONTA.NUMERI:
=CONTA.ROWS(DISTINCT('ResellerSales_USD'[ProductKey]))
Influenza del contesto sui filtri
Quando si aggiunge una formula DAX a una tabella pivot o a un grafico pivot, i risultati della formula possono essere influenzati dal contesto. Se si sta lavorando in una tabella Power Pivot, il contesto è la riga corrente e i relativi valori. Se si usa una tabella pivot o un grafico pivot, il contesto indica il set o il sottoinsieme di dati definito da operazioni come l'applicazione di filtri o l'applicazione di filtri. La struttura della tabella pivot o del grafico pivot impone anche un contesto specifico. Ad esempio, se si crea una tabella pivot che raggruppa le vendite in base all'area geografica e all'anno, nella tabella pivot vengono visualizzati solo i dati applicabili a tali aree e anni. Pertanto, le misure aggiunte alla tabella pivot vengono calcolate nel contesto delle intestazioni di colonna e di riga, oltre a eventuali filtri nella formula di misura.
Per altre informazioni, vedere Contesto nelle formule DAX.
Rimozione dei filtri
Quando si usano formule complesse, è consigliabile sapere esattamente cosa sono i filtri correnti oppure modificare la parte filtro della formula. In DAX sono disponibili diverse funzioni che consentono di rimuovere i filtri e di controllare quali colonne vengono conservate come parte del contesto di filtro corrente. In questa sezione viene fornita una panoramica dell'effetto di queste funzioni sui risultati di una formula.
Override di tutti i filtri con la funzione ALL
È possibile usare la funzione ALL per eseguire l'override di eventuali filtri applicati in precedenza e restituire tutte le righe della tabella alla funzione che esegue l'operazione di aggregazione o di altro tipo. Se si usano una o più colonne, invece di una tabella, come argomenti per ALL, la funzione ALL restituisce tutte le righe, ignorando eventuali filtri di contesto.
Nota: Se si ha familiarità con la terminologia di database relazionale, è possibile considerare ALL come la generazione del left outer join naturale di tutte le tabelle.
Si supponga, ad esempio, di avere le tabelle Vendite e Prodotti e di voler creare una formula che calcolerà la somma delle vendite per il prodotto corrente divisa per le vendite per tutti i prodotti. È necessario tenere in considerazione il fatto che, se la formula viene usata in una misura, l'utente della tabella pivot potrebbe usare un filtro dei dati per filtrare in base a un determinato prodotto, con il nome del prodotto nelle righe. Pertanto, per ottenere il valore vero del denominatore indipendentemente da eventuali filtri o filtri dei dati, è necessario aggiungere la funzione ALL per eseguire l'override di qualsiasi filtro. La formula seguente è un esempio di come usare TUTTE per ignorare gli effetti dei filtri precedenti:
=SUM (Sales[Amount])/SUMX(Sales[Amount], FILTER(Sales, ALL(Products)))
-
La prima parte della formula, SOMMA (Vendite[Importo]), calcola il numeratore.
-
La somma prende in considerazione il contesto corrente, ovvero se si aggiunge la formula in una colonna calcolata, viene applicato il contesto di riga e, se si aggiunge la formula in una tabella pivot come misura, vengono applicati tutti i filtri applicati nella tabella pivot , ovvero il contesto di filtro.
-
La seconda parte della formula calcola il denominatore. La funzione ALL esegue l'override di tutti i filtri che potrebbero essere applicati alla tabella Products .
Per altre informazioni, inclusi esempi dettagliati, vedere Funzione ALL.
Override di filtri specifici con la funzione ALLEXCEPT
La funzione ALLEXCEPT sostituisce anche i filtri esistenti, ma è possibile specificare che alcuni filtri esistenti devono essere mantenuti. Le colonne che vengono denominate come argomenti della funzione ALLEXCEPT specificano quali colonne continueranno a essere filtrate. Se si desidera ignorare i filtri dalla maggior parte delle colonne ma non da tutte, ALLEXCEPT è più conveniente di ALL. La funzione ALLEXCEPT è particolarmente utile quando si creano tabelle pivot che potrebbero essere filtrate in base a molte colonne diverse e si vogliono controllare i valori usati nella formula. Per altre informazioni, incluso un esempio dettagliato di come usare ALLEXCEPT in una tabella pivot, vedere Funzione ALLEXCEPT.