Pipeline de Normalizaciones
Este pipeline cubre las tareas de normalización necesarias para el cruzamiento confiable de fuentes de datos en IngelCoding. Actualmente agrupa dos sub-procesos complementarios:
- Normalizaciones-Brigadas: fuzzy matching de nombres de brigadas entre SAP, HES y registros internos, para permitir cruces confiables entre fuentes heterogéneas.
- Normalizaciones-Proyectos: creación de la dimensión
dim_ot(órdenes de trabajo / proyectos), normalizando identificadores y metadatos para que sean clave única de cruce en Power BI y Google Sheets.
Sub-procesos
Sección titulada «Sub-procesos»| Sub-proceso | Descripción |
|---|---|
| Normalizaciones-Brigadas | Estandariza nombres de brigadas mediante cruce exacto + fuzzy matching; produce gantt_normalizado_powerbi.csv |
| Normalizaciones-Proyectos | Construye dim_ot como dimensión central de OTs/proyectos; clave de cruce en el modelo Star Schema de Power BI |
1. Extracción de fuentes crudas
Sección titulada «1. Extracción de fuentes crudas»Lectura de las fuentes de entrada:
gantt_consolidada_powerbi.csv— consolidado multi-zonal (Osorno, Castro, Chiloé) generado por el dominio Gantt.- Tablas de control de OTs (
dim_control_ots_osorno,dim_control_ots_castro,dim_control_ots_ancud) yfact_facturacion— insumos paradim_ot. Ver DB-Diccionario-Tablas.
2. Normalización de brigadas
Sección titulada «2. Normalización de brigadas»Cruce de nombres de brigadas en dos etapas:
- Cruce exacto contra
base_personas.py(catálogo canónico de personal). - Fuzzy matching por similitud (rapidfuzz) para los casos sin cruce exacto.
normalize_nombre()→ transforma'CARLOS ALMONACID'a'C. Almonacid'.- Extracción del código de proceso embebido en el nombre:
EERR / NNSS / OOMM / OOCC.
Módulos: scripts/updates/normalize_brigadas.py, static_data/base_personas.py, static_data/base_nombres_apellidos.py.
3. Normalización de proyectos (dim_ot)
Sección titulada «3. Normalización de proyectos (dim_ot)»Construcción de dim_ot como dimensión central de OTs. Ver Dim_OT-Modelo-Explicacion.
- Recolección de OTs crudas desde las 5 fuentes: control OTs Osorno/Castro/Ancud, Gantt, Facturación.
- Clasificación por patrón (
OT:\d{3}/[A-Z]{2}-\d{3},OA:\d{8},MAN,LITERAL). - Desnormalización: OTs concatenadas con
;se expanden en filas individuales para cruce granular. - Normalización de campos:
ot_limpia,tipo,zonal,fuente,proyecto_original. - Deduplicación y escritura de
dim_oten SQLite / PostgreSQL.
:::note Confirmar con el usuario
Los pasos 3.1–3.5 están basados en Dim_OT-Modelo-Explicacion y DB-Diccionario-Tablas. Confirmar si existe un script dedicado para la construcción de dim_ot o si el proceso es parte de otro dominio (ej. Gantt o un ETL transversal).
:::
4. Validación cruzada
Sección titulada «4. Validación cruzada»Verificación de integridad referencial entre las dos normalizaciones:
- OTs en
gantt_normalizado_powerbi.csvcruzadas contradim_ot.ot_limpia— se reportan OTs sin cobertura (~21% esperado según Pipeline-Productividad). - Brigadas en Gantt cruzadas contra
dim_personal_brigadaspara detectar nombres aún no normalizados.
5. Salida
Sección titulada «5. Salida»gantt_normalizado_powerbi.csv→ directorioSALIDAS/(consumo Power BI calendario).dim_otactualizada en SQLite y PostgreSQL → consumida por Pipeline-PowerBI vía fallback triple.
Gotchas
Sección titulada «Gotchas»- OTs sin cruce (~21%): son OTs nuevas no registradas en
dim_otmás la fila literal"SIN OT". Es comportamiento esperado; no indica error de parseo. - Fuzzy matching con umbrales bajos: un umbral muy permisivo puede cruzar nombres incorrectamente. El catálogo
base_personas.pyes la fuente autoritativa — preferir cruce exacto siempre. - Fuentes de OTs heterogéneas: cada fuente concatena OTs de forma distinta (
;, espacio, guión). La lógica de split debe ser robusta ante variaciones.
Tags: #normalizaciones #pipeline #dim_ot #fuzzy-matching #brigadas