DAX: Relaciones y Tablas
Gestión del Modelo de Datos y Navegación Relacional – Decil.com
El Poder de la Relacionalidad
A diferencia de Excel, donde solemos usar BUSCARV para traer datos a una tabla plana, en Power BI mantenemos los datos separados en Dimensiones (Catálogos) y Hechos (Transacciones). Las funciones de esta categoría permiten “viajar” a través de las relaciones del modelo para buscar atributos de un producto o realizar cálculos complejos que involucren varias tablas simultáneamente.
RELATED
Columna
Medida
Explicación Técnica
Permite traer un valor de una tabla relacionada siempre que estemos viajando desde el lado de “Muchos” (Ventas) hacia el lado de “Uno” (Productos o Clientes). Es el equivalente DAX del BUSCARV, pero mucho más eficiente, ya que utiliza la relación física ya establecida en el modelo en lugar de buscar en cada ejecución.
Requisito: Debe existir una relación activa entre las tablas. Si intentas usar RELATED hacia una tabla que no está vinculada, la función no reconocerá la columna.
Ejemplo Práctico: Atributos en Ventas
DAX – Columna Calculada
Tipo de Producto = RELATED(Producto[Tipo])
Contexto: Estando en la tabla de Ventas, esta columna trae el “Tipo” (ej: Vino Tinto, Destilado) desde la tabla de catálogo de productos para poder filtrar las transacciones directamente.
RELATEDTABLE
Tabla
Explicación Técnica
Realiza el viaje inverso a
RELATED. Viaja desde el lado “Uno” (Clientes) hacia el lado “Muchos” (Ventas). Como un cliente puede tener muchas ventas, esta función devuelve una tabla completa con todas las filas relacionadas. Por lo tanto, casi siempre se usa dentro de una función de agregación o iterador.
Ejemplo Práctico: Historial del Cliente
DAX – Columna en Tabla Clientes
Cantidad de Compras = COUNTROWS(RELATEDTABLE(Ventas))
Contexto: En la tabla de Clientes, esta fórmula cuenta cuántas filas de la tabla Ventas le pertenecen a cada RUT. Permite identificar rápidamente a los clientes más frecuentes.
USERELATIONSHIP
Medida
Explicación Técnica
En Power BI, entre dos tablas solo puede haber una relación “Activa”. Si tienes una fecha de Venta y una fecha de Envío, una de ellas estará inactiva (línea punteada).
USERELATIONSHIP permite activar esa relación específica solo para la duración de un cálculo dentro de un CALCULATE.
Ejemplo Práctico: Logística y Despachos
DAX – Medida con Relación Inactiva
Monto Despachado =
CALCULATE(
[Ingreso Total Bruto],
USERELATIONSHIP(Ventas[FechaEnvio], Calendario[Fecha])
)
Contexto: Por defecto, los reportes se filtran por la fecha en que se hizo el pedido. Esta medida permite ver el dinero que realmente salió de bodega (despacho) en un periodo determinado, activando la relación por “FechaEnvio”.
LOOKUPVALUE
Columna
Medida
Explicación Técnica
Busca un valor en una tabla sin necesidad de que exista una relación entre ellas. Es extremadamente útil para buscar valores en tablas de configuración, tablas de metas o indicadores económicos externos (como el valor de la UF o UTM) que no están vinculados directamente a tus transacciones.
Ejemplo Práctico: Indicadores Económicos
DAX – Búsqueda sin Relación
Valor UTM Mes =
LOOKUPVALUE(
Indicadores[Valor],
Indicadores[Mes], ‘Calendario'[MesNum],
Indicadores[Anio], ‘Calendario'[Anio]
)
Contexto: Busca en una tabla desconectada el valor de la UTM correspondiente al mes y año que se está analizando en el reporte.
SUMMARIZE
Tabla
Explicación Técnica
Crea una tabla resumen agrupando los datos por una o más columnas. Es muy similar a la cláusula
GROUP BY de SQL. Se utiliza principalmente para crear tablas calculadas intermedias o dentro de otras medidas para realizar cálculos sobre grupos de datos.
Ejemplo Práctico: Resumen Regional
DAX – Tabla Calculada
Tabla Resumen Ventas =
SUMMARIZE(
Ventas,
Geografia[Region],
“Total Ventas”, SUM(Ventas[Monto]),
“Cantidad Operaciones”, COUNTROWS(Ventas)
)
Contexto: Genera una nueva tabla que muestra una sola fila por cada Región de Chile, con su monto total vendido y su conteo de transacciones.
CALCULATETABLE
Tabla
Explicación Técnica
Es exactamente igual a
CALCULATE, pero en lugar de devolver un único valor (escalar), devuelve una tabla filtrada. Es esencial para alimentar a otras funciones que requieren tablas, como SUMX o TOPN, permitiéndoles trabajar solo con una parte de los datos.
Ejemplo Práctico: Filtro previo de Datos
DAX – Tabla Filtrada
Ventas de Vinos VIP =
CALCULATETABLE(
Ventas,
Producto[Tipo] = “Vino Tinto”,
Ventas[Monto] > 500000
)
TOPN
Tabla
Explicación Técnica
Devuelve las primeras N filas de una tabla según un criterio de ordenación. Es la base para crear rankings visuales o para cálculos que solo consideren a los “mejores” o “peores” de una categoría.
Ejemplo Práctico: Los 3 Mejores Clientes
DAX – Tabla de Mejores
Top 3 Clientes = TOPN(3, Clientes, [Ingreso Total Bruto], DESC)
Contexto: Genera una tabla con los 3 RUTs de clientes que más dinero han gastado en la empresa.
SELECTEDVALUE
Medida
Explicación Técnica
Captura el valor que el usuario ha seleccionado en un segmentador (Slicer). Si el usuario no ha seleccionado nada o ha seleccionado varios valores, la función devuelve un valor alternativo (por defecto en blanco). Es fundamental para crear títulos dinámicos o medidas que cambien según la selección.
Ejemplo Práctico: Título Dinámico
DAX – Captura de Selección
Titulo Reporte =
“Informe de Ventas: ” & SELECTEDVALUE(Geografia[Region], “Todas las Regiones”)
Contexto: Si el usuario filtra por “Región del Maule”, el título dirá “Informe de Ventas: Región del Maule”. Si no selecciona ninguna, dirá “Informe de Ventas: Todas las Regiones”.