Skip to Content
Paneles IoTEnlace de datos

Enlace de datos

El enlace de datos es el puente entre su base de datos del proyecto y los widgets de su board IoT. Casi cualquier propiedad configurable de un widget — títulos, valores, colores, series de gráficos, rangos de gauges — puede alimentarse dinámicamente con datos en vivo de la TimescaleDB de su proyecto. Esta página explica cómo conectar columnas a propiedades de widgets y cómo refinar los datos con filtros.

Para una visión más amplia de cómo llegan los datos a la base de datos del proyecto, vea la visión general de Gestión de Datos.

Las dos formas de enlazar datos

Hay dos modos fundamentales de enlace en el Board Studio de IronFlock:

  1. Referencias de valor — enlazan un único valor escalar (el registro más reciente de una columna) a una propiedad del widget.
  2. Referencias de tabla — enlazan un conjunto de resultados entero (varias filas) a una propiedad del widget que espera un array.

Ambos modos soportan filtrado y ofrecen actualizaciones en tiempo real: conforme llegan nuevas filas a la base de datos, las propiedades enlazadas del widget se refrescan automáticamente sin polling.

Referencias de valor

La mayoría de campos de configuración de un widget esperan un único valor — un título, una lectura numérica, un color, una etiqueta de estado. Bajo estos campos en el editor de widgets hay un pequeño interruptor de enlace de datos.

Al activar el interruptor, al hacer clic en el campo se abre un desplegable con todos los datos disponibles en la base de datos del proyecto. Puede:

  1. Elegir una tabla de la base del proyecto.
  2. Elegir una columna dentro de esa tabla para enlazarla a la propiedad.

Ejemplo: Puede enlazar el campo título de un widget gauge a la columna name de una tabla machine, o el campo valor de un widget numérico a la lectura más reciente de temperature en una tabla sensor_data.

El valor más reciente

Una referencia de valor siempre entrega el último valor único de la columna seleccionada. “Más reciente” se determina por la columna obligatoria tsp — cada tabla en la base de datos del proyecto tiene una columna de timestamp tsp, y gana la fila con el mayor tsp.

Icono de filtro

Una vez enlazada una columna a una propiedad del widget, aparece un pequeño icono de filtro junto al interruptor de datos bajo el campo. Al hacer clic se abre un diálogo para configurar filtros que acotan las filas consideradas al extraer el valor. Vea Configuración de filtros más abajo.

Referencias de tabla

Algunos widgets esperan un array de valores en vez de un escalar. Un widget de gráfico, por ejemplo, necesita muchos puntos (x, y) para trazar una línea; un widget de tabla necesita muchas filas.

En esos lugares, el editor muestra un botón Añadir (para agregar elementos del array manualmente) junto a un interruptor de enlace de datos al lado de la etiqueta del campo.

  • Modo manual: haga clic en Añadir para agregar elementos uno a uno con valores estáticos.
  • Modo enlace de datos: active el interruptor para enlazar el array a una tabla. Seleccione la tabla y cada fila que pase los filtros se convierte en un elemento del array.

Puede usar el icono de filtro junto al interruptor para acotar las filas devueltas exactamente a lo que necesite — vea Configuración de filtros.

Mapeo de columnas a campos de elemento de array

Una vez activo el enlace de datos para una referencia de tabla, se configura una única plantilla de elemento de array con valores de la tabla conectada. Para un gráfico de líneas, los elementos necesitan valores x e y — haga ambos data driven eligiendo columnas de la tabla enlazada para cada eje. Cada fila del conjunto de resultados filtrado se renderiza en el gráfico usando ese mapeo.

El mismo patrón aplica a cualquier widget que acepte arrays: gráficos de barras, tablas, listas, heatmaps, y más.

Configuración de filtros

Los filtros acotan las filas usadas por una referencia de valor o de tabla. Las secciones del diálogo se aplican en el orden en que se muestran — que es también el orden en que las aplica la base de datos del proyecto:

Diálogo de configuración de filtros con ajustes de ventana temporal, filtros arbitrarios por columna y límite de filas

1. Ventana de tiempo móvil

Configure cómo se filtran los registros por tiempo:

  • Ventana deslizante — muestra solo filas de los últimos N minutos, horas, días, etc. relativos al momento actual.
  • Ventana temporal personalizada — especifique los nombres de un parámetro de inicio y un parámetro de fin. Estos nombres los proporciona en tiempo de ejecución un Widget Calendario, con el que el usuario elige un rango en el board.

2. Filtros arbitrarios por columna

Añada cualquier número de filtros a nivel de columna con una de estas fuentes de valor:

  • Valores constantes — valores literales (p. ej., status = 'active').
  • Parámetros de filtro — valores proporcionados por un Widget de Filtro a través de la URL.
  • Segmentos de ruta — valores extraídos de la URL actual vía Widgets de Navegación.

3. Agregación

Por defecto, un enlace devuelve filas sin procesar. Cámbielo a Agregado en el tiempo y la base de datos del proyecto agrupa los registros seleccionados en intervalos de tiempo — o en categorías — y devuelve un valor calculado por grupo: promedios horarios, registros por máquina, el total de hoy.

Como los filtros se ejecutan antes de este paso, deciden qué registros entran en cada intervalo. La agregación se trata a fondo en su propia página: vea Agregación y submuestreo.

4. Límite de filas

Establece un tope para el número de filas devueltas. El límite no puede superar 3000 — este tope protege tanto al navegador como a la base de datos del proyecto de conjuntos de resultados enormes.

En un enlace agregado, el número de intervalos devueltos se deriva de otro modo (del ancho del widget o del intervalo que haya elegido), y el límite de filas actúa únicamente como salvaguarda de reserva.

Todas las secciones se componen: la ventana temporal reduce el rango, los filtros de columna refinan más las filas, la agregación las reduce a un valor por intervalo, y el límite de filas tapa la salida final.

Selección de campos en columnas JSON

La base de datos del proyecto soporta columnas JSON para datos no estructurados o semi-estructurados (payloads de telemetría, blobs de configuración, registros anidados).

Al enlazar una columna JSON a una propiedad del widget aparece un input adicional para especificar la ruta al campo hoja dentro de la estructura JSON. La ruta usa notación estándar de objetos JavaScript:

sensor.temperature payload.items.0.value metadata.location.city

El widget extrae el valor en esa ruta para cada registro. Funciona tanto para referencias de valor (la hoja extraída del JSON más reciente) como para referencias de tabla (la hoja extraída en cada fila).

Resumen

  • Use referencias de valor para propiedades escalares (título, valor, color) — obtiene el último valor por tsp.
  • Use referencias de tabla para propiedades de array (series de gráficos, tablas, listas) — mapea columnas a campos de elemento de array.
  • Use el diálogo de filtros para refinar filas con ventanas temporales, filtros por columna y límite de filas (máx. 3000).
  • Cambie un enlace a agregado cuando quiera valores calculados en lugar de registros — vea Agregación y submuestreo.
  • Use notación de rutas JSON para llegar a columnas JSON no estructuradas.
Last updated on