Lección 26 de 37Power Query Introducción

Combinar tablas: Append y Merge

Une y relaciona datos de múltiples fuentes.

15 minutos

Una de las tareas mas comunes en el trabajo con datos es combinar informacion de multiples fuentes. Power Query ofrece dos operaciones fundamentales: Append (apilar verticalmente) y Merge (unir horizontalmente). En esta leccion dominaras ambas.

Dos Formas de Combinar Datos

Antes de profundizar, es crucial entender la diferencia:

APPEND (Apilar / Anexar)                 MERGE (Combinar / Unir)
Agrega filas debajo                      Agrega columnas al lado

┌─────────┐                              ┌─────────┐   ┌─────────┐
│ Tabla A │                              │ Tabla A │ + │ Tabla B │
├─────────┤                              │         │   │         │
│ Fila 1  │                              │ Col 1   │   │ Col X   │
│ Fila 2  │                              │ Col 2   │   │ Col Y   │
├─────────┤                              └─────────┘   └─────────┘
│ Tabla B │           ──►                        │
├─────────┤                              ┌───────┴───────────┐
│ Fila 3  │                              │ Col 1 | Col 2 | X │
│ Fila 4  │                              │ datos | datos | X │
└─────────┘                              └───────────────────┘

Caso: Consolidar datos                   Caso: Agregar informacion
mensuales de ventas                      de una tabla de productos
Operacion Uso Analogo Excel
Append Unir filas de tablas con misma estructura Copiar y pegar debajo
Merge Unir columnas basado en clave comun BUSCARV / XLOOKUP

Append: Apilar Tablas Verticalmente

Cuando usar Append

  • Consolidar reportes periodicos (diarios, semanales, mensuales)
  • Unir datos de diferentes sucursales con mismo formato
  • Combinar archivos de exportacion de un mismo sistema

Requisitos para Append

  1. Las tablas deben tener la misma estructura (columnas iguales)
  2. Los nombres de columna deben coincidir exactamente
  3. Los tipos de datos deben ser compatibles

Ejemplo Practico: Consolidar Ventas Trimestrales

Tienes tres tablas de ventas:

Tabla Enero:

Producto Cantidad Total
Laptop 5 6000
Mouse 50 1250

Tabla Febrero:

Producto Cantidad Total
Laptop 3 3600
Teclado 20 900

Tabla Marzo:

Producto Cantidad Total
Monitor 10 3500
Mouse 30 750

Paso a Paso: Append

Metodo 1: Desde la interfaz

  1. Selecciona la primera consulta (Enero) en el panel izquierdo
  2. Ve a Inicio > Anexar consultas > Anexar consultas como nueva
  3. En el dialogo:
    • Selecciona "Tres o mas tablas"
    • Agrega las tablas: Enero, Febrero, Marzo
  4. Click en Aceptar
┌─────────────────────────────────────────────────────────────┐
│                    ANEXAR CONSULTAS                          │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ○ Dos tablas                                               │
│  ● Tres o mas tablas                                        │
│                                                             │
│  Tablas disponibles:        Tablas a anexar:               │
│  ┌──────────────────┐       ┌──────────────────┐           │
│  │                  │  [>]  │ Enero            │           │
│  │                  │       │ Febrero          │           │
│  │                  │  [<]  │ Marzo            │           │
│  │                  │       │                  │           │
│  └──────────────────┘       └──────────────────┘           │
│                                                             │
│              [ Aceptar ]     [ Cancelar ]                  │
└─────────────────────────────────────────────────────────────┘

Metodo 2: Anexar a consulta existente

  1. Selecciona la consulta principal
  2. Inicio > Anexar consultas
  3. Selecciona la tabla a agregar

Resultado del Append:

Producto Cantidad Total
Laptop 5 6000
Mouse 50 1250
Laptop 3 3600
Teclado 20 900
Monitor 10 3500
Mouse 30 750

Codigo M para Append

let
    // Append de dos tablas
    Resultado = Table.Combine({Enero, Febrero})
in
    Resultado
let
    // Append de multiples tablas
    Resultado = Table.Combine({Enero, Febrero, Marzo, Abril})
in
    Resultado

Agregar Columna de Origen

Un patron comun es agregar una columna que indique de que tabla proviene cada fila:

let
    // Agregar columna de mes a cada tabla antes de combinar
    EneroConMes = Table.AddColumn(Enero, "Mes", each "Enero"),
    FebreroConMes = Table.AddColumn(Febrero, "Mes", each "Febrero"),
    MarzoConMes = Table.AddColumn(Marzo, "Mes", each "Marzo"),

    // Combinar
    Combinado = Table.Combine({EneroConMes, FebreroConMes, MarzoConMes})
in
    Combinado

Resultado con columna de origen:

