
De importar Excel "sucio" a un flujo de transformación limpio y reproducible
2 horas · 2 bloques de 45 min · nivel intermedio–avanzado
Ingeniero de Sistemas (colegiado) · Arquitecto de Inteligencia de Negocios & Cloud · +15 años en datos
🌐 blog.arquitecturabi.pe · 💼 Itera Process · 🎓 Docente New Horizons
Formación en minería de datos y estadística empresarial (UNMSM, con R) y estudios de Maestría en Gobierno de TI.
🎯 Por qué este enfoque: el curso está diseñado desde la mirada de un arquitecto de BI — primero los datos (ETL, modelo, BD), luego el visual. Así aprenden Power BI como lo usa la industria, no solo como herramienta de gráficos.
Arquitectura orientada a modelo + importación robusta de Excel
Get Data vs ImportPower Query — limpieza avanzada
try…otherwiseCada bloque cierra con práctica guiada sobre un Excel real.
Al terminar la sesión vas a poder…
Decidir qué transformar en Power Query y qué dejar para el modelo, con criterio de arquitectura.
Conectar a Excel multi-hoja evitando los errores clásicos (rangos, tipos, locale).
Limpiar datos sucios con pasos reproducibles, manejo de errores y profiling.
Un buen reporte empieza antes del primer gráfico: en cómo importas y modelas los datos. El 80% de los problemas de un dashboard nacen en la capa de datos.
Cómo fluye la data antes de que la veas en un visual
Todo reporte vive sobre tres capas. Saber en cuál estás parado evita el 90% de los líos.
Conecta, limpia y da forma. Lenguaje M. Aquí se resuelven formatos, errores, uniones y reestructuración.
Tablas, relaciones y medidas. Lenguaje DAX. Aquí se define el esquema estrella y los cálculos.
Gráficos, interacción y storytelling. Solo consume lo que las dos capas anteriores prepararon.
Cuanto antes en el pipeline, más barato y reproducible.
Parchar en la capa visual = deuda técnica que escala mal.
Regla práctica: resuelve cada problema en la capa más temprana posible.
Excel es flexible para el humano y caótico para la máquina. Esto es lo que vas a encontrar:
👉 Todos se resuelven en Power Query. La meta del Bloque B es atacarlos uno a uno.
| Opción | Qué hace | Cuándo usarla |
|---|---|---|
| Get Data > Excel Workbook | Conecta a las hojas/tablas y abre el Navigator para transformar. | Caso normal: quieres limpiar y modelar los datos del libro. |
| File > Import > Power Query… | Convierte un libro con Power Pivot / Power Query en un .pbix (one-time). | Migrar trabajo previo hecho en Excel a Power BI. |
⚠️ Limitaciones al importar libros: las jerarquías se omiten, las columnas binarias se eliminan y los rangos con nombre (vía Excel.CurrentWorkbook()) quedan como conexión externa. Para datos simples, usa siempre Get Data > Excel.
Tras Get Data, el Navigator inspecciona el libro y lista tablas y hojas. Marca el objeto para previsualizar.
El preview de la derecha te dice si las columnas y encabezados llegaron bien antes de cargar nada.
Creada con Ctrl+T en Excel. Es lo ideal: límites claros, encabezados estables, refresco confiable.
Funciona, pero frágil si alguien mueve celdas. Llega como conexión, ojo al refrescar.
Con cuidadoTrae todo el "ruido": filas vacías, títulos, totales. Requiere más limpieza.
Última opciónTip de campo: pídele a quien genera el Excel que use Tablas (Ctrl+T). Te ahorra horas de limpieza recurrente.
El botón Load carga la data tal cual. Casi nunca es lo que quieres con Excel.
Entrar por Transform Data te lleva al Power Query Editor, donde construyes el pipeline:
Conectar → Transform → modelar → visualizar
Si entras directo por "Load", tarde o temprano vuelves a Power Query a arreglar lo que no limpiaste. Mejor de una.
Get data, gestionar columnas/filas, group by, merge & append.
Tipos, formato de texto, pivot/unpivot, extraer, fechas.
Columna condicional, personalizada, por ejemplo, índices.
Una misma transformación suele estar en varios sitios (ribbon, click derecho, menú de columna). Usa la que te sea cómoda.
Cada acción que haces se guarda como un paso en Query Settings. Es código M generado automáticamente.
Renombra tus pasos: "Removed Columns1" no le dice nada a nadie en 3 meses.
Tipos, errores, profiling, group by, unpivot y lenguaje M
Una fecha o un decimal mal interpretado por el locale arruina todo el modelo aguas abajo.
// Cambiar tipo respetando el locale es-PE
= Table.TransformColumnTypes(
Origen,
{{"Fecha", type date}},
"es-PE" // dd/mm/aaaa
)
⚠️ Si ves muchos Error tras cambiar tipo, casi siempre es el locale.
No dejes que una celda mala tumbe toda la carga.
try … otherwise — control fino por celda// Columna segura: si falla, devuelve 0
= Table.AddColumn(Origen, "VentaNum", each
try Number.From([Venta])
otherwise 0
)
// Reemplazar errores en una columna
= Table.ReplaceErrorValues(
Origen, {{"Venta", 0}}
)
En View → Data Profiling activa las herramientas de calidad. Antes de transformar, mide.
Por defecto perfila 1.000 filas: cámbialo a "entire data set" en la barra de estado para datos críticos.
Resume filas a la granularidad que necesitas antes de cargar al modelo. Menos filas = modelo más liviano.
// Total de ventas por país
= Table.Group(Origen, {"Pais"},
{{"Ventas", each List.Sum([Venta]),
type number}}
)
Modo Basic para 1 agrupación; Advanced para varias columnas y agregaciones.
Sin escribir código: reglas tipo if/then desde Add Column. Ideal para categorizar.
// Generado por la UI
if [Venta] >= 1000 then "Alto"
else if [Venta] >= 500 then "Medio"
else "Bajo"
Para lógica más rica: concatenar, calcular, transformar texto.
// Clave de negocio + margen
= Text.Upper([Pais]) & "-" &
Text.From([Anio])
= ([Venta] - [Costo]) / [Venta]
Los Excel suelen tener meses en columnas. El modelo necesita formato largo (tidy).
| Producto | Ene | Feb | Mar |
|---|---|---|---|
| Uva | 10 | 12 | 9 |
| Palta | 5 | 7 | 8 |
| Producto | Mes | Venta |
|---|---|---|
| Uva | Ene | 10 |
| Uva | Feb | 12 |
| … | … | … |
// Selecciona Producto → click derecho → "Unpivot Other Columns"
= Table.UnpivotOtherColumns(Origen, {"Producto"}, "Mes", "Venta")
Cada query es un bloque let … in. Cada Applied Step es una línea.
let
Origen = Excel.Workbook(File),
Hoja = Origen{[Item="Ventas"]}[Data],
Encab = Table.PromoteHeaders(Hoja),
Tipos = Table.TransformColumnTypes(
Encab,{{"Venta",type number}})
in
Tipos
M es case-sensitive y funcional. No hace falta dominarlo, pero leerlo te hace 10x más rápido.
Una query limpia hoy es un refresco sin sorpresas mañana.
Toma el Excel de ventas (multi-hoja, sucio): conéctalo, combina las hojas con una función, limpia tipos y errores, y deja una tabla de hechos lista para modelar.
Power Query — combinar y reestructurar: Merge, Append, Reference y el lenguaje M con parámetros y funciones reutilizables.
¿Preguntas? — Siguiente: Combinar consultas y funciones M
Lo que no se te debe olvidar de esta sesión
try … otherwise🎯 Si te llevas una sola idea: el 80% de la calidad de un dashboard se decide en cómo importas y limpias los datos, no en el gráfico final.
Verifiquemos lo aprendido en esta sesión
¿Cuáles son las 3 capas de Power BI y qué responsabilidad tiene cada una?
Al importar el Excel, ¿por qué entras siempre por Transform Data y no por "Load"?
¿Por qué una fecha o un precio llega como texto y cómo lo resuelves con el locale?
¿Cómo manejas errores y nulos en Monto USD sin que se rompa la carga?
¿Para qué sirve el Unpivot y en qué hoja del dataset lo aplicarías?
Gracias al equipo de SunFruits por su tiempo y participación
Arquitecto de Inteligencia de Negocios & Cloud · Instructor
🌐 blog.arquitecturabi.pe
Nos vemos en la Sesión 2 — Combinar consultas y funciones M