Zum Hauptinhalt springen

Script Transformation

Fragestellung und Ziel

Wie passen Sie ein Rohereignis an, dessen Struktur noch nicht für Auswertungen geeignet ist? Eine kleine Transformation kann beispielsweise einen Zahlenwert aus einem Textfeld übernehmen oder einen Zeitstempel vereinheitlichen.

Umsetzung in Bytefabrik

Der Transformationseditor der StreamPipes-Anbindung verarbeitet Beispieldaten vor der abschließenden Schemafestlegung. Für JavaScript verwendet er transform(event, out, ctx). Das Ergebnis wird mit out.collect(...) ausgegeben; die Vorschau hilft beim Vergleich von Eingabe und Ausgabe. Verfügbare Sprachen hängen von der Installation ab.

Dieses Beispiel erwartet timestamp_ms als numerische Ereigniszeit in Millisekunden und temperature_raw als Zahl oder nicht leeren Zahlentext:

function transform(event, out, ctx) {
const raw = event.temperature_raw;
if (raw === null || raw === undefined || String(raw).trim() === '') {
throw new Error('temperature_raw fehlt');
}
const temperature = Number(raw);
if (!Number.isFinite(temperature) ||
typeof event.timestamp_ms !== 'number' ||
!Number.isFinite(event.timestamp_ms)) {
throw new Error('Messwert oder Zeitstempel ist ungültig');
}
out.collect({
timestamp: event.timestamp_ms,
temperature: temperature,
machineId: event.machineId,
});
}

Markieren Sie danach das Zeitfeld im Schema. Das Beispiel macht ungültige Eingaben explizit sichtbar; das gewünschte Fehlerverhalten im laufenden Adapter muss separat geprüft werden.

Best Practices und Hinweise

Halten Sie Scripts auf eine klar benannte Aufgabe begrenzt. Testen Sie normale Werte, fehlende Felder und Grenzfälle. Ersetzen Sie fehlende Messwerte nicht ungeprüft durch null oder null durch numerische Null.

Eine neu hinzugefügte aktuelle Uhrzeit ist Erfassungszeit, keine nachträglich rekonstruierte Maschinenzeit. Zustandsbehaftete fachliche Logik gehört in eine geeignete Pipeline beziehungsweise AI Pipeline, nicht in ein unübersichtliches Anbindungsscript.