Producto Cantidad Total Mes
Laptop 5 6000 Enero
Mouse 50 1250 Enero
Laptop 3 3600 Febrero
Teclado 20 900 Febrero
Monitor 10 3500 Marzo
Mouse 30 750 Marzo

Merge: Unir Tablas Horizontalmente

Cuando usar Merge

  • Agregar datos de una tabla maestra (productos, clientes, empleados)
  • Enriquecer datos transaccionales con informacion adicional
  • Reemplazar BUSCARV/XLOOKUP para grandes volumenes

Conceptos Clave: Joins

Merge funciona como un JOIN de bases de datos. Necesitas entender los tipos:

LEFT OUTER JOIN (Izquierda)
──────────────────────────────────
Incluye TODAS las filas de la tabla izquierda,
y las coincidencias de la derecha.

┌─────────┐   ┌─────────┐        ┌─────────────────┐
│    A    │ + │    B    │   =    │ A + coincide B  │
│  1,2,3  │   │  2,3,4  │        │ 1,2,3 (+2,3)    │
└─────────┘   └─────────┘        └─────────────────┘


RIGHT OUTER JOIN (Derecha)
──────────────────────────────────
Incluye TODAS las filas de la tabla derecha,
y las coincidencias de la izquierda.

┌─────────┐   ┌─────────┐        ┌─────────────────┐
│    A    │ + │    B    │   =    │ coincide A + B  │
│  1,2,3  │   │  2,3,4  │        │ (2,3) + 2,3,4   │
└─────────┘   └─────────┘        └─────────────────┘


INNER JOIN (Interna)
──────────────────────────────────
Incluye SOLO las filas que coinciden en ambas tablas.

┌─────────┐   ┌─────────┐        ┌─────────────────┐
│    A    │ + │    B    │   =    │ solo coinciden  │
│  1,2,3  │   │  2,3,4  │        │     2,3         │
└─────────┘   └─────────┘        └─────────────────┘


FULL OUTER JOIN (Externa completa)
──────────────────────────────────
Incluye TODAS las filas de ambas tablas.

┌─────────┐   ┌─────────┐        ┌─────────────────┐
│    A    │ + │    B    │   =    │    A + B        │
│  1,2,3  │   │  2,3,4  │        │   1,2,3,4       │
└─────────┘   └─────────┘        └─────────────────┘

Ejemplo Practico: Agregar Datos de Productos

Tabla Ventas:

ID_Producto Cantidad Fecha
P001 5 2026-01-15
P002 10 2026-01-16
P003 3 2026-01-17
P004 7 2026-01-18

Tabla Productos (Maestra):

ID_Producto Nombre Precio Categoria
P001 Laptop 1200 Electronica
P002 Mouse 25 Accesorios
P003 Teclado 45 Accesorios
P005 Monitor 350 Electronica

Nota: P004 esta en Ventas pero no en Productos. P005 esta en Productos pero no en Ventas.

Paso a Paso: Merge

  1. Selecciona la consulta Ventas (tabla principal)
  2. Ve a Inicio > Combinar consultas > Combinar consultas
  3. En el dialogo:
    • Tabla superior: Ventas (ya seleccionada)
    • Click en columna clave: ID_Producto
    • Tabla inferior: Selecciona Productos
    • Click en columna clave: ID_Producto
    • Selecciona tipo de combinacion
┌─────────────────────────────────────────────────────────────────┐
│                      COMBINAR CONSULTAS                          │
├─────────────────────────────────────────────────────────────────┤
│                                                                 │
│  Selecciona la primera tabla: Ventas                            │
│  ┌────────────────────────────────────────────────────────┐    │
│  │ ID_Producto ▼ │ Cantidad │ Fecha      │                │    │
│  │ P001          │ 5        │ 2026-01-15 │                │    │
│  │ P002          │ 10       │ 2026-01-16 │                │    │
│  └────────────────────────────────────────────────────────┘    │
│                                                                 │
│  Selecciona la segunda tabla: [Productos            ▼]         │
│  ┌────────────────────────────────────────────────────────┐    │
│  │ ID_Producto ▼ │ Nombre  │ Precio │ Categoria    │      │    │
│  │ P001          │ Laptop  │ 1200   │ Electronica  │      │    │
│  │ P002          │ Mouse   │ 25     │ Accesorios   │      │    │
│  └────────────────────────────────────────────────────────┘    │
│                                                                 │
│  Tipo de combinacion:                                           │
│  [Externa izquierda (todas de la primera, coinciden...)    ▼]  │
│                                                                 │
│  ✓ La seleccion coincide con 3 de 4 filas de la primera tabla │
│                                                                 │
│              [ Aceptar ]     [ Cancelar ]                      │
└─────────────────────────────────────────────────────────────────┘
  1. Click en Aceptar
  2. Aparece nueva columna con tabla anidada
  3. Click en el icono de expansion para seleccionar columnas
