Project

General

Profile

Actions

Tareas #27

open

Adecuación Loader - Pérdida de datos

Added by Demo MiGestion365 Admin 20 days ago. Updated 15 days ago.

Status:
En curso
Priority:
Normal
Assignee:
-
Start date:
03/11/2026
Due date:
% Done:

0%

Estimated time:

Description

Luego de ciertos eventos en los que se perdió información de las tablas sobre las que trabaja el loader, se vio la necesidad de cambiar o adecuar el concepto por el cual el loader ejecuta.

El loader trabaja tabla por tabla con if_exists="replace" en casi todas las cargas (to_sql / to_postgis). Eso implica que, para cada tabla, borra y recrea la tabla y luego la vuelve a poblar con los datos del batch actual.


Files

loader_DK_13032026.py (54.5 KB) loader_DK_13032026.py Demo MiGestion365 Admin, 03/16/2026 07:33 PM
Actions #1

Updated by Demo MiGestion365 Admin 20 days ago

Listado de tablas afectadas por el comportamiento de "replace"

✔ Listado completo de tablas afectadas (DROP + CREATE implícito)

Schema audit

wkt_fibra_raw
wkt_op_raw
wkt_cables
ci_sfat_mfat_bfat_raw
ci_fosc_raw
ci_site (audit)
ci_op_raw
ci_feeder_distribution_raw
wkt_headend_fosc_sfat_mfat_bfat

Schema cm

inventory_cable_occupation
wkt_op (sí, va en audit primero y luego en cm)
ci_fosc
ci_mdu
ci_olt
ci_op
ci_feeder_distribution
ci_splitter
cm_report_isp
report_e2e
report_fusiones
inventory_fat_occupation
inventory_olt_occupation
report_isp_osp
inventory_mdu_bfat

Actions #2

Updated by Demo MiGestion365 Admin 15 days ago

La idea es pasar a un modelo de stanging de manera que el loader no sea tan disruptivo.
Subo lo modificado hasta el momento.

  1. Objetivo del trabajo
    Alinear el loader para soportar ambientes prod/stg sin cambios manuales, asegurando:

Lecturas SQL con esquema parametrizado.
Escrituras no-geométricas mediante helper centralizado (sql_write) para redireccionar a audit_stg/cm_stg en staging.

  1. Cambios estructurales

Parámetros de ambiente

Agregados flags TARGET_ENV, FULL_RELOAD, DRY_RUN.
DATABASE_URI_STAGING (desde config o env var).
Función resolve_schema para mapear audit→audit_stg y cm→cm_stg en stg.
Constantes SCHEMA_AUDIT y SCHEMA_CM resueltas al inicio.

Helpers de I/O

sql_write (pandas) y sql_write_gdf (geopandas) centralizan escritura con esquema efectivo por ambiente.
sql_read para lecturas uniformes (con soporte a GDF).

Conexión

setup_connection() elige DATABASE_URI o DATABASE_URI_STAGING según TARGET_ENV.

  1. Lecturas SQL (FROM/JOINS): normalización por ambiente
    Se revisaron y parametrizaron (f-strings + SCHEMA_AUDIT) las funciones con lecturas sensibles:

import_cm_wkt_op_table
import_cm_ci_op_table
import_cm_ci_fosc_table
import_cm_ci_sfat_mfat_bfat_table
import_cm_ci_feeder_distribution_table (incluye fix del alias en where fraw.id_cm = wcables.name).
Con esto, las lecturas apuntan a audit o audit_stg según ambiente, sin tocar lógica/columnas.

  1. Escrituras migradas a sql_write (no-geométricas)
    Se reemplazó to_sql(schema="...") por sql_write(...) en todas las tablas no-geométricas del script, de modo que en stg escriben en *_stg automáticamente:

RAW / CI: ci_site, ci_fosc_raw, ci_sfat_mfat_bfat_raw, ci_op_raw.
REPORTS: report_fusiones, report_e2e, report_isp_osp, cm_report_isp.
INVENTORY: inventory_fat_occupation, inventory_olt_occupation, inventory_mdu_bfat, ci_feeder_distribution_raw.
Otras: wkt_op_raw, wkt_cables, inventory_cable_occupation, wkt_fibra_raw.
Resultado: toda la salida no-geométrica respeta TARGET_ENV sin cambios manuales.

  1. Qué se mantuvo (geométricas)
    Las tablas geométricas finales siguen escribiendo con to_postgis(schema="cm"):

ci_fosc, ci_headend, ci_sfat_mfat_bfat, ci_feeder_distribution.
Operan bien, pero en stg apuntarán a cm (no cm_stg). Migrarlas a sql_write_gdf es opcional si buscás aislamiento total por ambiente.

  1. Grants
    Se conservaron los GRANTs sobre esquemas literales cm/audit.
    Si necesitás que en stg apliquen sobre cm_stg/audit_stg, se sugiere parametrizar con resolve_schema(...) (opcional).

  2. Calidad y fixes menores

Se corrigieron faltas de prefijo f en queries con {SCHEMA_AUDIT} y un alias en feeder_distribution.
Detalle pendiente no crítico: en import_cm_ci_headend_table el geocoding referencia row.longituid (probable row.longitud). No afecta si no se usa with_geocoding=True.

  1. Estado final

Objetivo cumplido: ambiente parametrizado + escrituras no-geométricas alineadas a *_stg en staging.
Sin regresiones funcionales en el flujo principal (load_cm_tables).
Opcional para “cierre total”: migrar las 4 geométricas a sql_write_gdf y parametrizar GRANTs

Actions #3

Updated by Demo MiGestion365 Admin 15 days ago

  • Tracker changed from Errores to Tareas
Actions

Also available in: Atom PDF