Zum Inhalt springen

Aggregation-Konnektor

Der Aggregation-Konnektor puffert eingehende Payloads in einem Fenster und gibt pro Fenster-Flush eine einzelne aggregierte Payload aus. Er unterstützt zeitbasierte und zählbasierte Fenster mit mehreren Aggregationsfunktionen pro Feld.

Konnektor-Typ: MeddleAggregation

Feste, nicht überlappende Zeitfenster. Der Puffer wird bei jedem Flush vollständig geleert.

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

Alle 60 Sekunden werden der Durchschnitt und das Maximum der während des Fensters gesammelten temperature ausgegeben und dann der Puffer zurückgesetzt.

Überlappende Zeitfenster. Nach jedem Flush wird die zweite Hälfte des Puffers beibehalten, sodass sich die nächste Ausgabe mit der vorherigen überlappt.

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

Nützlich für glattere gleitende Durchschnitte, bei denen jede Ausgabe die Hälfte ihrer Samples mit dem vorherigen Fenster teilt.

Flusht, sobald der Puffer countSize Payloads enthält, unabhängig von der verstrichenen Zeit.

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

Gibt eine Payload für jeweils 100 empfangene Samples aus.

  • windowType (erforderlich): tumbling, sliding oder count
  • windowSize: Fensterdauer in Millisekunden (erforderlich für tumbling und sliding)
  • slideSize: Schiebeintervall in Millisekunden (wird mit sliding verwendet)
  • countSize: Anzahl Samples pro Fenster (erforderlich für count)
  • fields (erforderlich, min 1): Array von Aggregationsfeld-Definitionen
  • groupByKeys: Optionale Liste von Payload-Schlüsseln zur Gruppierung von Aggregationen
  • key: Eingabe-Payload-Schlüssel, von dem gelesen wird
  • function: Einer von sum, avg, min, max, count, first, last
  • outputKey: Schlüssel, unter dem der aggregierte Wert geschrieben wird
  • sum — Summe numerischer Werte im Fenster
  • avg — Arithmetisches Mittel numerischer Werte
  • min / max — Minimaler / maximaler numerischer Wert
  • count — Anzahl der Payloads im Fenster
  • first / last — Erster / letzter beobachteter Wert für den Schlüssel (beliebiger Typ)

Nicht-numerische Werte werden für numerische Funktionen übersprungen und als Typ-Mismatch-Fehler auf dem Fehlerkanal gemeldet.

  1. Glätten verrauschter Sensordaten mit einem gleitenden Durchschnitt
  2. Pro-Minute- oder pro-Stunde-KPIs für Dashboards
  3. Batching von Events vor dem Schreiben in eine Datenbank oder einen Message-Broker
  4. Peak-Erkennung über eine feste Sample-Anzahl
{
"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" }
]
}
}
  • Wählen Sie tumbling für saubere periodische Berichte; sliding für glattere Trends
  • Verwenden Sie count-Fenster für hochfrequente Streams, bei denen Zeit nicht die natürliche Einheit ist
  • Halten Sie Fenster klein genug, um den Speicher zu begrenzen, aber groß genug, um statistisch aussagekräftig zu sein
  • Verwenden Sie first / last, um nicht-numerischen Kontext (z.B. Maschinenzustand) neben numerischen Aggregaten zu tragen