SunFruits Exports
POWER BI · INTERMEDIO–AVANZADO
Programa Power BI para SunFruits Exports · Módulo 1 · Día 1

Sesión 1
Arquitectura del modelo
& Power Query

De importar Excel "sucio" a un flujo de transformación limpio y reproducible

Bloque A · Arquitectura + Importación Bloque B · Limpieza avanzada

2 horas · 2 bloques de 45 min · nivel intermedio–avanzado

Tu instructor

EB

Edwin Barrientos Retuerto

Ingeniero de Sistemas (colegiado) · Arquitecto de Inteligencia de Negocios & Cloud · +15 años en datos

🌐 blog.arquitecturabi.pe · 💼 Itera Process · 🎓 Docente New Horizons

Certificaciones

Microsoft Certified: Azure Data Fundamentals (DP-900) Azure AI Fundamentals (AI-900) Certified Data Management Practitioner Scrum Master Certified DevOps Essentials Professional Certified Professional DBA (Diplomado)

Formación en minería de datos y estadística empresarial (UNMSM, con R) y estudios de Maestría en Gobierno de TI.

Experiencia alineada al curso

Arquitecto de Inteligencia de Negocios — ONP · 2019–2022
Diseño de arquitectura de datos y procesos ETL para soluciones BI → exactamente la capa Power Query + Modelo.
Arquitecto Cloud — Itera Process · 2024–actual
Bases de datos en la nube, alta disponibilidad y DR → conexión de Power BI a orígenes corporativos.
Especialista en BD y Calidad TI — ONP · 2022–2023
Optimización de BD relacionales/no relacionales, SP y automatización → rendimiento del modelo.
Docente — New Horizons · 2024–actual
Capacitación corporativa en desarrollo y arquitectura de software.

🎯 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.

Mapa de la sesión

🅰 Bloque A — 45 min

Arquitectura orientada a modelo + importación robusta de Excel

  • Las 3 capas: Power Query → Modelo → Reporte
  • Excel como fuente: dónde se rompe todo
  • Get Data vs Import
  • El Navigator y la decisión Transform vs Load
  • Anatomía de Power Query y los Applied Steps

🅱 Bloque B — 45 min

