Lección 25 de 37Power Query Introducción

Importar y transformar datos

Conecta a fuentes de datos y limpia información.

15 minutos

Ahora que conoces Power Query, es momento de ponerlo en accion. En esta leccion aprenderas a conectarte a las fuentes de datos mas comunes y aplicar las transformaciones que usaras en el 90% de tus proyectos.

Conectando a Fuentes de Datos

Power Query puede conectarse a docenas de fuentes diferentes. Nos enfocaremos en las tres mas utilizadas en el trabajo diario.

Fuente 1: Archivo Excel

La conexion mas comun. Ideal para importar datos de otros libros de Excel.

Paso a paso:

  1. Ve a Datos > Obtener datos > De archivo > De libro de Excel
  2. Navega y selecciona el archivo
  3. En el Navegador, selecciona la hoja o tabla a importar
  4. Click en Transformar datos (no en Cargar)
┌─────────────────────────────────────────────────────────────┐
│                      NAVEGADOR                               │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Opciones de visualizacion:  ☑ Seleccionar varios elementos │
│                                                             │
│  ▼ Ventas2025.xlsx                                          │
│     □ Enero                                                 │
│     ☑ Febrero         ←── Selecciona hoja(s)               │
│     □ Marzo                                                 │
│     □ Resumen                                               │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ Vista previa de: Febrero                             │   │
│  │                                                      │   │
│  │ Producto | Cantidad | Precio | Fecha                │   │
│  │ Laptop   | 5        | 1200   | 2026-02-01          │   │
│  │ Mouse    | 50       | 25     | 2026-02-01          │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│              [   Cargar   ] [ Transformar datos ]          │
└─────────────────────────────────────────────────────────────┘

Codigo M generado:

let
    Origen = Excel.Workbook(
        File.Contents("C:\Datos\Ventas2025.xlsx"),
        null,
        true
    ),
    Febrero_Sheet = Origen{[Item="Febrero",Kind="Sheet"]}[Data],
    #"Encabezados promovidos" = Table.PromoteHeaders(Febrero_Sheet)
in
    #"Encabezados promovidos"

Fuente 2: Archivo CSV o Texto

Los archivos CSV son el formato universal de intercambio de datos.

Paso a paso:

  1. Ve a Datos > Obtener datos > De archivo > De texto/CSV
  2. Selecciona el archivo .csv o .txt
  3. Configura las opciones de importacion
  4. Click en Transformar datos
┌─────────────────────────────────────────────────────────────┐
│                    IMPORTAR CSV                              │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Origen del archivo:    [1252: Europa Occidental      ▼]   │
│                                                             │
│  Delimitador:           [Coma                         ▼]   │
│                                                             │
│  Deteccion tipo datos:  [Basado en primeras 200 filas ▼]   │
│                                                             │
│  ┌─────────────────────────────────────────────────────┐   │
│  │ Vista previa                                         │   │
│  │                                                      │   │
│  │ ID    | Nombre   | Email            | Pais         │   │
│  │ 1001  | Ana Lopez| ana@email.com    | Mexico       │   │
│  │ 1002  | Juan Ruiz| juan@email.com   | Colombia     │   │
│  └─────────────────────────────────────────────────────┘   │
│                                                             │
│              [   Cargar   ] [ Transformar datos ]          │
└─────────────────────────────────────────────────────────────┘

Opciones importantes:

Opcion Descripcion
Origen del archivo Codificacion de caracteres (UTF-8, ANSI, etc.)
Delimitador Separador de columnas (coma, punto y coma, tabulador)
Deteccion de tipos Como Power Query infiere tipos de datos

Tip: Si ves caracteres extranos como "ñ" en lugar de "n", cambia el origen del archivo a UTF-8.

Codigo M generado:

let
    Origen = Csv.Document(
        File.Contents("C:\Datos\clientes.csv"),
        [Delimiter=",", Columns=4, Encoding=65001, QuoteStyle=QuoteStyle.None]
    ),
    #"Encabezados promovidos" = Table.PromoteHeaders(Origen)
in
    #"Encabezados promovidos"

Fuente 3: Carpeta de Archivos

La funcion mas poderosa: combinar automaticamente todos los archivos de una carpeta.

Caso de uso: Tienes una carpeta con 12 archivos de ventas mensuales y necesitas consolidarlos.

Paso a paso:

  1. Ve a Datos > Obtener datos > De archivo > De carpeta
  2. Selecciona la carpeta que contiene los archivos
  3. Click en Combinar y transformar datos
  4. Selecciona el archivo de ejemplo y la hoja/tabla
  5. Power Query creara automaticamente la consulta de combinacion
