Filtrare i dati nelle formule DAX

Si applica a
Excel per Microsoft 365 Excel 2024 Excel 2021 Excel 2019 Excel 2016

Questa sezione descrive 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 che vengono usati nei calcoli. A tale scopo, specificare una tabella come input per la formula e quindi definire un'espressione di filtro. L'espressione di filtro fornita viene usata per eseguire query sui dati e restituire solo un subset dei dati di origine. Il filtro viene applicato dinamicamente 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 utilizzata in una formula

È possibile applicare filtri alle formule che accettano una tabella come input. Anziché immettere un nome di tabella, usare la funzione FILTRO per definire un subset di righe dalla tabella specificata. Tale subset viene quindi passato a un'altra funzione, per operazioni come le aggregazioni personalizzate.

Supponiamo ad esempio di avere una tabella di dati contenente informazioni sugli ordini dei rivenditori e di voler calcolare la quantità venduta da ogni rivenditore. Tuttavia, si desidera 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 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 di Power Pivot, che accetta una tabella come argomento. SUMX calcola una somma su una tabella.

  • La seconda parte della formula FILTER(table, expression),indica SUMX i dati da 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 FILTER funzione per specificare quali righe della tabella vengono usate.
    L'espressione di filtro è composta da due parti: la prima parte indica la tabella a cui applicare il filtro. La seconda parte definisce un'espressione da usare come condizione di filtro. In questo caso, stai filtrando i rivenditori che hanno venduto più di 5 unità e prodotti che costano più di $ 100. L'operatore && è un operatore logico AND che indica che entrambe le parti della condizione devono essere vere affinché la riga appartenga al subset filtrato.

  • La terza parte della formula indica alla SUMX funzione quali valori devono essere sommati. In questo caso stai usando solo l'importo delle vendite.
    Si noti che le 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 è influenzata dal contesto in cui viene usata. Se, ad esempio, si usa un filtro in una misura e la misura viene usata in una tabella pivot o in un grafico pivot, il subset di dati restituito potrebbe essere interessato da filtri o filtri dei dati aggiuntivi applicati dall'utente nella tabella pivot. Per altre informazioni sul contesto, vedere Contesto nelle formule DAX.

Filtri che rimuovono i duplicati

Oltre a filtrare per valori specifici, è possibile restituire un set univoco di valori da un'altra tabella o colonna. Ciò può essere utile quando si vuole contare il numero di valori univoci in una colonna o usare un elenco di valori univoci per altre operazioni. DAX offre due funzioni per la restituzione di valori distinti: la funzione DISTINCT e la funzione VALUES.

  • La funzione DISTINTO esamina una singola colonna specificata dall'utente come argomento della funzione e restituisce una nuova colonna contenente solo i valori distinti.
  • La funzione VALUES restituisce anche un elenco di valori univoci, ma restituisce anche il membro Unknown. Ciò è particolarmente utile quando si usano valori di due tabelle unite da una relazione e un valore manca in una tabella ed è presente nell'altra. Per altre informazioni sul membro sconosciuto, vedere Contesto nelle formule DAX.

Entrambe queste funzioni restituiscono un'intera colonna di valori; Pertanto, si usano le funzioni per ottenere un elenco di valori che viene poi 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 e quindi contare i prodotti in tale elenco usando la funzione COUNTROWS:

=COUNTROWS(DISTINCT('ResellerSales_USD'[ProductKey]))

Inizio pagina

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 usa una tabella di Power Pivot, il contesto è la riga corrente e i relativi valori. Se si usa una tabella pivot o un grafico pivot, per contesto si intende il set o il sottoinsieme di dati definito da operazioni quali il filtro o il suddivisione. Anche la progettazione della tabella pivot o del grafico pivot impone un contesto specifico. Se, ad esempio, si crea una tabella pivot che raggruppa le vendite per area e anno, nella tabella pivot verranno visualizzati solo i dati relativi a tali aree e anni. Di conseguenza, tutte le misure aggiunte alla tabella pivot vengono calcolate nel contesto delle intestazioni di colonna e di riga, insieme agli eventuali filtri nella formula delle misure.

Per altre informazioni, vedere Contesto nelle formule DAX.

Inizio pagina

Rimozione dei filtri

Quando si usano formule complesse, è possibile sapere esattamente quali sono i filtri correnti oppure modificare la parte della formula relativa al filtro. DAX offre diverse funzioni che consentono di rimuovere i filtri e di controllare quali colonne vengono mantenute come parte del contesto del filtro corrente. Questa sezione fornisce una panoramica del modo in cui queste funzioni influiscono sui risultati di una formula.

Override di tutti i filtri con la funzione ALL

È possibile usare la ALL funzione per ignorare i filtri applicati in precedenza e restituire tutte le righe della tabella alla funzione che esegue l'aggregazione o un'altra operazione. Se si usano una o più colonne, anziché una tabella, come argomenti di ALL, la ALL funzione restituisce tutte le righe, ignorando eventuali filtri di contesto.

Nota

Se si ha familiarità con la terminologia dei database relazionali, si può pensare alla ALL generazione del left outer join naturale di tutte le tabelle.

Supponiamo ad esempio di avere le tabelle Vendite e Prodotti e di voler creare una formula che calcolerà la somma delle vendite del prodotto corrente divisa per le vendite di 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 prodotto specifico, con il nome del prodotto nelle righe. Pertanto, per ottenere il valore reale del denominatore indipendentemente da eventuali filtri o filtri dei dati, è necessario aggiungere la funzione ALL per ignorare eventuali filtri. La formula seguente è un esempio di come usare ALL per sostituire gli effetti dei filtri precedenti:

=SOMMA (Vendite[Importo])/SOMMA.X(Vendite[Importo]; FILTRO(Vendite; TUTTI(Prodotti)))

  • La prima parte della formula, SOMMA (Vendite[Importo]), calcola il numeratore.
  • La somma tiene conto del 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 (contesto del filtro).
  • La seconda parte della formula calcola il denominatore. La funzione ALL sostituisce qualsiasi Products filtro applicato alla tabella.

Per ulteriori informazioni, inclusi esempi dettagliati, vedere Funzione ALL.

Sostituzione dei filtri specifici con la funzione ALLEXCEPT

La funzione ALLEXCEPT sostituisce anche i filtri esistenti, ma è possibile specificare che alcuni dei filtri esistenti devono essere mantenuti. Le colonne indicate come argomenti della funzione ALLEXCEPT specificano le colonne che continueranno a essere filtrate. Se si vogliono 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 sull'uso di ALLEXCEPT in una tabella pivot, vedere Funzione ALLEXCEPT.

Inizio pagina