bi_rebuild.aux_combustible dos veces por día. No hay cálculo en el medio:
lo que dice la planilla es lo que dice la tabla. Por eso, si algo está mal o atrasado, se corrige
en la planilla, pidiéndoselo a Mantenimiento, no en el job.
La planilla
Tres orígenes de carga en una sola hoja
AXION
Estaciones de servicio. Carga todos los días hábiles.
ANDESMAR
Carga a granel desde el tanque propio (salida de tanque).
YPF
Estaciones de servicio. Carga por lotes: puede pasar una semana sin filas nuevas.
Cómo sincroniza
Reemplazo total, dos veces por día
Para negocio
Cada corrida lee la hoja completa y deja la tabla idéntica a ella. Si Mantenimiento corrige o borra una fila vieja, el cambio aparece en la próxima corrida. Con ~34.000 filas tarda menos de un minuto.
Para técnica
- Por qué reemplazo total: la planilla no tiene clave natural; el remito se repite de forma legítima.
- Carga en staging y luego
DELETE+INSERTen una transacción (noTRUNCATE, que bloquea a los lectores). - La hoja vive en una unidad compartida restringida a sus miembros: el job impersona una cuenta de servicio miembro con alcance
spreadsheets.readonly. El token genérico de la plataforma no sirve. - Schedulers
andesmar-aux-combustible-sync-daily(03:00) yandesmar-aux-combustible-sync-midday(11:45).
Protecciones
Cuándo el job prefiere no cargar antes que cargar mal
| Situación | Qué hace |
|---|---|
| Falta una columna conocida (la renombraron) | Aborta sin tocar la tabla |
| La hoja trae menos del 90% de las filas de la corrida anterior | Aborta; se fuerza a mano si la baja es correcta |
| Hoja vacía | Aborta |
| Aparece una columna nueva | Carga y la guarda aparte para promoverla con una migración |
| Valor ilegible o demasiado largo | Carga con NULL o truncado, y lo reporta |
| Falla el snapshot a GCS | Sigue: el snapshot es auditoría |
Frescura por origen
Cada origen tiene su propio ritmo, y su propia alarma
| Origen | Rezago normal | Umbral de alerta | Peso en litros (desde ago) |
|---|---|---|---|
| AXION | 0 a 3 días (los 3 son fin de semana) | 5 días | 54,2% |
| ANDESMAR | -1 a 4 días | 6 días | 28,0% |
| YPF | 2 a 10 días (carga por lotes) | 14 días | 17,8% |
aux_combustible_frescura) y avisa como mucho una vez por día. Que YPF no traiga
nada en una semana es normal; un atraso real se resuelve pidiendo la carga.Qué columna medir
Litros son cantidad, no litros_unidades
SUM(cantidad)litros_unidades?unidad: el interno se reutiliza al reemplazar el vehículo.Brecha con Industrial
Dos planillas que se pisan en parte
ya está en nuestra tabla
cargan en esta planilla
situacion_hoy = 'INDUSTRIAL'situacion_hoy = 'INDUSTRIAL' y son de la división Industrial (verificado contra su Parque Móvil),
no unidades prestadas.Detalle: api_andesmar/docs/negocio/2026-09-21_brecha_combustible_industrial_vs_autotransporte.md.
El detalle de estación, producto y hora de Industrial no está perdido: existe ticket por ticket en el sistema de
Industrial, cargado a mano.
Checklist rápido
Antes de armar un tablero de combustible
- Litros:
cantidad, nuncalitros_unidades - Frescura: mirar por origen; YPF atrasado una semana es normal
- Unificar con Industrial: deduplicar por
situacion_hoy = 'INDUSTRIAL' - Cruces: por patente, no por número de unidad
- Impuestos: no están en la planilla
- Un error en los datos se corrige en la planilla, no en la tabla