Power Query — limpieza avanzada

  • Tipos de datos y locale (el bug #1)
  • Manejo de errores con try…otherwise
  • Data profiling: conoce tu data
  • Group By, columnas condicionales y Unpivot
  • Advanced Editor y nociones de lenguaje M

Cada bloque cierra con práctica guiada sobre un Excel real.

Objetivos de aprendizaje

Al terminar la sesión vas a poder…

Diseñar

Decidir qué transformar en Power Query y qué dejar para el modelo, con criterio de arquitectura.

Importar

Conectar a Excel multi-hoja evitando los errores clásicos (rangos, tipos, locale).

Transformar

Limpiar datos sucios con pasos reproducibles, manejo de errores y profiling.

💡 Idea fuerza de la sesión

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.

Bloque A · 45 min

Arquitectura del modelo
e importación de Excel

Cómo fluye la data antes de que la veas en un visual

Las 3 capas de Power BI

Todo reporte vive sobre tres capas. Saber en cuál estás parado evita el 90% de los líos.

1

Power Query (ETL)

Conecta, limpia y da forma. Lenguaje M. Aquí se resuelven formatos, errores, uniones y reestructuración.

2

Modelo de datos (VertiPaq)

Tablas, relaciones y medidas. Lenguaje DAX. Aquí se define el esquema estrella y los cálculos.

3

Reporte (Visuals)

Gráficos, interacción y storytelling. Solo consume lo que las dos capas anteriores prepararon.

La regla de oro

✔ Hazlo en Power Query

  • Quitar/renombrar columnas
  • Cambiar tipos de datos
  • Filtrar filas basura
  • Unir y combinar tablas
  • Reestructurar (unpivot, group by)

Cuanto antes en el pipeline, más barato y reproducible.

✘ Evita resolverlo en el visual

  • Concatenaciones "a mano" en el reporte
  • Medidas que parchan datos sucios
  • Columnas calculadas que deberían ser ETL

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 como fuente: los dolores típicos

Excel es flexible para el humano y caótico para la máquina. Esto es lo que vas a encontrar:

  • Celdas combinadas que rompen el grid
  • Encabezados en varias filas
  • Rangos con nombre vs tablas reales
  • Totales intercalados dentro de la data
  • Tipos mixtos en una misma columna
  • Fechas como texto (locale)
  • Datos "cruzados" (meses en columnas)
  • Hojas múltiples con mismo formato

👉 Todos se resuelven en Power Query. La meta del Bloque B es atacarlos uno a uno.

Dos formas de traer un Excel

OpciónQué haceCuándo usarla
Get Data > Excel WorkbookConecta 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.

Conectar a Excel — el Navigator

Tras Get Data, el Navigator inspecciona el libro y lista tablas y hojas. Marca el objeto para previsualizar.

  • ✔ Prefiere Tablas (ícono azul) sobre Hojas
  • ✔ Selecciona varias con los checkboxes
  • ✔ Pulsa Transform Data, no "Load"

El preview de la derecha te dice si las columnas y encabezados llegaron bien antes de cargar nada.

Power Query Navigator
Navigator: selección de tabla y vista previa · Microsoft Learn

Tablas vs Rangos vs Hojas

Tabla con nombre

Creada con Ctrl+T en Excel. Es lo ideal: límites claros, encabezados estables, refresco confiable.

Recomendado

Rango con nombre

Funciona, pero frágil si alguien mueve celdas. Llega como conexión, ojo al refrescar.

Con cuidado

Hoja completa

Trae todo el "ruido": filas vacías, títulos, totales. Requiere más limpieza.

Última opción

Tip de campo: pídele a quien genera el Excel que use Tablas (Ctrl+T). Te ahorra horas de limpieza recurrente.

"Transform Data", siempre

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:

  • Promover encabezados
  • Fijar tipos de datos correctos
  • Quitar columnas y filas basura
  • Documentar cada paso

Flujo mental

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.

Anatomía del Power Query Editor

Interfaz de Power Query con 5 componentes
1 Ribbon — transforms y acciones
2 Queries — todas tus consultas
3 Vista actual — preview de datos
4 Query Settings — Applied Steps
5 Status bar — filas, columnas, perfil
Los 5 componentes de la interfaz de Power Query · Microsoft Learn

El Ribbon: dónde vive todo

Ribbon de Power Query, pestaña Home

Home

Get data, gestionar columnas/filas, group by, merge & append.

Transform

Tipos, formato de texto, pivot/unpivot, extraer, fechas.

Add Column

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.

Applied Steps: tu historial reproducible

Cada acción que haces se guarda como un paso en Query Settings. Es código M generado automáticamente.

  • 📜 Es auditable: ves qué pasó y en qué orden
  • 🔁 Es reproducible: al refrescar, re-ejecuta todo
  • ✏️ Es editable: renombra pasos y documéntalos
  • ↕️ El orden importa: puedes reordenar e insertar

Renombra tus pasos: "Removed Columns1" no le dice nada a nadie en 3 meses.

Aplicar una transformación genera un Applied Step
Cada acción (ej. quitar columnas) = un paso aplicado · Microsoft Learn
Bloque B · 45 min

Power Query
Limpieza avanzada

Tipos, errores, profiling, group by, unpivot y lenguaje M

Tipos de datos y locale — el bug #1

Una fecha o un decimal mal interpretado por el locale arruina todo el modelo aguas abajo.

  • Fija el tipo explícitamente, no confíes en el autodetect
  • Usa "Using Locale…" para fechas/números de otro idioma
  • Pon el cambio de tipo al final que tenga sentido (evita re-castear)
// 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.

Manejo de errores en M

No dejes que una celda mala tumbe toda la carga.

Estrategias

  • Remove Errors — descarta filas con error
  • Replace Errors — pone un valor por defecto
  • try … otherwise — control fino por celda
  • Mantén una query de "errores" para auditar
// 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}}
)

