Está en la página 1de 2

Uso de SELECTEDVALUE en lugar de

VALUES
Artículo • 06/04/2023 • Tiempo de lectura: 2 minutos

Como modelador de datos, es posible que en ocasiones tenga que escribir una
expresión DAX que compruebe si una columna está filtrada por un valor específico.

En versiones anteriores de DAX, este requisito se satisfacía de forma segura con un


patrón que implicaba tres funciones DAX: IF, HASONEVALUE y VALUES. La siguiente
definición de medida presenta un ejemplo. Calcula el importe del impuesto de ventas,
pero solo de las ventas efectuadas a los clientes de Australia.

DAX

Australian Sales Tax =

IF(

HASONEVALUE(Customer[Country-Region]),

IF(

VALUES(Customer[Country-Region]) = "Australia",

[Sales] * 0.10

En el ejemplo, la función HASONEVALUE devuelve TRUE solo cuando un único valor de


la columna Country-Region es visible en el contexto de filtro actual. Si es TRUE, la
función VALUES se compara con el texto literal "Australia". Si la función VALUES
devuelve TRUE, la medida Sales se multiplica por 0,10 (que representa el 10%). Si la
función HASONEVALUE devuelve FALSE (ya que más de un valor filtra la columna), la
primera función IF devolverá un valor en blanco.

El uso de HASONEVALUE es una técnica defensiva. Es necesario porque es posible que


varios valores filtren la columna Country-Region. En este caso, la función VALUES
devuelve una tabla de varias filas. La comparación de una tabla de varias filas con un
valor escalar genera un error.

Recomendación
Se recomienda usar la función SELECTEDVALUE. Logra el mismo resultado que el patrón
que se describe en este artículo, pero de forma más eficaz y elegante.

Con la función SELECTEDVALUE, ahora se reescribe la definición de la medida de


ejemplo.
DAX

Australian Sales Tax =

IF(

SELECTEDVALUE(Customer[Country-Region]) = "Australia",

[Sales] * 0.10

 Sugerencia

Es posible pasar un valor de resultado alternativo a la función SELECTEDVALUE. Se


devuelve el valor de resultado alternativo cuando no se aplica ningún filtro (o se
aplican varios) a la columna.

Consulte también
Ruta de aprendizaje: Uso de DAX en Power BI Desktop
¿Tiene alguna pregunta? Pruebe a preguntar a la comunidad de Power BI
¿Sugerencias? Ideas para contribuir a mejorar Power BI

También podría gustarte