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 valuespecifico.
In earlier versioni di DAX, questo requisito è stato raggiunto in modo sicuro usando un modello che include tre funzioni DAX; IF, HASONEVALUEandVALUES. La definizione di measure 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 value della colonna paese-regione è visibile nel contesto corrente di filter. Quando è TRUE, la funzione VALUES viene confrontata con il testo letterale "Australia". Quando la funzione
L'uso del HASONEVALUE è una tecnica difensiva. È necessario perché è possibile che la colonna country-region appaia in modo multiplo valuesfilter. In questo caso, la funzione VALUES restituisce una tabella di più righe. Il confronto di una tabella di più righe con un value scalare comporta un error.
Recommendation
È consigliabile usare la funzione SELECTEDVALUE. Ottiene lo stesso risultato del modello descritto in questo articolo, ma in modo più efficiente and elegantemente.
Usando la funzione SELECTEDVALUE, la definizione di measure di esempio viene now riscritta.
Australian Sales Tax =
IF(
SELECTEDVALUE(Customer[Country-Region]) = "Australia",
[Sales] * 0.10
)
Suggerimento
È possibile passare un risultato alternativo divalue nella funzione SELECTEDVALUE. Il risultato alternativo value viene restituito quando alla colonna non vengono applicate filters,or più filters.
Related contenuto
- Learning path: Usare DAX in Power BI Desktop
- Domande? Prova a chiedere alla community di Power BI
- inviare suggerimenti, contribuire con idee per migliorare Power BI