Si alguna vez has utilizado Power Query o Power BI, te habrás percatado del botón de «Combinar» (Merge) que despliega una ventana como la siguiente:
Esto te permite unir 2 tablas (o consultas) y normalmente una de las preguntas que me hacen más seguido es: ¿Porque hay tantas uniones de diferentes tipos? ¿Son realmente necesarias?
Es por esto que me encuentro escribiendo este blog desde una perspectiva práctica para que tengas un mejor entendimiento de cuando se debe elegir cada una de ellas y el valor agregado que traen a la mesa.
En esta primera parte vamos a comenzar con la unión predeterminada, Left Outer Join (Externa izquierda).
Fuente de la Información
En esta ocasión, vamos a iniciar con 2 tablas:
- Nuestra Tabla de Ventas Diarias.
- Nuestra Tabla de Productos
Escenario 1: Estilo BUSCARV o (VLOOKUP)
Como puedes ver, nuestra tabla de ventas tiene la columna de ProductID, pero nos gustaría usar el Nombre del Producto envés del ID del Producto. ¿Cómo podemos hacer esto posible?
Puedes seguir las instrucciones descargando el archivo de muestra desde el siguiente botón:
Lo primero que tenemos que hacer es cargar ambas tablas en Power Query o Power BI. Para hacer esto, simplemente vamos a Data > Get & Transform Data > Get Data > From File > From Workbook:
seleccionamos el archivo que recién descargamos (con el nombre de Sample Data.xlsx). Es en este momento donde seleccionamos la opción de “Select multiple items” y escogemos ambas, la tabla de ventas y la tabla de productos.
Seguimos dándole en ‘Transformar Data’ o ‘Editar’ dependiendo de la versión de Power Query / Power BI que tengas instalada.
Esto debe cargar ambas tablas dentro del editor de Power Query de la siguiente manera:
Haciendo la fusión Left Outer Join
En este punto, estamos listos para seleccionar la opción «Combinar Consultas» o (Merge Queries) que ven en el centro superior de la imagen anterior. Asegúrate de seleccionar de la lista, la opción de combinar las consultas como una nueva (Merge Queries as New).
Ahora simplemente elige la tabla de ventas como la primera tabla para combinar. En esta tabla selecciona la columna de Product ID. Seguidamente, selecciona la tabla de productos como nuestra segunda tabla para combinar. En este caso, selecciona también la columna de Product ID tal cual describimos en las imágenes a continuación:
De manera predeterminada, vas a encontrar la opción de Combinación Externa Izquierda o (Left Outer), así que todo lo que debes hacer es apretar OK.
Esto nos va a traer el siguiente resultado:
Cada vez que combinemos dos consultas con diferentes factores de unión pasarán 2 cosas, pero solo una de ellas es obvia a simple vista:
- Una Nueva Columna es Creada – Puedes ver que esta columna utiliza el nombre de la tabla que llamé anteriormente (productos).
- La unión ocurre – cuando definimos ambas, la manera en que unimos y la “primera” junto con “segunda” tabla, nosotros estamos básicamente definiendo como nuestra nueva tabla se va a ver. En nuestro caso, EXTERNA IZQUIERDA (Left Outer) significa “Mantén todas las filas de la primera tabla” o, como la tabla indica, “todas las de la primera, que sean iguales a la segunda”.
Con esta nueva columna creada, que contiene valores, podemos expandir y elegir el Nombre del Producto que estamos buscando, de la siguiente manera:
Y el resultado se verá de la siguiente manera:
Esto es similar al resultado que pudiésemos obtener de un BUSCARV y esta es la comparación que usualmente tendemos a hacer, solo que esta opción es MUCHO más poderosa y va más allá de lo que pudieses realizar con un BUSCARV.
Escenario 2: Estilo Agrupar por o Group By
Vamos a continuar con pasos muy similares a los que hicimos previamente, pero envés de elegir la tabla de ventas como primera tabla, vamos a preguntarnos: ¿Qué pasa si mi primera tabla es la tabla de productos?
Los resultados se verán de la siguiente manera:
Ya que nuestra primera tabla es la tabla de productos y no la de ventas, nuestra base será entonces la Tabla de Productos y es por esto que solamente vemos 4 filas.
Ahora, envés de expandir los valores de la columna de ventas, hagamos una agregación:
Y con esto podremos ver el valor total por productoL
Esto es similar al resultado de lo que podrías obtener si quisieras hacer una operación de “Agrupar Por” usando el Nombre del Producto o simplemente el ID del Producto.
En Conclusión, es REALMENTE importante saber cual tabla eliges como “primera tabla” ya que puedes utilizar esto como una ventaja dependiendo de lo que realmente quieras conseguir.
Genial Miguel! el paso de la agregación es simplemente genial, muchas gracias. sls
Hola Miguel, cómo estás?
Hoy estábamos replicando una combinación como está (Left Outer Join) y al combinar las tablas me crecía mucho el tamaño de la tabla inicial.
En el caso que tenga registros duplicados para la clave en la tabla secundaria se me duplican en la tabla de la izquierda? cómo puedo evitarlo?
Hola! Depende!
Lo más sencillo sería remover duplicados en la tabla de la derecha.
Te recomiendo publicar tu escenario completo en el foro:
https://foro.poweredsolutions.co/
Saludos!
es posible hacer joins entre pasos de una misma consulta? o hay que defnirlo como 2 consultas independientes primero?
Sí es posible, pero no hay una interfaz que te ayude a hacerlo. Tendrías que crear el código tú mismo.