Medir la cantidad y tipo de solicitudes ("Occasional" vs. "Regular").
Identificar tendencias de crecimiento o caída en solicitudes.
Analizar patrones de clientes según tipo de negocio.
Calcular pérdidas por visitas sin carga ("No Cargo").
Implementar mejoras en procesos de verificación.
Coordinar con el área comercial para mitigar incidencias.
Crear reportes detallados sobre visitas fallidas.
Implementar KPIs: niveles de servicio, factor de carga, georreferencia y cumplimiento de horarios.
'db_Request'
Importé 4 archivos Excel 'GlobalTransit_Metrics' en formato .xlsx con los datos a trabajar. Los 4 archivos, al estar bien estructurados y coincidir en sus columnas, con PowerQuery procedí a unificarlos para trabajar como si fuese un solo archivo o una fuente de datos única.
En PowerQuery, fui a la opción 'Transformar' > 'Columna de texto' > 'Dividir columna' > 'Por: de dígito a no dígito' para separar el último dígito del identificador.
Unimos las 2 columnas yendo a 'Transformar' > 'Columna de texto' > 'Combinar Columnas' y elegimos el separador '-'.
Eliminamos una columna vacía que no aporta valor.
Creé una nueva columna personalizada de direcciones.
Fui a la opción 'Agregar columna' > 'Columna personalizada' y creé la columna que llamaremos 'Address'.
Aquí cambié el formato 'Fecha / Hora' a las columnas que venían con este formato, con el fin de tener los datos estandarizados según su campo o columna antes de cargarlos en Power BI.
Para facilitar el análisis temporal, creé una tabla de calendario (T_Calendar
) que contiene fechas iterativas basadas en el rango de fechas de la tabla db_Request
. Luego, agregué columnas adicionales para desglosar la fecha en componentes útiles como día, mes, año, semestre y semana.
T_Calendar = CALENDAR(
MIN(db_Request[Scheduling_Date]),
MAX(db_Request[Scheduling_Date])
)
Day = DAY(T_Calendar[Date])
Day Name = FORMAT(T_Calendar[Date], "dddd")
Month = MONTH(T_Calendar[Date])
Month Name = FORMAT(T_Calendar[Date], "mmmm")
Semester = IF(MONTH([Date]) <= 6, 1, 2)
Week = WEEKNUM(T_Calendar[Date])
Year = YEAR(T_Calendar[Date])
db_Request
Creé una tabla de medidas (T_Metrics db_request
) para calcular métricas clave relacionadas con las solicitudes. Estas métricas incluyen conteos de solicitudes por estado, comparaciones con el año anterior y cálculos de excepciones operativas.
Total Request Count = COUNT(db_Request[Request_ID])
State Ready = COUNTROWS(
FILTER(db_Request,
db_Request[State] = "Ready")
)
State Arrived = COUNTROWS(
FILTER(db_Request,
db_Request[State] = "Arrived")
)
State Assigned = COUNTROWS(
FILTER(db_Request,
db_Request[State] = "Assigned")
)
State Progress = COUNTROWS(
FILTER(db_Request,
db_Request[State] = "In Progress")
)
State Transit = COUNTROWS(
FILTER(db_Request, db_Request[State] = "In Transit")
)
State Warning = COUNTROWS(
FILTER(db_Request,
db_Request[State] = "Warning")
)
State Unscheduled = COUNTROWS(
FILTER(db_Request,
db_Request[State] = "Unscheduled")
)
Status Pending Completion = COUNTROWS(
FILTER(db_Request,
db_Request[Status] = "Pending Completion")
)
Last Year Request Count = CALCULATE(
[Total Request Count],
SAMEPERIODLASTYEAR(T_Calendar[Date])
)
Request Count Difference = [Total Request Count] - [Last Year Request Count]
Successful Service = SUMX(
db_Request,
IF(
db_Request[Status] = "Loaded" ||
(db_Request[Status] = "Warning" && db_Request[Reason] = "No Cargo"),
1, 0
)
)
Unique Truck = CALCULATE(
DISTINCTCOUNT(db_Request[Truck_ID]),
ALLSELECTED(T_Calendar[Date]),
NOT(ISBLANK(db_Request[Truck_ID]))
)
Operational Exceptions = COUNTROWS(
FILTER(
db_Request,
db_Request[Reason] <> "Loaded" &&
db_Request[Reason] <> "No Cargo" &&
db_Request[Reason] <> "Pending Completion" &&
db_Request[Reason] <> "Unscheduled"
)
)
Para complementar el análisis, creé una segunda tabla de medidas (T_Metrics % db_request
) que calcula porcentajes basados en las métricas anteriores. Esto permite entender la proporción de solicitudes en cada estado respecto al total.
% State Ready = [State Ready] / [Total Request Count]
% State Warning = [State Warning] / [Total Request Count]
% State Unscheduled = [State Unscheduled] / [Total Request Count]
% Status Pen Com = [Status Pending Completion] / [Total Request Count]
db_customer
Finalmente, creé una tabla de medidas (T_Metrics db_customer
) para analizar métricas relacionadas con los clientes. Estas métricas incluyen el conteo de solicitudes por segmento de cliente, como "Account Customers", "Business Units", "Company Branches", "E-commerce Customer" y "Retail Business".
Account Customers Count =
CALCULATE(
COUNTROWS(db_Request),
db_Customer[Customer_Segment] = "Account Customers"
)
Business Units Count =
CALCULATE(
COUNTROWS(db_Request),
db_Customer[Customer_Segment] = "Business Units"
)
Company Branches Count =
CALCULATE(
COUNTROWS(db_Request),
db_Customer[Customer_Segment] = "Company Branches"
)
E-commerce Customer Count =
CALCULATE(
COUNTROWS(db_Request),
db_Customer[Customer_Segment] = "E-commerce Customer"
)
Retail Business Count =
CALCULATE(
COUNTROWS(db_Request),
db_Customer[Customer_Segment] = "Retail Business"
)
El modelo de datos conecta múltiples tablas, representando distintas áreas de la empresa. Por ejemplo:
Las relaciones en este modelo de datos fueron diseñadas para integrar información clave de diversas áreas, como clientes, camiones, presupuestos y métricas operativas. Esto permite combinar datos que, de forma aislada, no tendrían el mismo impacto. Por ejemplo, conectar las solicitudes de clientes con el desempeño de los camiones ayuda a identificar patrones de uso, evaluar costos y mejorar la eficiencia operativa. Asimismo, vincular los presupuestos con el calendario facilita el análisis temporal para alinear recursos con las necesidades del negocio
Relaciones creadas en Power BI: explicando cómo se conectan los datos.
Aquí mostraré algunas imagenes de los paneles creados a partir de las de las medidas creadas anteriormente, pero los paneles finales los mostraré una vez que los alla personalizado con FIGMA para finalizar con una Historytelling con todo lo visto.
Total 'Request' por 'Year', 'Month', y 'Type_Request' .
Aquí mostraré los los diseños que he creado con figma para crear un impacto visual mas potente de los dashboard que he creado. Los dashboard y paneles de mando estaran en la siguiente publicación.
Descripción inicial de la sección CON FIGMA.