Espressioni DAX relative alla tabella

Completato

Molto spesso in Power BI si creano tabelle importando i dati nel modello da un'origine dati esterna. Con le funzioni della tabella, invece, si aggiungono nuove tabelle in base ai dati già caricati nel modello.

Panoramica

Le funzioni della tabella consentono agli utenti di Power BI di creare una tabella intermedia, che viene visualizzata nel modello di dati e può essere usata in altre espressioni DAX. Le funzioni di tabella sono tabelle temporanee che è possibile usare, ma non sono visibili perché non vengono restituite.

Le funzioni FILTER, VALUES e ALL sono tabelle intermedie comuni spesso usate nelle misure DAX.

Applicare la funzione FILTER

La funzione FILTER imposta il filtro per una tabella specifica e quindi usa una versione ridotta di una tabella in un calcolo. In altre parole, viene restituita una tabella che rappresenta un subset di un'altra tabella o espressione.

Si supponga, ad esempio, di avere la tabella dati seguente:

Tabella dati a cui si fa riferimento nell'esempio sulla funzione FILTER.

Nella tabella precedente alcune righe evidenziano le vendite di Seattle. Le vendite totali di Seattle nel 2018 sono 30,13 (20,46 + 9,67). Per ottenere questo risultato con la funzione FILTER:

2018 Sales = SUMX(
  FILTER(
    Sales,
    YEAR( Sales[SalesDate] ) = 2018
  ),
  [Price]*[Quantity]
)

Suggerimento

IN TABLEAU: per creare lo stesso calcolo in Tableau, è necessario usare la sintassi IF/THEN: 2018 Sales = IF YEAR([SalesDate]) = 2018 THEN SUM([Price]*[Quantity]) END

Nel frammento di codice precedente sono stati prima recuperati i dati per il contesto di filtro, ovvero la tabella dei fatti delle vendite:

Anteprima dei dati della tabella dei fatti delle vendite.

Successivamente, sono stati filtrati i dati delle vendite in modo da includere solo le vendite del 2018.

Anteprima dei dati della tabella dei fatti delle vendite che evidenzia le vendite del 2018.

Infine, è stata valutata l'espressione, ma solo per i record nella tabella temporanea.

Anteprima dei dati della tabella dei fatti delle vendite a cui sono stati applicati i filtri per mostrare le vendite del 2018.

Applicare la funzione VALUES

VALUES restituisce una tabella con un'unica colonna che contiene i diversi valori della tabella o della colonna specificata. I valori duplicati vengono rimossi e vengono restituiti solo valori univoci.

Ad esempio, all'utente è stata appena assegnata un'attività per cui deve mostrare per quale giocatore di una squadra sportiva resta ancora da pagare una multa.

Di seguito è riportata la tabella dati, denominata Team Fine Details (Dettagli multe squadra), che verrà usata:

Tabella dati a cui si fa riferimento nell'esempio sulla funzione VALUES.

L'utente dovrà verificare se è rimasto un solo giocatore per cui è necessario pagare la multa. In tal caso, se ne deve visualizzare il nome. Altrimenti, si dovrà visualizzare il messaggio "more than one player" (più di un giocatore).

A tale scopo è possibile usare la funzione VALUES:

LastPlayer = IF(
  COUNTROWS( VALUES( 'Team Fine Details'[SportsTeam] ) ) = 1,
  VALUES( 'Team Fine Details'[PlayerName] ),
  "More than one player"
)

Suggerimento

IN TABLEAU: ecco come si esegue lo stesso calcolo in Tableau: LastPlayer = IF COUNTD([SportsTeam]) = 1 THEN [PlayerName] ELSE "More than one player" END

Questa misura sarà simile al report o alla visualizzazione seguente:

Report di esempio con il calcolo LastPlayer incluso.

Applicare la funzione ALL

Con la funzione ALL Power BI esamina una tabella specifica, preleva da essa tutti i valori (non filtra la tabella) e usa tale subset di valori in un'espressione.

Spesso la funzione ALL viene usata quando si vuole conoscere la percentuale del totale di una misura aggregata.

Si consideri, ad esempio, lo scenario relativo all'importo delle multe per le squadre sportive. Il responsabile è soddisfatto dei risultati dell'attività precedente, ma desidera sapere quale squadra ha la percentuale più alta di multe in sospeso.

Report più recente con il calcolo LastPlayer incluso.

Il primo passaggio consiste nel creare una misura per il totale delle multe in sospeso:

TotalAllFineAmount = CALCULATE( [TotalFineAmount], ALL( 'Team Fine Details'[SportsTeam] ) )

Suggerimento

IN TABLEAU: ecco come viene eseguito lo stesso calcolo in Tableau usando l'espressione LOD FIXED. Si aggrega il totale TotalFineAmount a livello di tabella: TotalAllFineAmount = { FIXED : SUM([TotalFineAmount]) }

Il secondo e ultimo passaggio consiste nel creare la percentuale della misura totale usando la funzione DIVIDE:

FineAmountPercentOfTotal = DIVIDE( [TotalFineAmount], [TotalAllFineAmount] )

Suggerimento

IN TABLEAU: ecco come si esegue lo stesso calcolo in Tableau: FineAmountPercentOfTotal = SUM([TotalFineAmount]) / SUM([TotalAllFineAmount])