Importar y transformar datos
Conecta a fuentes de datos y limpia información.
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:
- Ve a Datos > Obtener datos > De archivo > De libro de Excel
- Navega y selecciona el archivo
- En el Navegador, selecciona la hoja o tabla a importar
- 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:
- Ve a Datos > Obtener datos > De archivo > De texto/CSV
- Selecciona el archivo .csv o .txt
- Configura las opciones de importacion
- 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:
- Ve a Datos > Obtener datos > De archivo > De carpeta
- Selecciona la carpeta que contiene los archivos
- Click en Combinar y transformar datos
- Selecciona el archivo de ejemplo y la hoja/tabla
- 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
- Clic derecho en el encabezado de columna
- Selecciona Quitar
Metodo 2: Seleccion multiple
- Ctrl + Clic en las columnas a eliminar
- Clic derecho > Quitar columnas
Metodo 3: Quitar otras columnas
- Selecciona las columnas que SI quieres conservar
- 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:
- Click en la flecha del encabezado de columna
- Desmarca los valores a excluir
- 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
- Click en el icono a la izquierda del nombre de columna
- Selecciona el nuevo tipo
Metodo 2: Clic derecho
- Clic derecho en el encabezado
- Cambiar tipo > Selecciona tipo
Metodo 3: Desde la cinta
- Selecciona columna(s)
- 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:
- Selecciona la columna
- Transformar > Dividir columna > Por delimitador
- 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
- Agregar columna > Columna personalizada
- 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
- Agregar columna > Columna de ejemplos
- Escribe ejemplos del resultado deseado
- 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:
- Selecciona la columna
- Transformar > Reemplazar valores
- 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
Tres fuentes principales: Excel, CSV y carpetas cubren el 90% de los casos
Combinar carpetas es poderoso: Consolida multiples archivos automaticamente
"Quitar otras columnas" es mas robusto: Sobrevive a cambios en los datos origen
Siempre valida los tipos de datos: Evita errores en calculos posteriores
Las columnas calculadas usan sintaxis M: Similar a formulas Excel pero con [NombreColumna]
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.