Portafolio

Proyecto 04 · Reporteo ejecutivo

Reporteo de una red logística, de punta a punta

Una solución completa de analítica logística: modelo dimensional en PostgreSQL, una capa de vistas construida para cada pregunta de negocio y un reporte de cinco páginas en Power BI conectado por DirectQuery.

Abrir el reporte Se abre en una pestaña nueva. Tarda unos segundos la primera vez.

Datos

31,000+ embarques · 5,400 incidentes

Fuente

PostgreSQL

Conexión

DirectQuery

Reporte

5 páginas

Qué es

Una simulación del reporteo que una operación logística necesita

El proyecto parte de un conjunto de datos logísticos sintético con más de 31,000 embarques, unos 5,400 incidentes, capacidad y pronóstico diarios, transportistas, instalaciones, rutas, niveles de servicio y calendario.

Los datos viven en PostgreSQL y Power BI se conecta por DirectQuery: el archivo PBIX no contiene una copia de los datos operativos, sino que consulta la base cuando el usuario interactúa con el reporte.

La intención no es mostrar habilidad de visualización, sino modelado de datos, SQL, diseño de la capa de reporteo, definición de indicadores y criterio sobre qué datos debe recibir cada caso de uso.

Panorama ejecutivo

Desempeño general de la red.

Transportistas

Costo, confiabilidad, servicio y excepciones por transportista.

Pronóstico y capacidad

Exactitud, utilización, sobrecargas y volumen real.

Incidentes

Severidad, causa raíz y resolución.

Detalle de excepciones

Investigación a nivel de embarque.

Uno · El modelo de datos

Tres hechos, tres granularidades distintas

El modelo sigue una estructura de hechos y dimensiones. Los hechos guardan eventos o mediciones del negocio; las dimensiones los describen. Lo importante es que los tres hechos no viven en la misma granularidad: los embarques son por embarque, la capacidad es por instalación y día, y los incidentes son por incidente.

Mantener esas granularidades separadas evita que un cruce entre niveles de detalle distintos duplique registros y distorsione las medidas.

FactShipments 1 fila por embarque DimDate DimFacility DimLane DimCarrier DimService FactForecastCapacity 1 fila por instalación y día DimDate DimFacility FactIncidents 1 fila por incidente DimDate Embarque (ref) DIMENSIONES COMPARTIDAS · GRANULARIDADES SEPARADAS
Modelo de hechos y dimensiones. Las dimensiones se comparten; las granularidades no se mezclan.

Dos · La capa de reporteo

Vistas construidas para la pregunta, no para la tabla

La decisión central fue esta: Power BI debe recibir los datos ya organizados en el nivel que cada página necesita, en lugar de reconstruir uniones y agregaciones complejas por DirectQuery cada vez que alguien toca un filtro.

Por eso las vistas no son copias arbitrarias de las tablas. Cada una tiene una granularidad y un propósito de negocio deliberados, y expone solo los campos que su página realmente usa.

PostgreSQL modelo normalizado de hechos y dimensiones Vistas de reporteo una vista por pregunta de negocio Power BI · DirectQuery sin copia de los datos operativos Páginas del reporte ejecutivo · transportistas · capacidad · incidentes · detalle LA AGREGACIÓN OCURRE ANTES DE POWER BI
La agregación ocurre en la base de datos, no en cada clic del usuario.
Vista Granularidad Propósito
rpt_network_monthly Mes + Instalación Reporteo ejecutivo: volumen, costo, entregas a tiempo, utilización, días de sobrecarga e incidentes abiertos. Un tablero ejecutivo no necesita registros individuales de embarque.
rpt_carrier_monthly Mes + Transportista + Nivel de servicio Análisis de transportistas. Conservar el nivel de servicio permite distinguir si el mal desempeño se asocia a Standard, Expedited o Priority en lugar de culpar al transportista completo.
rpt_capacity_daily Fecha + Instalación Pronóstico y capacidad: exactitud, utilización, variación de capacidad, error de pronóstico y bandera de sobrecarga. Se mantiene diaria a propósito.
rpt_incidents_monthly Mes + Instalación + Severidad + Tipo + Causa raíz Gestión de incidentes y causa raíz: dónde ocurren, de qué tipo, qué tan graves, qué los causa y cuánto tardan en resolverse. Cinco incidentes críticos no significan lo mismo que cinco leves.
rpt_exception_detail Un embarque con excepción por fila Investigación. Las demás páginas responden dónde está el problema; esta responde cuál embarque lo causó, con fecha, instalación, transportista, ruta, costo, retrasos, incidente, severidad y tiempo de resolución.

Tres · Un criterio con consecuencias

Por qué la capacidad se queda en granularidad diaria

Agregar la capacidad a nivel mensual habría hecho el reporte más ligero y habría escondido justo el problema que importa. Un promedio mensual de 78.6% de utilización describe una operación sana; el miércoles a 112% describe una operación que se rompió.

Capacidad 100% Promedio mensual 78.6% «operación sana» 70% 72% 68% 71% 112% Lun Mar Mié Jue Vie SOBRECARGA
Utilización de capacidad por día. El promedio mensual borra el único día que exigía una decisión.

Por eso esa vista conserva el día, junto con unidades pronosticadas y reales, capacidad planeada, error de pronóstico, variación y evento de alto volumen. La granularidad se elige según la decisión que se va a tomar, no según el tamaño del conjunto de datos.

  • Pregunta ejecutiva → datos mensuales resumidos.
  • Pregunta de transportistas → datos mensuales por transportista y servicio.
  • Pregunta de capacidad → datos diarios por instalación.
  • Pregunta de incidentes → agregación orientada a riesgo y causa raíz.
  • Pregunta de investigación → detalle a nivel de embarque.

El modelo no usa una sola tabla universal de reporteo, y eso fue deliberado: una tabla plana mezclaría embarques, incidentes, capacidad diaria y cálculos mensuales, con granularidades distintas que producen duplicados y medidas incorrectas.

«Mantuve los datos en un modelo de hechos y dimensiones, pero creé una capa de reporteo en PostgreSQL para Power BI. En lugar de que Power BI reconstruyera uniones y agregaciones sobre las tablas transaccionales por DirectQuery, hice vistas específicas en la granularidad que cada página analítica necesita: el reporteo ejecutivo y de transportistas es mensual, la capacidad se queda diaria porque las sobrecargas desaparecen en los promedios, el reporteo de incidentes conserva dimensiones de riesgo como severidad y causa raíz, y la vista de excepciones se queda detallada porque está pensada para investigar.»

Cómo explico esta arquitectura en una entrevista

El reporte está publicado y es navegable.

Abrir el reporte