┌─────────────────────────────────────────────────────────────┐
│                    CONTENIDO DE CARPETA                      │
├─────────────────────────────────────────────────────────────┤
│                                                             │
│  Ruta: C:\Reportes\Ventas2025\                              │
│                                                             │
│  Nombre              Extension   Fecha modificacion         │
│  ──────────────────────────────────────────────────────    │
│  Ventas_Enero.xlsx   .xlsx       2026-01-31                │
│  Ventas_Febrero.xlsx .xlsx       2026-02-28                │
│  Ventas_Marzo.xlsx   .xlsx       2026-03-31                │
│  ...                                                        │
│                                                             │
│  [ Combinar ] [ Combinar y transformar datos ]             │
└─────────────────────────────────────────────────────────────┘

Resultado: Una tabla consolidada con todos los datos y una columna adicional indicando el archivo de origen.

Transformaciones Esenciales

Una vez conectado a tus datos, estas son las transformaciones que usaras constantemente.

Transformacion 1: Eliminar Columnas

Quita columnas que no necesitas para simplificar tus datos.

Metodo 1: Clic derecho

  1. Clic derecho en el encabezado de columna
  2. Selecciona Quitar

Metodo 2: Seleccion multiple

  1. Ctrl + Clic en las columnas a eliminar
  2. Clic derecho > Quitar columnas

Metodo 3: Quitar otras columnas

  1. Selecciona las columnas que SI quieres conservar
  2. Clic derecho > Quitar otras columnas

Tip profesional: "Quitar otras columnas" es mas robusto. Si el archivo origen agrega nuevas columnas, tu consulta seguira funcionando.

Codigo M:

// Quitar columnas especificas
Table.RemoveColumns(TablaAnterior, {"Columna1", "Columna2"})

// Quitar otras columnas (conservar solo las seleccionadas)
Table.SelectColumns(TablaAnterior, {"Producto", "Cantidad", "Precio"})

Transformacion 2: Filtrar Filas

Elimina filas que no cumplen ciertos criterios.

Paso a paso:

  1. Click en la flecha del encabezado de columna
  2. Desmarca los valores a excluir
  3. O usa Filtros de texto/numero para condiciones avanzadas
┌─────────────────────────────────────────┐
│ ▼ Categoria                              │
├─────────────────────────────────────────┤
│ Buscar...                    [________] │
│                                         │
│ ☑ (Seleccionar todo)                    │
│ ☑ Electronica                           │
│ ☑ Muebles                               │
│ ☐ null              ←── Excluir vacios  │
│ ☐ (en blanco)                           │
│                                         │
│ Filtros de texto ►                      │
│                                         │
│        [ Aceptar ]  [ Cancelar ]        │
└─────────────────────────────────────────┘

Filtros comunes:

Tipo Opciones
Texto Igual a, Comienza con, Contiene, No contiene
Numero Mayor que, Menor que, Entre, Igual a
Fecha Este ano, Mes anterior, Ultimos N dias
Valores Quitar filas vacias, Quitar errores

Codigo M:

// Filtrar donde Region es "Norte"
Table.SelectRows(TablaAnterior, each [Region] = "Norte")

// Filtrar donde Cantidad > 100
Table.SelectRows(TablaAnterior, each [Cantidad] > 100)

// Filtrar filas no nulas
Table.SelectRows(TablaAnterior, each [Producto] <> null)

Transformacion 3: Cambiar Tipos de Datos

Asegurar que cada columna tenga el tipo correcto es fundamental.

Tipos disponibles:

Icono Tipo Ejemplo
ABC Texto "Laptop", "Mexico"
123 Numero entero 100, -50, 0
1.2 Numero decimal 99.99, 3.14159
Calendario Fecha 2026-01-29
Reloj Hora 14:30:00
Calendario+Reloj Fecha/Hora 2026-01-29 14:30:00
V/F Verdadero/Falso TRUE, FALSE

Metodo 1: Clic en icono de tipo

  1. Click en el icono a la izquierda del nombre de columna
  2. Selecciona el nuevo tipo

Metodo 2: Clic derecho

  1. Clic derecho en el encabezado
  2. Cambiar tipo > Selecciona tipo

Metodo 3: Desde la cinta

  1. Selecciona columna(s)
  2. Transformar > Tipo de datos > Selecciona tipo

Codigo M:

Table.TransformColumnTypes(TablaAnterior, {
    {"Fecha", type date},
    {"Cantidad", Int64.Type},
    {"Precio", type number},
    {"Producto", type text}
})

Transformacion 4: Dividir Columnas

Separa una columna en multiples columnas.

Caso de uso: Tienes "Nombre Completo" y necesitas "Nombre" y "Apellido".

Paso a paso:

  1. Selecciona la columna
  2. Transformar > Dividir columna > Por delimitador
  3. Selecciona el delimitador (espacio, coma, guion, etc.)
