Dominando LOOKUPVALUE en Power BI: Nuestro mayor aliado para un análisis eficiente
Desde que se creó Excel junto con otras herramientas de análisis de datos, ha existido la necesidad recurrente entre sus usuarios de poder relacionar tablas a través de campos similares o relacionados que permitan el cruce de información y la movilidad de los datos de una tabla a otra.
En Excel, por ejemplo, tenemos la reconocida y utilizada función BUSCARV o VLOOKUP. Esta función permite realizar búsquedas a nivel de fila y extraer datos específicos de una tabla que comparte alguna de sus columnas con otra tabla. Para esto, lo que hace es buscar aquellos registros coincidentes entre ambas tablas y lleva los valores que necesitas a la tabla desde donde estas llamando la función.
En Power BI tenemos una función bastante similar que también nos permite el cruce de información entre tablas relacionadas. Esta función se conoce como LOOKUPVALUE y en este artículo veremos su función y cómo operar con ella.
¿Cómo utilizamos VLOOKUP en Power BI?
La función LOOKUPVALUE en Power BI, al igual que la función VLOOKUP en Excel, permite la búsqueda de un valor específico gracias a la comparación de dos campos similares pertenecientes a tablas distintas, lo que nos permite extraer información relevante que no puede estar contenida en la tabla desde donde se invoca la función.
Componentes clave de LOOKUPVALUE
-
Valor de resultado
Valor que deseamos buscar y recuperar. Se refiere a la columna de la cual esperamos recuperar cierta información. Por ejemplo, si queremos encontrar el nombre de un producto en una tabla, este sería nuestro valor de resultado.
-
Columna de búsqueda
Es la columna en la que se encuentra el valor de resultado que esperamos recuperar. Esta columna pertenece a la tabla desde donde queremos extraer la información. Siguiendo con nuestro ejemplo, si el nombre de un producto se encuentra en una tabla llamada Productos, entonces 'Productos[Nombre_Producto]' sería nuestra columna de búsqueda.
-
Valor de coincidencia
Este es el campo que utilizaremos para realizar el cruce de información e idealmente deberá coincidir de manera parcial o completa con alguno de los campos de la tabla desde donde estamos llamando la función. Por ejemplo, el código que identifica un producto (ID Producto) deberá existir tanto en la tabla origen como en la tabla de destino y de esa forma podremos enlazar la búsqueda de una tabla a otra.
-
Columna de coincidencia
Corresponde a la columna donde iremos a cruzar el “valor de coincidencia”. Esta columna se encontrará en la tabla con la que estamos trabajando. En nuestro ejemplo, dado que el valor de referencia es el identificador del producto, esperamos encontrar idealmente el mismo identificador dentro de la tabla desde donde estamos invocando la función.
FUNCION = LOOKUPVALUE('Columna de Búsqueda', 'Valor de Coincidencia', 'Columna de Coincidencia')
Ejemplo ilustrativo
Para ilustrar el uso de LOOKUPVALUE, retomaremos nuestro ya conocido modelo de datos de mascotas. Si aún no has tenido la oportunidad de explorar este modelo, te invitamos a acceder al artículo donde explicamos su funcionamiento y, además, te proporcionamos un modelo de datos completamente accesible para que puedas aprender a implementar DAX y realizar pruebas sobre un conjunto de datos ficticio.
Ahora bien, para nuestro ejemplo, consideremos la existencia de dos tablas: Una tabla de Mascotas y otra de Razas. La tabla de Mascotas incluye un campo identificador de la raza que asigna un código único a cada raza (Codigo_Raza), mientras que la tabla Razas contiene el mismo identificador de la raza (Codigo_Raza) pero además cuenta con un campo (Descripción) que contiene el nombre de la raza a la que pertenece cada mascota.
Nuestro objetivo será añadir el campo (Descripción) a la tabla Mascotas. Dado que solamente tenemos el identificador en esta tabla, utilizaremos este campo (Codigo_Raza) como punto de conexión entre ambas tablas.
Paso a paso de BUSCARV en Power BI
-
1Revisar las tablasAsegurémonos de tener ambas tablas Mascotas y Razas con las columnas mencionadas anteriormente.
-
2Crear una nueva columna en la tabla MascotasEn Power BI, en la tabla Mascotas, crearemos una nueva columna calculada.
-
3Aplicar la fórmula LOOKUPVALUEUtilizaremos la siguiente fórmula DAX:
Nombre_Raza = LOOKUPVALUE('Razas'[Descripcion], 'Razas'[Codigo_Raza], 'Mascotas'[Codigo_Raza])
Esta fórmula nos ayudará a buscar en la tabla de Razas el campo que contiene el nombre de la raza (Descripcion) y cruzaremos los campos que contienen el identificador único de cada raza (Codigo_Raza), primero referenciando la tabla de Razas y luego la tabla de Mascotas.
Preguntas Frecuentes
Si LOOKUPVALUE no encuentra una coincidencia para los criterios especificados, devuelve un error. Para manejar estos casos, podemos usar funciones como IFERROR o COALESCE, que nos proporcionarán un valor alternativo o un mensaje de error personalizado.
Sí, efectivamente, LOOKUPVALUE permite buscar en múltiples columnas. Adicionalmente, podemos añadir pares adicionales de columnas de búsqueda y de coincidencia en la fórmula para refinar nuestra búsqueda, lo que amplía significativamente las posibilidades de análisis.
LOOKUPVALUE puede influir en el rendimiento en conjuntos de datos extremadamente grandes, ya que realiza una búsqueda cada vez que se evalúa la fórmula, sin embargo, este impacto no suele ser significativo. Aun así, es importante que sepamos darle un uso eficiente y considerar alternativas si notamos un impacto considerable en el rendimiento.
Absolutamente. LOOKUPVALUE puede combinarse con otras funciones DAX para crear cálculos más complejos. Por ejemplo, podremos combinarla con funciones condicionales o matemáticas para adaptar aún más nuestro análisis.
Aunque las relaciones de tabla son fundamentales para conectar tablas, LOOKUPVALUE es una función de búsqueda que se utiliza dentro de una fórmula para extraer un valor específico basado en una coincidencia. Esta función es particularmente útil en situaciones donde las relaciones de tabla no son fácilmente aplicables o donde se requiere un enfoque más personalizado.