Aggregation-Konnektor
Übersicht
Abschnitt betitelt „Übersicht“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
Tumbling Window
Abschnitt betitelt „Tumbling Window“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.
Sliding Window
Abschnitt betitelt „Sliding Window“Ü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.
Count Window
Abschnitt betitelt „Count Window“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.
Konfigurationsparameter
Abschnitt betitelt „Konfigurationsparameter“- windowType (erforderlich):
tumbling,slidingodercount - windowSize: Fensterdauer in Millisekunden (erforderlich für
tumblingundsliding) - slideSize: Schiebeintervall in Millisekunden (wird mit
slidingverwendet) - 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
Felddefinition
Abschnitt betitelt „Felddefinition“- 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
Aggregationsfunktionen
Abschnitt betitelt „Aggregationsfunktionen“- 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.
Anwendungsfälle
Abschnitt betitelt „Anwendungsfälle“- Glätten verrauschter Sensordaten mit einem gleitenden Durchschnitt
- Pro-Minute- oder pro-Stunde-KPIs für Dashboards
- Batching von Events vor dem Schreiben in eine Datenbank oder einen Message-Broker
- Peak-Erkennung über eine feste Sample-Anzahl
Beispiel: Multi-Feld-Tumbling-Window
Abschnitt betitelt „Beispiel: Multi-Feld-Tumbling-Window“{ "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" } ] }}Best Practices
Abschnitt betitelt „Best Practices“- Wählen Sie
tumblingfür saubere periodische Berichte;slidingfü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
Verwandte Konnektoren
Abschnitt betitelt „Verwandte Konnektoren“- Trigger - Bedingte Logik auf aggregierten Werten
- Anomaly Detection - Ausreißer erkennen
- Chart - Aggregierte Serien visualisieren