MIT DATEN MEHR BEWEGEN.

Aggregator

Funktionsbeschreibung und Anwendung

Der Aggregator-Block sammelt einlaufende Nachrichten. Die in Nachrichten enthaltenen Felder können entsprechend der Konfiguration verschiedenartig behandelt werden. Die Nachrichten werden in sich optional überlappenden Gruppen (Windows) basierend auf Zeit oder Anzahl zusammengefasst und verarbeitet.

agg schematic
Abbildung 1. Schematische Darstellung Funktionsweise Aggregator-Blocks

Ein Anwendungsbeispiel ist eine Minimum/Maximum-Aggregation, um das aufkommende Datenvolumen zu reduzieren. Beispielsweise laufen Temperaturdaten der Außentemperatur im Sekundentakt ein, aber statt 60 Momentan-Werte zu übertragen, können für jede Minute nur der Minimum- und Maximum-Wert übertragen werden.

Die in der folgenden Tabelle erläuterten Parameter sind für die Konfiguration notwendig.

Tabelle 1. Konfigurationsparameter Aggregator-Block
Parameter Beschreibung

Name

Name der Blockinstanz.

Into

Name der Blockinstanz des Folgeblocks an welchen Ausgabenachrichten weitergeleitet werden sollen.

Window - Based On

Auswahl des Window-Typ

  • Sample-basiertes Window: nutzt die Sample-Anzahl im Puffer, unabhängig von der Zeit. Bei einem (voll) gefülltem Windowpuffer wird mit jedem Einlaufen einer neuen Nachricht eine alte gelöscht. Bei einem gefüllten Window liegt deshalb immer eine gleiche Anzahl von Samples für nachfolgende Berechnungen vor. Das Triggern erfolgt ausschließlich anhand einlaufender Nachrichten.

  • TimeMs-basiertes Window: nutzt die Zeit in Millisekunden (timestamp) als Grundlage für das Verwerfen alter Samples aus dem Puffer. Es kann passieren, dass ganz unterschiedliche Sample-Anzahlen für eine Berechnung vorliegen. Das Fenster und die Aggregatsbildung agieren getriggert durch die Systemzeit und unabhängig von einlaufenden Nachrichten. Die Eigenschaft timestamp ist für den Windowtyp TimeMs zwingend erforderlich!

Window – Size

Die Windowgröße bestimmt den vorhandenen Puffer je nach Window-Typ sample-basiert (Wert als Anzahl) oder zeitbasiert (Wert in Millisekunden).

Window - HoppingEach

Häufigkeit einer Berechnung und Ausgabe je nach Window-Typ sample-basiert (Wert als Anzahl) oder zeitbasiert (Wert in Millisekunden). Ein hoher Wert führt seltener zu einer Ausführung und Ausgabe als ein kleiner.

Behaviour

Die verarbeitende Funktion kann für jedes Feld der einlaufenden Nachricht angegeben werden. Sollte eine ausgehende Nachricht keinen Zeitstempel (Key timestamp) besitzen, so wird dieser mit der aktuellen Zeit erzeugt.

Default

Default-Wert, der für alle Felder gilt, die nicht explizit angegeben sind.

Name

Feldname (Variablenname) im JSON der einlaufenden Nachricht

Value

Funktionsauswahl für das jeweilige Feld. Folgende Werttypen stehen zur Verfügung:

  • ignore: Daten werden verworfen und bei der Ausgabe nicht beachtet

  • collect: Sammeln der Values der einlaufenden Nachrichten des zu bewertenden „Zeitraumes“ in einem Array

  • min: minimaler Datenwert (erfordert numerische Values)

  • max: maximaler Datenwert (erfordert numerische Values)

  • first: zuerst eingelaufener Datenwert

  • last: zuletzt eingelaufener Datenwert

  • sum: Summe der eingelaufen Datenwerte (erfordert numerische Values)

  • avg: mathematisch Durchschnitt (erfordert numerische Values)

  • median: Median (erfordert numerische Values)

  • stddev: Standardabweichung (erfordert numerische Values)

  • default: legt Default-Funktion für alle nicht explizit genannten Felder fest

Beispielkonfiguration

Folgende Beispielkonfiguration ist in Abbildung 2 dargestellt:

  • „a“ ist explizit konfiguriert und wird in einem Array gesammelt (Value: "Collect") und ausgegeben.

  • „b“ wird explizit ignoriert (Value: "Ignore") und entfällt für die Ausgabenachricht.

  • Da der Timestamp nicht konfiguriert ist, erhält die Default-Funktion die Konfiguration first.

agg
Abbildung 2. Konfiguration des Aggregator-Block