Data Profiling: conoce tu data

En View → Data Profiling activa las herramientas de calidad. Antes de transformar, mide.

  • Column quality: % válido / error / vacío
  • Column distribution: valores distintos y únicos
  • Column profile: estadísticas y conteos

Por defecto perfila 1.000 filas: cámbialo a "entire data set" en la barra de estado para datos críticos.

Herramientas de Data Profiling en Power Query
Calidad, distribución y perfil de columna · Microsoft Learn

Group By — agregar en el ETL

Diálogo Group By de Power Query
Group by Country, Count rows · Microsoft Learn

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.

Columnas condicionales y personalizadas

Conditional Column (UI)

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"

Custom Column (M)

Para lógica más rica: concatenar, calcular, transformar texto.

// Clave de negocio + margen
= Text.Upper([Pais]) & "-" &
  Text.From([Anio])

= ([Venta] - [Costo]) / [Venta]

Unpivot — el arma secreta para Excel "cruzado"

Los Excel suelen tener meses en columnas. El modelo necesita formato largo (tidy).

Antes (ancho) — malo para BI

ProductoEneFebMar
Uva10129
Palta578

Después (largo) — ideal

ProductoMesVenta
UvaEne10
UvaFeb12
// Selecciona Producto → click derecho → "Unpivot Other Columns"
= Table.UnpivotOtherColumns(Origen, {"Producto"}, "Mes", "Venta")

Advanced Editor & lenguaje M

Advanced Editor con código M
View → Advanced Editor · Microsoft Learn

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.

Checklist de limpieza & buenas prácticas

En cada query

  • ✔ Promover encabezados
  • ✔ Fijar tipos de datos (con locale)
  • ✔ Quitar columnas que no se usan
  • ✔ Filtrar filas basura/totales
  • ✔ Revisar Column quality (0 errores)

Higiene del proyecto

  • ✔ Renombrar pasos con sentido
  • ✔ Agrupar queries en carpetas
  • ✔ Usar parámetros para rutas de archivo
  • ✔ Desactivar carga de queries staging
  • ✔ Documentar con descripciones

Una query limpia hoy es un refresco sin sorpresas mañana.

Sesión 1 · Cierre

Práctica guiada & próximos pasos

🛠 Taller de la sesión

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.

➡ Sesión 2

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

Resumen — puntos importantes

Lo que no se te debe olvidar de esta sesión

🅰 Arquitectura & Excel

  • 3 capas: Power Query → Modelo → Reporte
  • Regla de oro: limpia en la capa más temprana posible
  • Con Excel: usa Tablas (Ctrl+T) y entra siempre por Transform Data
  • Applied Steps = historial auditable y reproducible

🅱 Limpieza avanzada

  • Tipos + locale son el bug #1: fíjalos explícitamente
  • Controla errores con try … otherwise
  • Data profiling antes de transformar
  • Unpivot para datos "cruzados"; Group By para resumir

🎯 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.

Preguntas de repaso

Verifiquemos lo aprendido en esta sesión

1

¿Cuáles son las 3 capas de Power BI y qué responsabilidad tiene cada una?

2

Al importar el Excel, ¿por qué entras siempre por Transform Data y no por "Load"?

3

¿Por qué una fecha o un precio llega como texto y cómo lo resuelves con el locale?

4

¿Cómo manejas errores y nulos en Monto USD sin que se rompa la carga?

5

¿Para qué sirve el Unpivot y en qué hoja del dataset lo aplicarías?

Sun Fruits Exports · Programa Power BI

¡Gracias!

Gracias al equipo de SunFruits por su tiempo y participación

Edwin Barrientos Retuerto

Arquitecto de Inteligencia de Negocios & Cloud · Instructor

🌐 blog.arquitecturabi.pe

Nos vemos en la Sesión 2 — Combinar consultas y funciones M

1 / 28