Hallo Ralf,
Das ist mit dem neuen
InMemory Adapter
ab
Version 4.1.4
relativ leicht zu realisieren.
Du musst dazu die Datenquelle, die die zu zählenden Werte beinhaltet in einem vorgelagerten Verarbeitungsschritt in eine InMemory Tabelle einlesen. Es genügt, wenn du das Feld, das gezählt werden soll, mit dem
InMemory Adapter
verbindest und zusätzlich ein weiteres Feld für die Anzahl anlegst. Im InMemory Adapter gibst du an, dass du die Daten anfügen „
Option Daten hinzufügen (Insert)“ sowie aktualisieren „
Option Daten aktualisieren (Update)" möchtest, siehe Screenshot 1.
Dann musst du noch das Feld, das gezählt werden soll auf dem Reiter „
Felder / Datentypen“ als Schlüsselfeld auswählen, siehe Screenshot 2.
Jetzt benötigst du noch einen
AutoID Heater
, der die Anzahl der vorhandenen gleichen Werte zählt. Hierzu musst du in der Konfiguration die Option „
Gleiche Eingangsparameter – Alle gleichen Werte“ aktivieren, siehe Screenshot 3.
Jetzt verbindest du das Feld, das gezählt werden soll mit dem
AutoID Heater
, die Ausgabe ziehst du auf das oben angelegte Feld für die Anzahl. So wird eine „temporäre Tabelle“ gefüllt, die pro Wert (gruppiert) die aktuelle Anzahl enthält. Der
AutoID Heater
zählt pro eindeutigen Wert einen separaten Zähler fort und in der InMemory Tabelle wird dieser entweder hinzugefügt, falls noch nicht vorhanden oder aber mit dem aktuellen
neuen Wert aktualisiert.
Mit diesem Wert kannst du in weiteren Schritten arbeiten. Im angehängten Beispiel wird einmal die InMemory Tabelle einfach 1:1 in eine Textdatei ausgegeben. In einem zweiten Schritt wir die originale Datenquelle noch einmal über den
TextFile Adapter
gelesen und pro Wert die Anzahl
ausgegeben. Die aktuell ermittelte Anzahl wird dabei über den
String Replace Heater
per
Daten Lookup auf die vorher eingelesene InMemory Tabelle geholt.
Schau dir mal das Beispiel an, damit sollte es klar sein.