Combinar tablas: Merge y Append
Une datos de múltiples fuentes en una sola tabla.
En el mundo real, los datos rara vez están en una sola tabla. Ventas en un archivo, clientes en otro, productos en una base de datos. Power Query ofrece dos técnicas poderosas para integrar estas fuentes: Merge (combinar) y Append (anexar).
Merge vs Append: ¿Cuándo usar cada uno?
| Técnica | Propósito | Analogía | Resultado |
|---|---|---|---|
| Merge | Unir columnas de diferentes tablas | VLOOKUP en Excel / JOIN en SQL | Agrega columnas a la derecha |
| Append | Apilar filas de tablas similares | Copiar y pegar debajo / UNION en SQL | Agrega filas abajo |
Visualización conceptual
MERGE (Combinar):
Tabla A Tabla B Resultado
ID | Nombre ID | Ciudad → ID | Nombre | Ciudad
---|-------- ---|-------- ---|--------|--------
1 | Juan 1 | Madrid 1 | Juan | Madrid
2 | Ana 2 | Barcelona 2 | Ana | Barcelona
APPEND (Anexar):
Tabla A Tabla B Resultado
Mes | Ventas Mes | Ventas → Mes | Ventas
----|------- ----|------- ----|-------
Ene | 1000 Mar | 1500 Ene | 1000
Feb | 1200 Abr | 1600 Feb | 1200
Mar | 1500
Abr | 1600
1. Merge (Combinar Consultas)
Merge une tablas basándose en una columna común (clave). Es equivalente a:
- VLOOKUP en Excel
- JOIN en SQL
- Relaciones entre tablas
Tipos de Merge (Tipos de Join)
Power Query ofrece 6 tipos de merge:
| Tipo | Descripción | Filas en resultado | Caso de uso |
|---|---|---|---|
| Left Outer | Todas de izquierda + coincidencias de derecha | Todas de tabla A | Agregar info opcional a tabla principal |
| Right Outer | Todas de derecha + coincidencias de izquierda | Todas de tabla B | Menos común, equivale a invertir tablas |
| Full Outer | Todas de ambas tablas | Todas de A + todas de B | Análisis de coincidencias y diferencias |
| Inner | Solo filas que coinciden | Solo coincidencias | Validar datos, análisis estricto |
| Left Anti | Solo de izquierda SIN coincidencia | Filas de A sin match | Encontrar faltantes |
| Right Anti | Solo de derecha SIN coincidencia | Filas de B sin match | Encontrar faltantes |
Escenario: Agregar información de clientes a ventas
Tabla Ventas:
VentaID | ClienteID | Monto
--------|-----------|-------
1001 | C01 | 1500
1002 | C02 | 2300
1003 | C01 | 800
Tabla Clientes:
ClienteID | Nombre | Ciudad
----------|-------------|----------
C01 | Juan Pérez | Madrid
C02 | Ana López | Barcelona
C03 | Luis Gómez | Valencia
Objetivo: Agregar Nombre y Ciudad a cada venta.
Paso a paso: Left Outer Join
Preparar tablas
- Asegúrate de tener ambas tablas cargadas en Power Query
- Identifica la columna común:
ClienteID
Iniciar Merge
- Selecciona la tabla Ventas (tabla principal)
- Ve a Inicio > Combinar consultas > Combinar consultas
- O bien, Inicio > Combinar consultas > Combinar consultas como nueva (crea una tercera consulta)
Configurar coincidencia
- Primera tabla: Ventas (ya seleccionada)
- Haz clic en la columna ClienteID en la vista previa (se resalta)
- Segunda tabla: Desplegable > Selecciona Clientes
- Haz clic en la columna ClienteID en la vista previa de Clientes
- Tipo de combinación: Left Outer (todas las filas de la primera, coincidencias de la segunda)
Verificar privacidad (si aparece)
- Si es la primera vez, puede aparecer un diálogo de privacidad
- Selecciona niveles de privacidad apropiados o marca "Omitir comprobación"
Expandir columnas
- Aparece una nueva columna "Clientes" con valor [Table]
- Haz clic en el icono de expansión (dos flechas opuestas) en el encabezado
- Desmarca "ClienteID" (ya lo tienes)
- Desmarca "Usar el nombre de la columna original como prefijo" (opcional)
- Selecciona: Nombre, Ciudad
- Aceptar
Resultado final
VentaID | ClienteID | Monto | Nombre | Ciudad
--------|-----------|-------|-------------|----------
1001 | C01 | 1500 | Juan Pérez | Madrid
1002 | C02 | 2300 | Ana López | Barcelona
1003 | C01 | 800 | Juan Pérez | Madrid
Código M generado:
= Table.NestedJoin(
#"Ventas",
{"ClienteID"},
Clientes,
{"ClienteID"},
"Clientes",
JoinKind.LeftOuter
)
Expandir columnas:
= Table.ExpandTableColumn(
#"Consultas combinadas",
"Clientes",
{"Nombre", "Ciudad"},
{"Nombre", "Ciudad"}
)
Casos especiales de Merge
Inner Join: Solo coincidencias
Cuándo usar: Cuando SOLO quieres ventas de clientes que existen en tu catálogo.
Configuración: Tipo de combinación = Inner
Resultado:
- Si una venta tiene ClienteID no existente en Clientes, se elimina
- Solo filas con coincidencia en ambas tablas
Código M:
JoinKind.Inner
Full Outer: Todas las filas
Cuándo usar: Análisis de completitud, encontrar discrepancias.
Resultado:
- Todas las ventas (tengan o no cliente)
- Todos los clientes (hayan comprado o no)
- Valores
nulldonde no hay coincidencia
Ejemplo práctico:
VentaID | ClienteID | Monto | Nombre | Ciudad
--------|-----------|-------|-------------|----------
1001 | C01 | 1500 | Juan Pérez | Madrid
1002 | C02 | 2300 | Ana López | Barcelona
1003 | C01 | 800 | Juan Pérez | Madrid
null | C03 | null | Luis Gómez | Valencia
Luis Gómez aparece aunque no haya comprado (útil para encontrar clientes inactivos).
Anti Join: Encontrar faltantes
Left Anti: Filas de tabla A sin coincidencia en B
Caso de uso: Ventas con ClienteID inválido
- Tabla A: Ventas
- Tabla B: Clientes
- Resultado: Ventas de clientes no registrados
Configuración: Tipo de combinación = Left Anti
No expandes la columna (viene vacía de todas formas)
Código M:
JoinKind.LeftAnti
Right Anti: Filas de tabla B sin coincidencia en A
Caso de uso: Clientes que nunca han comprado
- Tabla A: Ventas
- Tabla B: Clientes
- Resultado: Clientes sin ventas
Merge con múltiples columnas
A veces la relación requiere más de una columna:
Escenario: Ventas por Sucursal y Fecha
Tabla Ventas Tabla Metas
Sucursal | Fecha Sucursal | Fecha | Meta
---------|-------- ---------|-------- |------
Madrid | 2026-01 Madrid | 2026-01 | 50000
Madrid | 2026-02 Madrid | 2026-02 | 55000
Combinar con múltiples claves:
- En el diálogo de Merge, mantén presionado Ctrl
- Haz clic en Sucursal y luego en Fecha (en Ventas)
- Haz clic en Sucursal y luego en Fecha (en Metas)
- Ambas columnas deben coincidir para hacer match
Código M:
= Table.NestedJoin(
Ventas,
{"Sucursal", "Fecha"},
Metas,
{"Sucursal", "Fecha"},
"Metas",
JoinKind.LeftOuter
)
Errores comunes en Merge
| Error | Causa | Solución |
|---|---|---|
| Multiplicación de filas | Varios registros coinciden | Verificar unicidad en tabla derecha |
| Columna [Table] vacía | No hay coincidencias | Revisar tipos de datos, espacios extra |
| Rendimiento lento | Merge rompe Query Folding | Intentar hacer join en origen SQL |
| Valores null inesperados | Tipo de join incorrecto | Verificar si necesitas Left/Inner/Full |
2. Append (Anexar Consultas)
Append apila tablas verticalmente. Las tablas deben tener columnas similares (o al menos algunas en común).
Cuándo usar Append
- Combinar ventas de múltiples meses en archivos separados
- Unir datos de diferentes sucursales con la misma estructura
- Consolidar exportaciones históricas
- Integrar datos de múltiples hojas de Excel similares
Escenario: Consolidar ventas mensuales
Ventas_Enero.xlsx:
Fecha | Producto | Monto
------------|----------|-------
2026-01-05 | Laptop | 1200
2026-01-15 | Mouse | 25
Ventas_Febrero.xlsx:
Fecha | Producto | Monto
------------|----------|-------
2026-02-03 | Teclado | 80
2026-02-20 | Monitor | 350
Objetivo: Una sola tabla con todas las ventas.
Paso a paso: Append básico
Cargar ambas tablas
- Importa Ventas_Enero
- Importa Ventas_Febrero
- Ambas deben estar en el panel de Consultas
Iniciar Append
- Selecciona la primera tabla: Ventas_Enero
- Ve a Inicio > Anexar consultas > Anexar consultas
- O bien, Anexar consultas como nueva (recomendado para conservar originales)
Configurar anexado
- Aparece diálogo con opciones:
- Dos tablas: Para combinar solo dos
- Tres o más tablas: Para múltiples tablas
- Selecciona Dos tablas
- Segunda tabla: Ventas_Febrero
- Aceptar
- Aparece diálogo con opciones:
Resultado
Fecha | Producto | Monto
------------|----------|-------
2026-01-05 | Laptop | 1200
2026-01-15 | Mouse | 25
2026-02-03 | Teclado | 80
2026-02-20 | Monitor | 350
Código M:
= Table.Combine({Ventas_Enero, Ventas_Febrero})
Append de múltiples tablas
Para consolidar 3 o más tablas:
- Inicio > Anexar consultas > Anexar consultas como nueva
- Selecciona Tres o más tablas
- En "Tablas disponibles", selecciona las tablas y haz clic en Agregar >
- Se mueven a "Tablas para anexar"
- Puedes reordenarlas arrastrando
- Aceptar
Código M:
= Table.Combine({
Ventas_Enero,
Ventas_Febrero,
Ventas_Marzo,
Ventas_Abril
})
Append con columnas diferentes
¿Qué pasa si las tablas no tienen exactamente las mismas columnas?
Tabla A:
Fecha | Producto | Monto
Tabla B:
Fecha | Producto | Monto | Vendedor
Resultado del Append:
Fecha | Producto | Monto | Vendedor
------------|----------|-------|----------
2026-01-05 | Laptop | 1200 | null
2026-01-15 | Mouse | 25 | null
2026-02-03 | Teclado | 80 | Ana López
Power Query crea una columna por cada columna única en todas las tablas. Donde no existe el valor, coloca null.
Buena práctica: Estandariza columnas antes de hacer Append. Si Tabla A usa "Precio" y Tabla B usa "Monto", renombra una de ellas para que coincidan.
Técnica avanzada: Append dinámico con carpetas
Escenario: Tienes una carpeta con 50 archivos Excel de ventas mensuales. Cada mes se agrega un archivo nuevo.
Solución: Conectar a la carpeta completa
- Inicio > Obtener datos > Carpeta
- Selecciona la carpeta con los archivos
- Aceptar
- Power Query muestra lista de archivos
- Haz clic en Combinar > Combinar y transformar datos
- Selecciona tabla/hoja a consolidar
- Aceptar
Resultado: Tabla consolidada de todos los archivos
Ventaja mágica: Cuando agregues un nuevo archivo a la carpeta y refresques los datos, ¡se incluye automáticamente!
Código M (simplificado):
let
Origen = Folder.Files("C:\Ventas\"),
FiltrarExcel = Table.SelectRows(Origen, each Text.EndsWith([Name], ".xlsx")),
ConsolidarArchivos = Table.Combine(FiltrarExcel[Content])
in
ConsolidarArchivos
3. Casos de Uso Prácticos
Caso 1: Enriquecer ventas con datos de producto
Problema: Tienes VentaID, ProductoID y Monto. Necesitas agregar Categoría y Precio de lista.
Solución:
- Merge de Ventas con Productos (Left Outer)
- Columna clave: ProductoID
- Expandir: Categoría, PrecioLista
Beneficio: Ahora puedes analizar ventas por categoría sin alterar la tabla original.
Caso 2: Consolidar sucursales
Problema: Cada sucursal exporta su propio archivo Excel mensual.
Solución:
- Crear carpeta "Ventas_Sucursales"
- Conectar a carpeta en Power Query
- Combinar archivos automáticamente
- Agregar columna calculada "Sucursal" extrayendo de nombre de archivo
Beneficio: Actualización automática cada mes, sin editar código.
Caso 3: Análisis de clientes activos vs inactivos
Problema: Identificar clientes registrados que nunca han comprado.
Solución:
- Merge de Clientes con Ventas (Right Anti)
- Columna clave: ClienteID
- Resultado: Clientes sin ventas
Acción: Campaña de reactivación dirigida.
Caso 4: Validar integridad de datos
Problema: Verificar si hay ventas con ProductoID no existente en catálogo.
Solución:
- Merge de Ventas con Productos (Left Anti)
- Columna clave: ProductoID
- Resultado: Ventas huérfanas
Acción: Corregir errores de captura o agregar productos faltantes.
4. Merge vs Relaciones en Power BI
Pregunta común: ¿Cuándo usar Merge en Power Query vs Relaciones en el modelo de datos?
| Criterio | Merge en Power Query | Relaciones en modelo |
|---|---|---|
| Performance | Consume más memoria | Más eficiente |
| Flexibilidad | Fijo al refrescar | Dinámico en reportes |
| Uso | Cuando necesitas columnas físicas | Para cálculos DAX |
| Complejidad | Tabla más ancha | Modelo normalizado |
Regla general:
- Usa Relaciones siempre que sea posible (es la forma correcta en Power BI)
- Usa Merge solo cuando:
- No puedes crear relación (datos no normalizados)
- Necesitas la columna físicamente para transformaciones posteriores
- La tabla derecha es muy pequeña (tabla de parámetros)
5. Optimización y Mejores Prácticas
Para Merge
✅ Haz Merge temprano si mantiene Query Folding ✅ Verifica tipos de datos de columnas clave (texto con texto, número con número) ✅ Elimina espacios en columnas de texto antes de combinar ✅ Usa Inner Join cuando sea posible (filtra más datos, mejor rendimiento) ✅ Expande solo columnas necesarias (no todas por defecto)
❌ Evita Merge en columnas sin índice en bases de datos ❌ No uses Full Outer a menos que realmente lo necesites (duplica filas) ❌ No hagas Merge de tablas gigantes sin filtrar antes
Para Append
✅ Estandariza nombres de columnas antes de anexar ✅ Filtra datos innecesarios antes de consolidar (reduce volumen) ✅ Usa Append dinámico con carpetas para escalabilidad ✅ Agrega columna de origen para rastrear de qué archivo vino cada fila ✅ Documenta el orden de anexado si importa
❌ No anexes tablas con estructuras muy diferentes ❌ No olvides limpiar datos antes de consolidar (basura in = basura out)
Columna de origen en Append dinámico
Cuando usas Append de carpeta, agrega columna con nombre de archivo:
= Table.AddColumn(#"Archivos expandidos", "Origen", each [Source.Name])
Útil para auditoría y filtrado posterior.
Puntos Clave de esta Lección
- Merge agrega columnas, Append agrega filas - Merge para relacionar tablas, Append para consolidar
- Left Outer es el tipo de join más común - Mantiene todas las filas de la tabla principal
- Inner Join filtra datos - Solo coincidencias, útil para validación
- Anti Join encuentra faltantes - Perfecto para análisis de integridad
- Append funciona con columnas diferentes - Crea todas las columnas únicas, rellena nulls
- Append dinámico de carpetas escala - Actualización automática al agregar archivos
- Prefiere relaciones sobre Merge - Más eficiente en Power BI, usa Merge solo cuando sea necesario
- Estandariza antes de combinar - Tipos de datos, nombres de columnas, limpieza
Verificación de Conocimientos
Pregunta 1
Tienes tabla Ventas (10,000 filas) y tabla Clientes (500 filas). Quieres agregar Nombre y Ciudad a cada venta. ¿Qué tipo de Merge debes usar?
A) Inner Join B) Left Outer Join (Ventas como izquierda) C) Right Outer Join D) Full Outer Join
Ver respuesta
Respuesta: B) Left Outer Join (Ventas como izquierda)
Quieres conservar TODAS las ventas (tabla izquierda) y agregar información de clientes donde haya coincidencia. Left Outer garantiza que no pierdes ninguna venta. Inner eliminaría ventas sin cliente válido, Full Outer agregaría filas de clientes sin ventas (innecesario).
Pregunta 2
Tienes 12 archivos Excel en una carpeta (uno por mes). ¿Cuál es la mejor forma de consolidarlos?
A) Importar cada archivo y hacer 11 Append manuales B) Conectar a Carpeta y usar Combinar archivos C) Copiar y pegar todos en un solo Excel y luego importar D) Hacer Merge de los 12 archivos
Ver respuesta
Respuesta: B) Conectar a Carpeta y usar Combinar archivos
Esta es la única solución escalable y automática. Cuando agregues el archivo del mes 13, solo necesitas refrescar los datos. Las otras opciones requieren trabajo manual cada mes. Merge es incorrecto (combina columnas, no filas).
Pregunta 3
Después de hacer Merge, la nueva columna muestra "[Table]" y no se expande. ¿Cuál es la causa más probable?
A) Seleccionaste el tipo de join incorrecto B) Las columnas clave tienen tipos de datos diferentes C) La tabla derecha está vacía D) No hay suficiente memoria
Ver respuesta
Respuesta: B) Las columnas clave tienen tipos de datos diferentes
La causa más común de Merge sin coincidencias es que una columna es Texto y la otra Número (ej: "001" vs 1), o hay espacios extra en texto. Power Query requiere coincidencia exacta. Verifica tipos de datos y aplica Recortar a columnas de texto antes de Merge.
Próximos Pasos
En la siguiente lección dominarás columnas calculadas y transformaciones avanzadas en Power Query:
- Crear columnas personalizadas con lenguaje M
- Columnas condicionales con IF/ELSE visual
- Extraer información de fechas (año, mes, trimestre)
- Columnas de índice y ranking
- Funciones de texto avanzadas
Ya sabes conectar, limpiar y combinar datos. Ahora aprenderás a crear información nueva a partir de la existente.
Completaste esta leccion?
Marca esta leccion como completada. Tu progreso se guardara en tu navegador.