Sky Flowers — BigQuery: Estado del Sistema

Cómo funciona la base de datos analítica, qué información ya tenemos y qué falta para que quede completa.

Marzo 2026

¿Qué es BigQuery y para qué lo usamos? BigQuery es la base de datos analítica de Sky Flowers en la nube de Google. A diferencia de los sistemas del día a día (AppSheets, World Office, SQL Server), BigQuery no es para registrar lo que pasa — es para analizar lo que ya pasó y proyectar lo que va a pasar.

Piénsalo así: los AppSheets son la caja registradora de cada finca. BigQuery es el contador que revisa todas las cajas al final del día, las compara, y te dice dónde ganar más dinero.

Lo que ya responde hoy: ¿Cuántas personas necesito la próxima semana en SKY3? ¿Qué camas están activas en SKY1? ¿Cuántos tallos se cortaron en febrero? ¿Qué labores quedaron mal ejecutadas?

🔄

Cómo fluye la información

📱
AppSheets
Siembras, Labores, Monitoreo, Recepción
🔌
Conector API
Script Python (falta activar)
☁️
BigQuery
Modelo estrella v2
📊
Vistas analíticas
11 vistas listas
🖥️
Dashboard + WhatsApp
Tiempo real

🟡 El eslabón pendiente: conectar los AppSheets para que BigQuery se actualice automáticamente cada día.

📐

Dimensiones — "El catálogo de lo que existe"

7 tablas activas

Las dimensiones son las tablas que describen el mundo de Sky Flowers: las fincas, las camas, las variedades, los empleados. No cambian con frecuencia — son el mapa del terreno.

dim_sedes 7 filas
Las 7 fincas: SKY1 a SKY7. Municipio, altitud, área.
📌 Manual Falta: hectáreas exactas y coordenadas GPS de cada finca
dim_bloques 132 filas
Los bloques dentro de cada finca (B01, B02…). Agrupan las camas.
📌 Excel migrado
dim_camas 10,444 filas
La unidad más pequeña. Cada cama tiene largo, área, capacidad y tipo de cultivo.
📌 Excel migrado Falta: sincronizar cuando crean camas nuevas
dim_variedades 38 filas
Variedades de flor: tipo (Hydrangea, Lepidium…), color.
📌 Excel migrado
dim_empleados 282 filas
Todos los trabajadores con área y sede.
📌 Excel migrado Falta: conectar a GH para ingresos/retiros automáticos
dim_labores 131 filas
Catálogo de 131 labores de campo y poscosecha.
📌 Excel migrado
dim_estandares_labor 109 filas
Cuántas personas/horas requiere cada labor por m². Base del Software Renzo.
📌 Excel calibrado Pendiente: calibrar riego, fertilización, desmalezar
dim_programa_labores 109 filas
Calendario de cuándo se hace cada labor según semana del ciclo del cultivo.
📌 Sistema RENZO migrado
📋

Hechos — "Lo que realmente pasó"

1 tabla vacía

Las tablas de hechos registran los eventos: siembras, cosechas, labores ejecutadas. Crecen todos los días — son la historia viva de las fincas. Hoy tienen datos históricos cargados desde los Excel viejos; el reto es que se actualicen solos con los AppSheets.

fact_siembras 28,257 filas
Cada vez que se siembra o poda una cama. Fecha, variedad, cantidad de plantas.
📱 App Siembras Falta: conectar para actualización diaria
fact_recepcion 41,980 filas
Cada entrada de tallos a poscosecha. La fuente de producción real.
📱 App Recepción Falta: conectar para actualización diaria
fact_monitoreo 11,488 filas
Recorridas fitosanitarias de las monitoras. Estado de plagas y enfermedades por cama.
📱 App Monitoreo Falta: conectar para actualización diaria
fact_labores 42,329 filas
Turnos trabajados por persona por labor. Fuente del rendimiento real.
📱 App Labores Falta: conectar para actualización diaria
fact_conteo 0 filas
Conteo de plantas después de poda. Necesario para proyectar producción futura.
🖥️ SQL Server Falta: exportar tabla desde Juan Fernando
fact_plan_labores Vacía (nueva)
El plan aprobado de mano de obra por semana. Se llenará desde un formulario.
📝 Pendiente crear Necesita un formulario AppSheet o entrada manual
📈

