Crear una cascada horaria de THHN_1
Este ejemplo responde una pregunta concreta de planta:
Pregunta real de plantaReal plant question
¿Cómo fue subiendo o bajando el sensor THHN_1 hora por hora, desde su valor inicial hasta el valor final?
- FuenteSource
robotic.sensor_data- TiempoTime
- hora · promedio horario
- MétricaMetric
SUM(aporte)- RangoRange
- 24 horas hasta la lectura más reciente
Una cascada es útil cuando no solo quieres ver el nivel del sensor, sino explicar el recorrido: dónde aumentó, dónde disminuyó y en qué valor terminó.
Qué vamos a construir
La tabla original guarda una columna por sensor. Primero usaremos SQL Lab para obtener cuatro columnas más fáciles de graficar:
| Columna | Significado |
|---|---|
hora | Inicio de cada bloque horario. |
sensor | Nombre legible del sensor: THHN_1. |
valor | Promedio de THHN_1 durante esa hora. |
aporte | Cambio respecto de la hora anterior. En la primera fila es el valor inicial. |
Gracias a esa última regla, la suma de todos los aportes conduce desde el valor inicial hasta el valor final.
1. Preparar los cambios en SQL Lab
- Abre SQL Lab.
- Elige la base Aurora MySQL (Data API) y el esquema
robotic. - Pega y ejecuta esta consulta:
SELECT actual.hora, 'THHN_1' AS sensor, actual.valor, CASE WHEN anterior.valor IS NULL THEN actual.valor ELSE actual.valor - anterior.valor END AS aporteFROM ( SELECT FROM_UNIXTIME( FLOOR(UNIX_TIMESTAMP(`timestamp`) / 3600) * 3600 ) AS hora, AVG(`THHN_1`) AS valor FROM `robotic`.`sensor_data` WHERE `timestamp` >= ( SELECT DATE_SUB(MAX(`timestamp`), INTERVAL 24 HOUR) FROM `robotic`.`sensor_data` ) AND `THHN_1` IS NOT NULL GROUP BY hora) AS actualLEFT JOIN ( SELECT FROM_UNIXTIME( FLOOR(UNIX_TIMESTAMP(`timestamp`) / 3600) * 3600 ) AS hora, AVG(`THHN_1`) AS valor FROM `robotic`.`sensor_data` WHERE `timestamp` >= ( SELECT DATE_SUB(MAX(`timestamp`), INTERVAL 24 HOUR) FROM `robotic`.`sensor_data` ) AND `THHN_1` IS NOT NULL GROUP BY hora) AS anterior ON anterior.hora = DATE_SUB(actual.hora, INTERVAL 1 HOUR)ORDER BY actual.hora;
2. Comprobar antes de graficar
No continúes hasta confirmar que:
- hay una fila por cada hora esperada;
horaestá en orden ascendente;valoryaportecontienen números;- la primera fila usa su propio
valorcomoaporte; - las filas siguientes calculan
valor actual − valor anterior.
3. Guardar la fuente virtual
Desde los resultados de SQL Lab, guarda la consulta como un dataset virtual. Un nombre claro para este ejemplo es:
robotic.cascada_THHN_1Esto conserva la preparación en SQL y deja la pantalla Explorar enfocada en la visualización.
4. Configurar la cascada
Abre el dataset guardado y selecciona Gráfico de cascada. Configura:
| Control | Valor |
|---|---|
| Eje X | hora |
| Granularidad temporal | Hora |
| Métrica | SUM(aporte) |
| Límite de filas | 1000 |
Pulsa Actualizar gráfico y espera a que aparezcan las barras y el conteo de filas.
5. Leer el resultado en lenguaje humano
- Verde: THHN_1 aumentó respecto de la hora anterior.
- Rojo: THHN_1 disminuyó.
- Altura de la barra: magnitud del cambio, no el valor absoluto de esa hora.
- Gris al final: valor al que llegó el sensor después de acumular todos los cambios.
En la captura se observa una secuencia de aumentos y disminuciones, con cambios especialmente grandes alrededor del tramo de la tarde. Para obtener una cifra exacta de una hora, coloca el cursor sobre su barra; no la estimes solo por la altura.
Puedes contar la historia completa de THHN_1: su punto de partida, cada variación horaria y el valor final, sin confundir los cambios con las lecturas absolutas.
Cuando el resultado esté validado, continúa con guardar la gráfica y añadirla a un panel.