🟢 Introducción

La función VALUES() en DAX es una de las herramientas más poderosas —y a veces subestimadas— para obtener una lista única de valores de una columna o tabla. Es clave para cálculos personalizados, relaciones dinámicas, segmentación inteligente y lógica con tablas virtuales.
Si alguna vez has necesitado “obtener los clientes únicos”, “saber qué productos están presentes en un filtro” o “crear cálculos por categoría”, VALUES() es la función adecuada.

🧠 Qué es / para qué sirve

VALUES() devuelve:

  • Una tabla de valores únicos de una columna
  • O una tabla con todas las filas únicas si se usa con una tabla completa

Sirve para escenarios como:

  • Crear segmentaciones personalizadas
  • Detectar qué valores están filtrados actualmente
  • Generar cálculos basados en listas únicas de un contexto
  • Usar tablas virtuales dentro de SUMX, COUNTX, CALCULATE, etc.
  • Resolver problemas de relaciones inactivas

Ejemplo clásico:

VALUES(Product[Category])

Devuelve una tabla con las categorías distintas presentes en el contexto actual.

🧩 Sintaxis

VALUES(<columnName>)
VALUES(<tableName>)

<columnName> → devuelve una columna de valores únicos

<tableName> → devuelve filas únicas completas (menos común, pero poderoso)

💻 Ejemplos con código

🔹 Ejemplo 1 — Obtener valores únicos de una columna

CategoriasUnicas =
VALUES(Product[Category])

🔹 Ejemplo 2 — Contar cuántos valores únicos existen

NumeroCategorias =
COUNTROWS(VALUES(Product[Category]))

🔹 Ejemplo 3 — Usar VALUES dentro de CALCULATE

VentasPorCategoria =
CALCULATE(
    SUM(Sales[SalesAmount]),
    VALUES(Product[Category])
)

Esto asegura que la medida respete sólo las categorías filtradas actualmente.

🔹 Ejemplo 4 — Detectar si un filtro selecciona un solo valor

CategoriaSeleccionada =
IF(
    HASONEVALUE(Product[Category]),
    VALUES(Product[Category]),
    "Múltiples o ninguna"
)

Muy útil para tarjetas, títulos dinámicos y lógica condicional.

🔹 Ejemplo 5 — Resolver relaciones inactivas

VentasPorCliente =
CALCULATE(
    SUM(Sales[SalesAmount]),
    VALUES(Customer[CustomerID])
)

Forzamos la alineación de contextos a través de valores únicos.

🧱 Buenas prácticas

✅ Úsala para obtener listas únicas según el contexto → ideal para tablas virtuales
✅ Combínala con COUNTROWS para obtener cardinalidades
✅ Emplea VALUES dentro de CALCULATE para “respetar” el filtro actual
✅ Para columnas con alta cardinalidad, usa VALUES con cuidado (impacta rendimiento)
✅ Usa HASONEVALUE cuando esperes un único valor dentro de VALUES


⚠️ Errores comunes

🚫 Confundir VALUES() con DISTINCT(), aunque son similares:

  • VALUES respeta contexto
  • DISTINCT ignora algunos filtros
    🚫 Usar VALUES en tablas gigantes sin filtro previo
    🚫 Esperar que VALUES siempre devuelva un único valor (solo en ciertas situaciones)
    🚫 Usarlo fuera de contexto dentro de medidas sin entender que genera tablas virtuales

🔄 Variantes o alternativas

  • DISTINCT() → para lista única ignorando algunos filtros
  • ALLSELECTED() → para listas de valores según selección visual
  • SUMMARIZE() → para tablas más complejas
  • HASONEVALUE() → cuando se requiere un único valor de VALUES

📚 Recursos oficiales

Deja un comentario

¡Gracias por tu mensaje!

Me pondré en contacto tan rápido como pueda.

Descubre más desde Power Platform En Español

Suscríbete ahora para seguir leyendo y obtener acceso al archivo completo.

Seguir leyendo