Vistas analíticas — "Las preguntas que ya responde"

11 vistas activas

Las vistas son consultas pre-armadas que combinan las tablas para responder preguntas específicas. No hay que programar nada nuevo — solo conectar el front-end.

vw_demanda_semanal ¿Cuántas personas necesito la próxima semana, en qué sede y para qué labor? → Base del Software Renzo y los mensajes a supervisores ✅ En vivo
vw_produccion_semanal Tallos cortados por semana ISO, sede y variedad ✅ En vivo
vw_ocupacion_finca % de camas activas por tipo de cultivo y sede ✅ En vivo
vw_plantas_activas Última siembra/conteo por cama + % de capacidad utilizada ✅ En vivo
vw_estado_fitosanitario Último monitoreo por cama, alertas de plagas activas ✅ En vivo
vw_rendimiento_labores Rendimiento real vs. estándar por labor, empleado y sede ✅ En vivo
vw_proyeccion_corte Probabilidad gaussiana de corte por cama en las próximas semanas ✅ En vivo
vw_potencial_conversion Camas de Lepidium/Matricaria que podrían convertirse a Hortensia ✅ En vivo
vw_dashboard_produccion Vista ejecutiva mensual: producción, rendimiento y ocupación por sede ✅ En vivo
vw_sofa_renzo Plan vs. Real de mano de obra. Requiere fact_plan_labores llena para funcionar. 🟡 Parcial
vw_carga_semanal_resumen Resumen ejecutivo: personas-hora plan vs real por sede. Idem — requiere plan cargado. 🟡 Parcial
📱

AppSheets — Los que hay que conectar

Conexión pendiente

Hoy los AppSheets escriben en Google Sheets. El plan es que cada vez que alguien registra algo en un AppSheet, esa información llegue automáticamente a BigQuery también. No hay que cambiar cómo trabaja la gente — solo agregar un destino más.

🌱
App Siembras / Podas
Líderes de campo
Registra cuándo se siembra o poda cada cama. Es la base del ciclo de cultivo y de la proyección de cosecha.
Escribe en BigQuery →
fact_siembras
Datos históricos cargados · Falta sincronización en vivo
✂️
App Recepción Poscosecha
Christian / Poscosecha
Registra cada entrada de tallos a poscosecha. Es la fuente de producción real — cuánto cortó cada cama cada semana.
Escribe en BigQuery →
fact_recepcion
Datos históricos cargados · Falta sincronización en vivo
🔍
App Monitoreo
6 monitoras de campo
Recorrida fitosanitaria. Registra el estado de plagas y enfermedades cama por cama.
Escribe en BigQuery →
fact_monitoreo
Datos históricos cargados · Falta sincronización en vivo
👷
App Turnos / Labores
Líderes de campo
Registra qué hizo cada persona cada día: labor, cama, horas. Es la fuente del rendimiento real vs. el estándar.
Escribe en BigQuery →
fact_labores
Datos históricos cargados · Falta sincronización en vivo
📦
App Almacén
Steven
Salidas de insumos con centros de costo. Necesario para el P&L por sede y labor.
Escribe en BigQuery →
fact_insumos (pendiente crear)
No conectado — necesita tabla nueva en BigQuery
📝
Formulario Plan Semanal
Valentina / Supervisores
Todavía no existe. Permitiría a los supervisores aprobar o ajustar el plan proyectado cada semana.
Escribe en BigQuery →
fact_plan_labores (lista, vacía)
Pendiente crear — habilita Plan vs Real
🔌

