Curso
LOOKUPVALUE es una función DAX muy útil para buscar y recuperar valores en otras tablas.
Aunque no sustituye a unas buenas prácticas de modelado de datos en tus informes de Power BI, LOOKUPVALUE te da mucha flexibilidad al escribir expresiones complejas con múltiples condiciones, especialmente si quieres combinar LOOKUPVALUE con otras funciones DAX.
En este tutorial, veremos los fundamentos de la función LOOKUPVALUE, cómo funciona, cómo usarla (en especial en combinación con otras funciones DAX) y algunas consideraciones de rendimiento y buenas prácticas a seguir cuando uses LOOKUPVALUE en tus informes de Power BI.
LOOKUPVALUE en Power BI es muy similar a VLOOKUP en Microsoft Excel. Aun así, conviene familiarizarse con DAX y Power BI antes de ponerte con LOOKUPVALUE. Nuestro itinerario de habilidades Power BI fundamentals te pondrá al día rápido, y nuestra chuleta de DAX es una gran referencia para tener a mano mientras trabajas con funciones DAX.

Fundamentos de LOOKUPVALUE
Con la función LOOKUPVALUE podemos recuperar un único valor de una columna en otra tabla a partir de una o varias condiciones de búsqueda.
Esta es la sintaxis estándar:
LOOKUPVALUE (
<result_columnName>,
<search_columnName>,
<search_value>
[, <search2_columnName>, <search2_value>]…
[, <alternateResult>]
)
Si aún estás empezando con DAX y su sintaxis, echa un vistazo a nuestro curso Introduction to DAX o lee nuestro tutorial de DAX para principiantes. También puedes profundizar con nuestro curso Intermediate DAX.
Veamos los parámetros de LOOKUPVALUE en detalle:
- result_column: la columna de la que quieres recuperar el valor en la tabla de destino.
- search_column1: la columna en la tabla de destino que contiene el criterio que quieres hacer coincidir.
- search_value1: el valor que se buscará en search_column1. Puede ser un valor fijo, como un texto, el resultado de una expresión (como min o max), o una columna de la tabla de origen contra la que
LOOKUPVALUEdeba hacer la coincidencia. - [search_column2, search_value2, ...]: pares adicionales opcionales de columnas y valores de búsqueda. Puedes indicar varios pares para crear condiciones de búsqueda más complejas.
- [alternateResult]: resultado por defecto o alternativo. Si
LOOKUPVALUEno encuentra una coincidencia válida, devolverá este valor.
Cada vez que LOOKUPVALUE realiza una búsqueda en la tabla de destino, solo debería encontrar una única coincidencia. Si hay varias coincidencias posibles, tendrás que definir pares de búsqueda adicionales hasta que LOOKUPVALUE pueda encontrar una coincidencia única.
Para mayor claridad, veremos un ejemplo de esto en la siguiente sección.
Ejemplos sencillos de LOOKUPVALUE
Uso básico
Imagina que tienes una tabla de productos con las columnas ProductID y ProductName. Quieres encontrar el nombre del producto con ID 101.
Product_Name = LOOKUPVALUE(Products[ProductName], Products[ProductID], 101)
Varias condiciones de búsqueda
En este caso, supón que tienes una tabla Sales con las columnas ProductID, Region y Revenue. Quieres encontrar los ingresos de un producto concreto (ID 101) en una región determinada (East).
Product_Revenue = LOOKUPVALUE(Sales[Revenue], Sales[ProductID], 101, Sales[Region], "East")
Cómo gestionar valores en blanco
Cuando las condiciones de búsqueda no devuelven ninguna coincidencia, LOOKUPVALUE devuelve un valor en blanco.
Aquí tienes dos métodos para gestionar esos valores en blanco:
- Usar el parámetro de resultado alternativo de
LOOKUPVALUE. - Usar la función
COALESCEpara indicar un resultado alternativo siLOOKUPVALUEdevuelve un blanco.
Método 1: resultado alternativo
Puedes indicar un valor por defecto o un resultado alternativo en la función LOOKUPVALUE. Es un parámetro opcional que se coloca al final de la expresión LOOKUPVALUE.
Product_Name = LOOKUPVALUE(Products[ProductName], Products[ProductID], 101, "Not Found")
Método 2: COALESCE
También puedes usar la función COALESCE, que funciona casi igual que especificar un resultado alternativo en la función LOOKUPVALUE.
Sin embargo, según tu caso de uso y tu conjunto de datos, COALESCE puede ser más eficiente. Si la velocidad y el rendimiento son importantes para tu informe de Power BI, merece la pena valorar COALESCE.
Commission Rate =
COALESCE(
LOOKUPVALUE(
'CommissionRates'[Rate],
'CommissionRates'[SalespersonID], SELECTEDVALUE('Sales'[SalespersonID])
),
0.05
)
LOOKUPVALUE vs RELATED
Definir relaciones entre tus tablas siempre es una buena práctica de modelado de datos. Es más rápido que usar la función DAX LOOKUPVALUE y hace que tu modelo semántico sea más fácil de entender ahora y en el futuro.
Cuando creas relaciones entre tus tablas, puedes usar la función RELATED. En la mayoría de los casos, RELATED es más simple y directa que LOOKUPVALUE.
La función RELATED es ideal cuando necesitas traer un valor de otra tabla que tiene una relación directa con tu tabla de origen.
Por ejemplo, si quieres añadir el nombre del cliente a la tabla de ventas y existe una relación directa entre la tabla de ventas y la de clientes en CustomerID, puedes usar:
Customer Name = RELATED(Customers[CustomerName])
Ahora bien, `LOOKUPVALUE` es más flexible que `RELATED` y es la mejor opción cuando necesitas hacer búsquedas sin una relación directa existente en tu modelo o quieres buscar valores basados en criterios complejos o múltiples. Es versátil, pero no la uses en exceso porque puede impactar en el rendimiento.
Combinar LOOKUPVALUE con otras funciones DAX
Ya hemos visto cómo puedes combinar LOOKUPVALUE con COALESCE para dar un resultado alternativo cuando no se encuentra coincidencia.
Hay otras funciones DAX que combinan muy bien con LOOKUPVALUE, como CALCULATE y SWITCH.
Veremos ejemplos de ambas en esta sección.
LOOKUPVALUE y CALCULATE
Combinar la función LOOKUPVALUE con CALCULATE es útil cuando necesitas recuperar valores de otra tabla en función de un cálculo o un contexto de filtro que no es accesible directamente mediante una relación simple o una búsqueda directa.
Suele usarse para aplicar filtros o cambiar la granularidad de los cálculos. Al combinarla con LOOKUPVALUE, puedes ajustar dinámicamente los criterios de la búsqueda en función de los resultados de los cálculos.
Aquí tienes un ejemplo: supón que tienes una lista de productos y sus objetivos de ventas para un año concreto en una tabla. Para un ProductID dado, quieres obtener su objetivo de ventas para el año en curso.
Veamos cómo podrías hacerlo combinando las funciones CALCULATE y LOOKUPVALUE.
Product Sales Target =
VAR SpecificProductID = 123
VAR CurrentYear = YEAR(TODAY())
RETURN
CALCULATE(
LOOKUPVALUE(
SalesTargets[SalesTarget],
SalesTargets[ProductID],
SpecificProductID,
SalesTargets[Year],
CurrentYear
),
ALL(SalesTargets)
)
LOOKUPVALUE y SWITCH
Combinar la función LOOKUPVALUE con SWITCH funciona muy bien cuando necesitas buscar dinámicamente valores en otra tabla y devolver resultados distintos según varias coincidencias potenciales.
Si no conoces la función SWITCH, tenemos un tutorial que te guía paso a paso.
Aquí tienes un ejemplo: supón que tienes un conjunto de datos de ventas y una tabla de tarifas de comisión independiente. La comisión que recibe una persona se determina por su nivel de ventas, que no se almacena directamente pero puede calcularse a partir de su importe total de ventas.
Quieres crear una columna calculada en la tabla Sales que indique la tarifa de comisión de cada venta según el nivel de ventas.
Commission Rate =
VAR SalesAmount = Sales[TotalSalesAmount]
VAR SalesTier =
SWITCH(
TRUE(),
SalesAmount <= 500, "Low",
SalesAmount <= 2000, "Medium",
"High"
)
RETURN
LOOKUPVALUE(
CommissionRates[CommissionRate],
CommissionRates[SalesTier],
SalesTier
)
En esta expresión DAX usamos la función SWITCH para definir el nivel de ventas y luego empleamos ese resultado en LOOKUPVALUE para recuperar la tarifa de comisión correspondiente a ese nivel.
Consideraciones de rendimiento y buenas prácticas
1. Usa relaciones siempre que puedas
Es preferible usar relaciones directas entre tablas siempre que sea posible. Las relaciones están optimizadas para el rendimiento en Power BI y funciones como RELATED suelen ser mucho más eficientes que LOOKUPVALUE.
Este enfoque también aprovecha las optimizaciones internas de Power BI, algo clave si quieres minimizar los tiempos de carga de tus informes.
2. Minimiza su uso en columnas calculadas
Aunque LOOKUPVALUE puede usarse en columnas calculadas, en general es mejor no abusar. Las columnas calculadas se computan durante la actualización de datos y pueden ralentizar el proceso, especialmente en conjuntos de datos grandes.
Valora usar LOOKUPVALUE en medidas, donde los cálculos se realizan en tiempo de consulta y pueden beneficiarse de optimizaciones de consulta.
3. Gestiona con cuidado los resultados en blanco
LOOKUPVALUE devuelve un valor en blanco si no encuentra coincidencias. Como comentamos antes, es importante elegir el método adecuado para gestionarlo en tus informes. Puedes usar una función como COALESCE o el parámetro opcional de resultado alternativo de LOOKUPVALUE para proporcionar valores por defecto cuando LOOKUPVALUE devuelva un blanco.
4. Tipos de datos y distinción entre mayúsculas y minúsculas
Asegúrate de que el valor de búsqueda y la columna en la que buscas tengan tipos de datos compatibles, y ten en cuenta la sensibilidad a mayúsculas y minúsculas. Las discrepancias de tipos o de capitalización pueden generar resultados inesperados o errores en la función LOOKUPVALUE.
Conclusión
En resumen, LOOKUPVALUE te da muchas más opciones para buscar y recuperar valores de otras tablas. Es especialmente potente cuando la combinas con otras funciones DAX. Sin embargo, no sustituye a un buen modelado de datos, y se recomienda que primero intentes definir relaciones entre tablas en tus informes de Power BI.
Si estás pensando en orientar tu carrera profesional hacia desarrollador/a de Power BI, echa un vistazo a nuestra guía paso a paso para convertirte en Power BI developer. Te animamos a seguir aprendiendo Power BI explorando nuestro itinerario profesional completo Data Analyst in Power BI, que te enseñará todo lo necesario para empezar a usar Power BI en la práctica.