ANTES:                          DESPUES:
┌──────────────────┐            ┌──────────┬──────────┐
│ Nombre_Completo  │            │ Nombre   │ Apellido │
├──────────────────┤    ──►     ├──────────┼──────────┤
│ Ana Lopez        │            │ Ana      │ Lopez    │
│ Juan Martinez    │            │ Juan     │ Martinez │
│ Maria Garcia     │            │ Maria    │ Garcia   │
└──────────────────┘            └──────────┴──────────┘

Opciones de division:

Opcion Descripcion
Por delimitador Espacio, coma, tabulador, personalizado
Por numero de caracteres Primeros 3, ultimos 5, etc.
Por posiciones Dividir en posiciones especificas
Por mayuscula a minuscula "NombreApellido" > "Nombre", "Apellido"

Codigo M:

// Dividir por espacio
Table.SplitColumn(
    TablaAnterior,
    "Nombre_Completo",
    Splitter.SplitTextByDelimiter(" "),
    {"Nombre", "Apellido"}
)

Transformacion 5: Agregar Columnas Calculadas

Crea nuevas columnas basadas en las existentes.

Metodo 1: Columna personalizada

  1. Agregar columna > Columna personalizada
  2. Escribe la formula

Ejemplo: Calcular Total

┌────────────────────────────────────────────────────┐
│           AGREGAR COLUMNA PERSONALIZADA             │
├────────────────────────────────────────────────────┤
│                                                    │
│  Nuevo nombre de columna:  [ Total              ] │
│                                                    │
│  Formula de columna personalizada:                 │
│  ┌──────────────────────────────────────────────┐ │
│  │ [Cantidad] * [Precio]                        │ │
│  └──────────────────────────────────────────────┘ │
│                                                    │
│  Columnas disponibles:                             │
│  ├── Producto                                      │
│  ├── Cantidad      ←── Doble clic para insertar   │
│  ├── Precio                                        │
│  └── Fecha                                         │
│                                                    │
│  Sin errores de sintaxis detectados.              │
│                                                    │
│         [ Aceptar ]     [ Cancelar ]              │
└────────────────────────────────────────────────────┘

Formulas comunes:

// Multiplicacion
[Cantidad] * [Precio]

// Concatenacion de texto
[Nombre] & " " & [Apellido]

// Condicional
if [Cantidad] > 100 then "Alto" else "Bajo"

// Extraer ano de fecha
Date.Year([Fecha])

// Texto en mayusculas
Text.Upper([Producto])

Metodo 2: Columnas de ejemplo

  1. Agregar columna > Columna de ejemplos
  2. Escribe ejemplos del resultado deseado
  3. Power Query infiere la formula automaticamente

Codigo M para columna calculada:

Table.AddColumn(TablaAnterior, "Total", each [Cantidad] * [Precio], type number)

Transformacion 6: Reemplazar Valores

Corrige inconsistencias en los datos.

Paso a paso:

  1. Selecciona la columna
  2. Transformar > Reemplazar valores
  3. Ingresa valor a buscar y nuevo valor

Caso de uso: Estandarizar nombres de paises

┌─────────────────────────────────────────────────┐
│              REEMPLAZAR VALORES                  │
├─────────────────────────────────────────────────┤
│                                                 │
│  Valor a buscar:      [ MX                   ] │
│                                                 │
│  Reemplazar con:      [ Mexico               ] │
│                                                 │
│  Opciones avanzadas ▼                          │
│  ☐ Coincidir celda completa                    │
│                                                 │
│         [ Aceptar ]     [ Cancelar ]           │
└─────────────────────────────────────────────────┘

Codigo M:

Table.ReplaceValue(
    TablaAnterior,
    "MX",
    "Mexico",
    Replacer.ReplaceText,
    {"Pais"}
)

Flujo de Trabajo Completo: Ejercicio Practico

Vamos a aplicar todo lo aprendido en un ejercicio integrador.

Escenario

Recibes un archivo CSV con datos de ventas que tiene varios problemas:

  • Columnas innecesarias
  • Filas con valores nulos
  • Fechas como texto
  • Nombres de producto inconsistentes

Datos de Entrada

ID,Producto,Cantidad,Precio,Fecha,Notas,Region
1,laptop,5,1200,15/01/2026,Venta corporativa,Norte
2,LAPTOP,3,1200,16/01/2026,,Norte
3,Mouse,50,25,17/01/2026,Promocion,Sur
4,mouse,30,25,18/01/2026,,Sur
5,,0,45,,Error,Este
6,Teclado,20,45,19/01/2026,,Oeste

Proceso de Transformacion

Paso 1: Importar CSV

  • Datos > Obtener datos > De texto/CSV
  • Seleccionar archivo
  • Transformar datos

Paso 2: Eliminar columna innecesaria

  • Clic derecho en "Notas" > Quitar