┌─────────────────────────────────────────────────────────────┐
│ Expandir columna "Productos"                                 │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  ○ Expandir                                                 │
│  ○ Agregar como nueva columna                               │
│                                                             │
│  ☑ Nombre                                                   │
│  ☑ Precio                                                   │
│  ☑ Categoria                                                │
│  ☐ ID_Producto     ←── Desmarcar, ya lo tenemos            │
│                                                             │
│  ☑ Usar nombre de columna original como prefijo            │
│                                                             │
│         [ Aceptar ]     [ Cancelar ]                       │
└─────────────────────────────────────────────────────────────┘

Resultados segun Tipo de Join

LEFT OUTER (Izquierda) - El mas usado:

ID_Producto Cantidad Fecha Nombre Precio Categoria
P001 5 2026-01-15 Laptop 1200 Electronica
P002 10 2026-01-16 Mouse 25 Accesorios
P003 3 2026-01-17 Teclado 45 Accesorios
P004 7 2026-01-18 null null null

P004 aparece con valores nulos porque no existe en Productos.

INNER (Interna):

ID_Producto Cantidad Fecha Nombre Precio Categoria
P001 5 2026-01-15 Laptop 1200 Electronica
P002 10 2026-01-16 Mouse 25 Accesorios
P003 3 2026-01-17 Teclado 45 Accesorios

Solo 3 filas: las que coinciden en ambas tablas.

FULL OUTER (Externa completa):

ID_Producto Cantidad Fecha Nombre Precio Categoria
P001 5 2026-01-15 Laptop 1200 Electronica
P002 10 2026-01-16 Mouse 25 Accesorios
P003 3 2026-01-17 Teclado 45 Accesorios
P004 7 2026-01-18 null null null
P005 null null Monitor 350 Electronica

Incluye P004 (sin producto) y P005 (sin venta).

Codigo M para Merge

let
    // Left Outer Join
    Origen = Table.NestedJoin(
        Ventas,                    // Tabla izquierda
        {"ID_Producto"},           // Columna(s) clave izquierda
        Productos,                 // Tabla derecha
        {"ID_Producto"},           // Columna(s) clave derecha
        "Productos",               // Nombre de columna resultado
        JoinKind.LeftOuter         // Tipo de join
    ),

    // Expandir columnas
    Expandido = Table.ExpandTableColumn(
        Origen,
        "Productos",
        {"Nombre", "Precio", "Categoria"},
        {"Nombre", "Precio", "Categoria"}
    )
in
    Expandido

Tipos de Join en M:

Tipo Codigo M
Izquierda JoinKind.LeftOuter
Derecha JoinKind.RightOuter
Interna JoinKind.Inner
Externa completa JoinKind.FullOuter
Izquierda anti JoinKind.LeftAnti
Derecha anti JoinKind.RightAnti

Caso Practico: Consolidar Datos Mensuales con Informacion de Sucursal

Escenario

Tienes:

  • Archivos de ventas mensuales (Enero, Febrero, Marzo)
  • Una tabla maestra de sucursales

Necesitas consolidar las ventas y agregar informacion de las sucursales.

Datos de Entrada

Tabla Enero:

ID_Sucursal Producto Cantidad
S01 Laptop 10
S02 Mouse 50
S01 Teclado 20

Tabla Febrero:

ID_Sucursal Producto Cantidad
S02 Laptop 8
S03 Monitor 15

Tabla Sucursales (Maestra):

ID_Sucursal Nombre Ciudad Region
S01 Centro CDMX Centro
S02 Norte Monterrey Norte
S03 Sur Merida Sureste

Solucion Paso a Paso

Paso 1: Agregar columna Mes a cada tabla

Para Enero:

EneroConMes = Table.AddColumn(Enero, "Mes", each "Enero")

Paso 2: Append de todas las tablas de ventas

VentasConsolidadas = Table.Combine({
    EneroConMes,
    FebreroConMes
})

Paso 3: Merge con tabla de sucursales

ConSucursales = Table.NestedJoin(
    VentasConsolidadas,
    {"ID_Sucursal"},
    Sucursales,
    {"ID_Sucursal"},
    "Sucursales",
    JoinKind.LeftOuter
)

Paso 4: Expandir informacion de sucursales

Expandido = Table.ExpandTableColumn(
    ConSucursales,
    "Sucursales",
    {"Nombre", "Ciudad", "Region"}
)

Resultado Final

