Esaminare il contesto di filtro

Completato

La funzione DAX VALUES consente alle formule di determinare i valori che si trovano nel contesto di filtro.

La sintassi della funzione VALUES è la seguente:

VALUES(<TableNameOrColumnName>)

La funzione richiede il passaggio di un riferimento a tabella o di un riferimento a colonna. Quando si passa un riferimento a tabella, restituisce un oggetto tabella con le stesse colonne che includono righe per gli elementi presenti nel contesto di filtro. Quando si passa un riferimento a colonna, restituisce una tabella a colonna singola con valori univoci che si trovano nel contesto di filtro.

La funzione restituisce sempre un oggetto tabella ed è possibile che una tabella includa più righe. Per verificare se un valore specifico si trova nel contesto di filtro, è quindi necessario che la formula verifichi prima di tutto che la funzione VALUES restituisca una singola riga. Per eseguire questa attività è possibile usare due funzioni, ovvero le funzioni DAX HASONEVALUE e SELECTEDVALUE.

La funzione HASONEVALUE restituisce TRUE quando un riferimento a colonna specifico è stato filtrato fino a ottenere un singolo valore.

La funzione SELECTEDVALUE semplifica l'attività di determinazione del singolo valore specifico. Quando alla funzione viene passato un riferimento a colonna, restituirà un singolo valore o, se nel contesto di filtro sono presenti più valori, restituirà VUOTO o un valore alternativo passato alla funzione.

Nell'esempio seguente verrà usata la funzione HASONEVALUE. Aggiungere alla tabella Sales la misura seguente, che calcola le provvigioni relative alle vendite. Si noti che, in Adventure Works, il tasso di commissione è il 10% dei ricavi per tutti i paesi/aree geografiche, ad eccezione del Stati Uniti. Nell'area United States i venditori ricevono una provvigione del 15%. Formattare la misura come valuta con due cifre decimali e quindi aggiungerla alla tabella disponibile nella Pagina 3 del report.

Sales Commission =
[Revenue]
    * IF(
        HASONEVALUE('Sales Territory'[Country]),
        IF(
            VALUES('Sales Territory'[Country]) = "United States",
            0.15,
            0.1
        )
    )

Un'immagine mostra un oggetto visivo tabella con tre colonne: Region, Revenue e Sales Commission. Vengono mostrate dieci righe per le aree e un totale. Il valore totale per Sales Commission è VUOTO.

Si noti che il totale del risultato per Sales Commission è VUOTO. Il contesto di filtro per la colonna Country della tabella Sales Territory contiene infatti più valori. In questo caso la funzione HASONEVALUE restituisce FALSE, che provoca la moltiplicazione della misura Revenue per BLANK (un valore moltiplicato per BLANK è BLANK). Per produrre un totale, sarà necessario usare una funzione iteratore, che viene illustrata più avanti in questo modulo.

Per testare lo stato del filtro è anche possibile usare le tre funzioni seguenti:

  • ISFILTERED: restituisce TRUE quando il riferimento a colonna passato viene filtrato direttamente.
  • ISCROSSFILTERED: restituisce TRUE quando il riferimento a colonna passato viene filtrato indirettamente. Una colonna è a filtro incrociato quando un filtro applicato a un'altra colonna della stessa tabella o di una tabella correlata influisce sulla colonna di riferimento filtrandola.
  • ISINSCOPE: restituisce TRUE quando il riferimento a colonna passato corrisponde al livello di una gerarchia di livelli.

Tornare alla Pagina 2 del report e quindi modificare la definizione della misura Revenue % Total Country per verificare che la colonna Region nella tabella Sales Territory rientri nell'ambito. Se non rientra nell'ambito, il risultato della misura deve essere VUOTO.

Revenue % Total Country =
VAR CurrentRegionRevenue = [Revenue]
VAR TotalCountryRevenue =
    CALCULATE(
        [Revenue],
        REMOVEFILTERS('Sales Territory'[Region])
    )
RETURN
    IF(
        ISINSCOPE('Sales Territory'[Region]),
        DIVIDE(
            CurrentRegionRevenue,
            TotalCountryRevenue
        )
    )

Un'immagine mostra un oggetto visivo matrice denominato Reseller Revenue con raggruppamenti in base a Group, Country e Region e riepiloghi in base a Revenue, Revenue % Total Region, Revenue % Total Country e Revenue % Total Group. I valori VUOTO si trovano nei riepiloghi Revenue % Total Country.

Nell'oggetto visivo matrice si noti che i valori di Revenue % Total Country vengono ora visualizzati solo quando un'area rientra nell'ambito.