Paso 3: Filtrar filas problematicas

  • Clic en flecha de "Producto"
  • Desmarcar "(en blanco)" y "null"

Paso 4: Cambiar tipos de datos

  • Fecha: Cambiar de texto a tipo Fecha
  • Cantidad y Precio: Asegurar tipo Numero

Paso 5: Estandarizar nombres de producto

  • Seleccionar columna Producto
  • Transformar > Formato > MAYUSCULAS

Paso 6: Agregar columna Total

  • Agregar columna > Columna personalizada
  • Formula: [Cantidad] * [Precio]

Resultado Final

ID | Producto | Cantidad | Precio | Fecha      | Region | Total
---|----------|----------|--------|------------|--------|-------
1  | LAPTOP   | 5        | 1200   | 2026-01-15 | Norte  | 6000
2  | LAPTOP   | 3        | 1200   | 2026-01-16 | Norte  | 3600
3  | MOUSE    | 50       | 25     | 2026-01-17 | Sur    | 1250
4  | MOUSE    | 30       | 25     | 2026-01-18 | Sur    | 750
6  | TECLADO  | 20       | 45     | 2026-01-19 | Oeste  | 900

Codigo M Completo del Ejercicio

let
    // Importar CSV
    Origen = Csv.Document(
        File.Contents("C:\Datos\ventas.csv"),
        [Delimiter=",", Encoding=65001]
    ),

    // Promover encabezados
    Encabezados = Table.PromoteHeaders(Origen),

    // Eliminar columna Notas
    SinNotas = Table.RemoveColumns(Encabezados, {"Notas"}),

    // Filtrar filas sin producto
    Filtrado = Table.SelectRows(SinNotas, each [Producto] <> null and [Producto] <> ""),

    // Cambiar tipos
    TiposCambiados = Table.TransformColumnTypes(Filtrado, {
        {"Fecha", type date},
        {"Cantidad", Int64.Type},
        {"Precio", type number}
    }),

    // Estandarizar a mayusculas
    Mayusculas = Table.TransformColumns(TiposCambiados, {
        {"Producto", Text.Upper}
    }),

    // Agregar columna Total
    ConTotal = Table.AddColumn(Mayusculas, "Total", each [Cantidad] * [Precio], type number)
in
    ConTotal

Puntos Clave de esta Leccion

  1. Tres fuentes principales: Excel, CSV y carpetas cubren el 90% de los casos

  2. Combinar carpetas es poderoso: Consolida multiples archivos automaticamente

  3. "Quitar otras columnas" es mas robusto: Sobrevive a cambios en los datos origen

  4. Siempre valida los tipos de datos: Evita errores en calculos posteriores

  5. Las columnas calculadas usan sintaxis M: Similar a formulas Excel pero con [NombreColumna]

  6. Cada transformacion es un paso: Puedes volver atras, editar o eliminar cualquier paso

Proxima Leccion

En la siguiente leccion aprenderemos a combinar multiples tablas usando Append (apilar datos) y Merge (unir por columna clave), similar a BUSCARV pero mucho mas poderoso.


Quiz de Comprension

Pregunta 1

Cual opcion es MAS robusta para conservar solo las columnas Producto, Cantidad y Precio?

A) Eliminar las demas columnas una por una B) Seleccionar esas tres columnas y usar "Quitar otras columnas" C) Usar la funcion ELIMINAR en el menu D) Crear una nueva consulta con solo esas columnas

Ver respuesta

Respuesta: B) Seleccionar esas tres columnas y usar "Quitar otras columnas"

"Quitar otras columnas" es mas robusto porque si el archivo origen agrega nuevas columnas en el futuro, tu consulta seguira funcionando. Con "Eliminar columnas especificas", si se agregan nuevas columnas, estas aparecerian en tu resultado.

Pregunta 2

Que tipo de dato deberias asignar a una columna que contiene valores como "2026-01-15"?

A) Texto B) Numero entero C) Fecha D) Fecha/Hora

Ver respuesta

Respuesta: C) Fecha

Aunque "2026-01-15" parece texto, contiene solo informacion de fecha sin hora. El tipo "Fecha" es el mas apropiado, permitiendo operaciones de fecha como filtrar por mes o calcular diferencias entre fechas.

Pregunta 3

Cual es la sintaxis correcta para multiplicar las columnas Cantidad y Precio en una columna personalizada?

A) =Cantidad*Precio B) [Cantidad] * [Precio] C) CANTIDAD * PRECIO D) {Cantidad} x {Precio}

Ver respuesta

Respuesta: B) [Cantidad] * [Precio]

En Power Query (lenguaje M), los nombres de columna se encierran en corchetes []. El operador de multiplicacion es el asterisco (*). La formula correcta es [Cantidad] * [Precio].

¿Completaste esta lección?

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