Cómo se conectan los AppSheets a BigQuery

Hay tres formas de hacerlo. La más simple es la opción 1 — no requiere tocar los AppSheets ni cambiar cómo trabaja nadie.

1

Sincronización nocturna (recomendada) — Script Python automático

Un script corre todos los días a las 11pm, lee el Google Sheet de cada AppSheet vía API de Google Sheets, y sube las filas nuevas a BigQuery. No toca los AppSheets, no cambia nada para los usuarios. El dashboard se actualiza con datos del día anterior.

python sync_appsheets_bigquery.py --fecha hoy
2

Tiempo real vía webhook — AppSheet llama a BigQuery al guardar

Se configura en AppSheet un "Bot" que dispara un webhook cada vez que alguien guarda un registro. El webhook llega al bot Flask que lo sube a BigQuery. Más complejo de configurar pero actualización inmediata.

AppSheet Bot → POST /webhook/siembras → BigQuery
3

BigQuery Data Transfer desde Google Sheets

Google tiene un conector nativo que lee un Google Sheet y lo copia a BigQuery automáticamente cada hora. La más fácil de activar si el Sheet está bien estructurado, pero menos flexible.

BigQuery Console → Data Transfers → Google Sheets
🎯

Lo que falta para que quede completo

Alta prioridad

🔄 Conectar AppSheets a BigQuery

Hoy los datos son históricos. Sin la conexión, BigQuery se va quedando viejo. La sincronización nocturna es la opción más rápida de implementar.

Impacto: Sin esto, todas las vistas analíticas muestran datos de hace semanas.
Alta prioridad

📊 fact_conteo — Conteo post-poda

Juan Fernando tiene esta tabla en SQL Server. Exportarla desbloquea la proyección de cosecha a 3+ meses con confianza alta.

Impacto: La proyección gaussiana de corte hoy tiene baja confianza en muchas camas por falta de este dato.
Alta prioridad

👷 Calibrar estándares de labor

Riego, Fertilización, Desmalezar, Subida de mallas y Deshijar aparecen en el plan con "— personas" porque no tienen rendimiento definido.

Impacto: El plan a supervisores muestra labores sin cantidad de personas.
Media prioridad

📝 Formulario fact_plan_labores

Un AppSheet simple donde el supervisor aprueba o ajusta el plan proyectado. Una vez que haya plan cargado, se activa la comparación Plan vs Real.

Impacto: Activa vw_sofa_renzo y el semáforo de cumplimiento por supervisor.
Media prioridad

📦 App Almacén de Steven

Conectar las salidas de insumos con centros de costo a BigQuery. Habilita el costo por labor y el P&L por sede.

Impacto: Sin esto no se puede calcular el costo real por tallo cortado.
Media prioridad

🗺️ Datos faltantes en dim_sedes

Las 7 fincas no tienen hectáreas totales ni coordenadas GPS. Necesario para calcular densidades y visualizar en mapa.

Impacto: Algunas métricas de densidad y rendimiento por ha son imprecisas.
Futuro

⏰ Envío automático los domingos

Task Scheduler en el servidor que ejecute el envío de planes a supervisores todos los domingos a las 6pm automáticamente.

Impacto: Hoy hay que correr el script manualmente.
Futuro

🏪 dim_proveedores

La base de los ~40 proveedores de Ramiro digitalizada. Necesaria para el módulo de compras y costos de insumos.

Impacto: Sin esto el módulo de compras es manual.
Futuro

👔 Conectar GH (Gestión Humana)

Cuando Luisa registra un ingreso o retiro, que dim_empleados se actualice sola. Hoy hay que actualizarla manualmente.

Impacto: dim_empleados puede tener personas retiradas o faltar nuevos.
📌

Resumen del estado actual

124k+
Registros históricos cargados
11
Vistas analíticas activas
8
Supervisores con plan WhatsApp
4
AppSheets por conectar
1
Tabla vacía (fact_conteo)