Usare SELECTEDVALUE anziché VALUES
In qualità di modello di dati, a volte potrebbe essere necessario scrivere un'espressione DAX che verifica se una colonna viene filtrata in base a un valore specifico.
Nelle versioni precedenti di DAX, questo requisito è stato raggiunto in modo sicuro usando un modello che include tre funzioni DAX; IF, HASONEVALUE e VALUES. La definizione di misura seguente presenta un esempio. Calcola l'importo dell'imposta di vendita, ma solo per le vendite effettuate ai clienti australiani.
Australian Sales Tax =
IF(
HASONEVALUE(Customer[Country-Region]),
IF(
VALUES(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
)
Nell'esempio, la funzione HASONEVALUE restituisce TRUE solo quando un singolo valore della colonna Paese-Regione è visibile nel contesto di filtro corrente. Quando è TRUE, la funzione VALUES viene confrontata con il testo letterale "Australia". Quando la funzione VALUES restituisce TRUE, la misura delle vendite viene moltiplicata per 0,10 (che rappresenta il 10%). Se la funzione HASONEVALUE restituisce FALSE, perché più valori filtrano la colonna, la prima funzione IF restituisce BLANK.
L'uso del HASONEVALUE è una tecnica difensiva. È necessario perché è possibile che più valori filtrino la colonna
Recommendation
È consigliabile usare la funzione SELECTEDVALUE. Ottiene lo stesso risultato del modello descritto in questo articolo, ma in modo più efficiente ed elegante.
Usando la funzione SELECTEDVALUE, la definizione di misura di esempio viene ora riscritta.
Australian Sales Tax =
IF(
SELECTEDVALUE(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
Suggerimento
È possibile passare un risultato alternativo valore nella funzione SELECTEDVALUE. Il valore del risultato alternativo viene restituito quando non vengono applicati filtri o più filtri alla colonna.
Contenuto correlato
- Percorso di apprendimento: Usare DAX in Power BI Desktop
- Domande? Prova a chiedere alla community di Power BI
- inviare suggerimenti, Contribuisci con idee per migliorare Power BI