Ir al contenido

Conector Aggregation

El conector Aggregation almacena cargas entrantes en una ventana y emite una única carga agregada por cada volcado de ventana. Admite ventanas basadas en tiempo y en recuento con múltiples funciones de agregación por campo.

Tipo de Conector: MeddleAggregation

Ventanas de tiempo fijas y no superpuestas. El búfer se vacía completamente en cada volcado.

{
"type": "MeddleAggregation",
"config": {
"windowType": "tumbling",
"windowSize": 60000,
"fields": [
{ "key": "temperature", "function": "avg", "outputKey": "temperature_avg" },
{ "key": "temperature", "function": "max", "outputKey": "temperature_max" }
]
}
}

Cada 60 segundos, emite el promedio y el máximo de temperature recopilado durante la ventana, luego reinicia el búfer.

Ventanas de tiempo superpuestas. Después de cada volcado, se retiene la segunda mitad del búfer, de modo que la siguiente emisión se superpone con la anterior.

{
"type": "MeddleAggregation",
"config": {
"windowType": "sliding",
"windowSize": 60000,
"slideSize": 30000,
"fields": [
{ "key": "pressure", "function": "avg", "outputKey": "pressure_avg" }
]
}
}

Útil para promedios móviles más suaves donde cada emisión comparte la mitad de sus muestras con la ventana anterior.

Vuelca en cuanto el búfer contiene countSize cargas, independientemente del tiempo transcurrido.

{
"type": "MeddleAggregation",
"config": {
"windowType": "count",
"countSize": 100,
"fields": [
{ "key": "vibration", "function": "max", "outputKey": "vibration_peak" },
{ "key": "vibration", "function": "count", "outputKey": "samples" }
]
}
}

Emite una carga por cada 100 muestras recibidas.

  • windowType (obligatorio): tumbling, sliding o count
  • windowSize: Duración de la ventana en milisegundos (obligatorio para tumbling y sliding)
  • slideSize: Intervalo de deslizamiento en milisegundos (usado con sliding)
  • countSize: Número de muestras por ventana (obligatorio para count)
  • fields (obligatorio, mínimo 1): Array de definiciones de campos de agregación
  • groupByKeys: Lista opcional de claves de la carga por las que agrupar agregaciones
  • key: Clave de la carga de entrada de la que leer
  • function: Una de sum, avg, min, max, count, first, last
  • outputKey: Clave bajo la que se escribe el valor agregado
  • sum — Suma de los valores numéricos en la ventana
  • avg — Media aritmética de los valores numéricos
  • min / max — Valor numérico mínimo / máximo
  • count — Número de cargas en la ventana
  • first / last — Primer / último valor observado para la clave (cualquier tipo)

Los valores no numéricos se omiten para las funciones numéricas y se reportan como errores de discrepancia de tipo en el canal de errores.

  1. Suavizar lecturas de sensores ruidosas con un promedio deslizante
  2. KPIs por minuto o por hora para dashboards
  3. Agrupar eventos por lotes antes de escribir en una base de datos o broker de mensajes
  4. Detección de picos sobre un número fijo de muestras
{
"type": "MeddleAggregation",
"config": {
"windowType": "tumbling",
"windowSize": 30000,
"fields": [
{ "key": "temperature", "function": "avg", "outputKey": "temperature_avg" },
{ "key": "temperature", "function": "min", "outputKey": "temperature_min" },
{ "key": "temperature", "function": "max", "outputKey": "temperature_max" },
{ "key": "status", "function": "last", "outputKey": "status_last" }
]
}
}
  • Elige tumbling para informes periódicos limpios; sliding para tendencias más suaves
  • Usa ventanas count para flujos de alta frecuencia donde el tiempo no es la unidad natural
  • Mantén las ventanas suficientemente pequeñas para limitar la memoria pero suficientemente grandes para ser estadísticamente significativas
  • Usa first / last para arrastrar contexto no numérico (ej. el estado de la máquina) junto a los agregados numéricos