ID_Sucursal Producto Cantidad Mes Nombre Ciudad Region
S01 Laptop 10 Enero Centro CDMX Centro
S02 Mouse 50 Enero Norte Monterrey Norte
S01 Teclado 20 Enero Centro CDMX Centro
S02 Laptop 8 Febrero Norte Monterrey Norte
S03 Monitor 15 Febrero Sur Merida Sureste

Codigo M Completo

let
    // Cargar tablas base
    Enero = Excel.CurrentWorkbook(){[Name="Enero"]}[Content],
    Febrero = Excel.CurrentWorkbook(){[Name="Febrero"]}[Content],
    Sucursales = Excel.CurrentWorkbook(){[Name="Sucursales"]}[Content],

    // Agregar columna Mes
    EneroConMes = Table.AddColumn(Enero, "Mes", each "Enero", type text),
    FebreroConMes = Table.AddColumn(Febrero, "Mes", each "Febrero", type text),

    // Consolidar ventas (Append)
    VentasConsolidadas = Table.Combine({EneroConMes, FebreroConMes}),

    // Unir con sucursales (Merge)
    ConSucursales = Table.NestedJoin(
        VentasConsolidadas,
        {"ID_Sucursal"},
        Sucursales,
        {"ID_Sucursal"},
        "DatosSucursal",
        JoinKind.LeftOuter
    ),

    // Expandir columnas de sucursal
    Resultado = Table.ExpandTableColumn(
        ConSucursales,
        "DatosSucursal",
        {"Nombre", "Ciudad", "Region"},
        {"Sucursal", "Ciudad", "Region"}
    )
in
    Resultado

Errores Comunes y Soluciones

Error 1: Columnas no coinciden en Append

Problema: Las tablas tienen nombres de columna diferentes.

Solucion: Renombrar columnas antes del Append:

TablaRenombrada = Table.RenameColumns(Tabla, {{"OldName", "NewName"}})

Error 2: Merge devuelve nulos inesperados

Problema: La columna clave tiene espacios o diferente formato.

Solucion: Limpiar y estandarizar antes del Merge:

Limpia = Table.TransformColumns(Tabla, {{"ID", Text.Trim}})
Mayusculas = Table.TransformColumns(Limpia, {{"ID", Text.Upper}})

Error 3: Duplicados despues del Merge

Problema: La tabla derecha tiene duplicados en la columna clave.

Solucion: Eliminar duplicados antes del Merge:

SinDuplicados = Table.Distinct(Tabla, {"ID_Columna"})

Puntos Clave de esta Leccion

  1. Append apila verticalmente: Usa cuando tienes tablas con misma estructura

  2. Merge une horizontalmente: Usa cuando necesitas agregar columnas de otra tabla

  3. Left Outer es el join mas comun: Conserva todas las filas de tu tabla principal

  4. Inner Join filtra automaticamente: Solo muestra coincidencias

  5. Siempre limpia las claves: Espacios y mayusculas causan problemas

  6. Agrega columna de origen en Append: Facilita identificar de donde viene cada fila

Proxima Leccion

En la siguiente leccion aprenderemos a automatizar la actualizacion de datos, crear flujos de trabajo de refresco y gestionar dependencias entre consultas.


Quiz de Comprension

Pregunta 1

Tienes ventas de 12 meses en archivos separados con el mismo formato. Que operacion usarias para crear un consolidado?

A) Merge con Left Outer Join B) Append de las 12 tablas C) Merge con Inner Join D) Crear 12 consultas separadas

Ver respuesta

Respuesta: B) Append de las 12 tablas

Append es la operacion correcta porque quieres apilar datos verticalmente (una tabla debajo de otra). Merge se usa para agregar columnas, no filas.

Pregunta 2

Tienes una tabla de Ventas con ID_Cliente y quieres agregar Nombre y Email de una tabla Clientes. Que tipo de Join conserva TODAS las ventas aunque algunos clientes no existan?

A) Inner Join B) Right Outer Join C) Left Outer Join D) Full Outer Join

Ver respuesta

Respuesta: C) Left Outer Join

Left Outer Join conserva todas las filas de la tabla izquierda (Ventas) y agrega las coincidencias de la tabla derecha (Clientes). Si un cliente no existe, las columnas agregadas mostraran null.

Pregunta 3

Despues de un Merge, aparece una columna con el icono de tabla. Que debes hacer para ver los datos?

A) Hacer doble clic en la columna B) Usar Expandir columna desde el icono de expansion C) Crear una nueva consulta D) Convertir la columna a texto

Ver respuesta

Respuesta: B) Usar Expandir columna desde el icono de expansion

Despues de un Merge, los datos relacionados aparecen como tablas anidadas. Debes hacer clic en el icono de expansion (flechas hacia afuera) en el encabezado de la columna para seleccionar que columnas expandir.

¿Completaste esta lección?

Marca esta lección como completada. Tu progreso se guardará en tu navegador.