Zum Hauptinhalt springen

BackfillFromRtEntity@1

Der Node BackfillFromRtEntity@1 ergänzt fehlende Attribute in einer Liste von EntityUpdateInfo<RtEntity>-Elementen, indem er ihre persistenten Gegenstücke aus MongoDB liest. Die Column-Spezifikation des Zielarchivs bestimmt das Schema — jeder Column-Pfad, der auf einem Update-Element noch nicht befüllt ist, wird aus der passenden RtEntity geladen (nachgeschlagen über die eigene RtId des Elements).

Typische Platzierung: unmittelbar vor SaveStreamDataInArchive@1 in Event-Sourced-Pipelines (z. B. Loxone-State-Polling, MQTT-Topic-Streams), bei denen jedes vorgelagerte Ereignis nur ein Attribut trägt. Ohne Backfill treffen diese Zeilen auf etwaige Required/NOT NULL-Columns der archivspezifischen CrateDB-Tabelle, und das Insert schlägt fehl.

Adapter-Voraussetzungen​

Node-Konfiguration​

Zum Feld path siehe Überblick.

transformations:
- type: BackfillFromRtEntity@1
path: $._updateItems # JSONPath to the List<EntityUpdateInfo<RtEntity>>
archiveRtId: 65d5c447b420da3fb12381bc # Runtime id of the target CkArchive — its Columns drive the backfill

Verhalten​

  • Pro Update-Element werden nur Attribute aus MongoDB geladen, die von der Column-Spezifikation des Archivs benannt werden und im laufenden Update noch nicht gesetzt sind. Bereits befüllte Werte werden niemals überschrieben.
  • Mehrere Update-Elemente, die auf dieselbe RtId zeigen, teilen sich einen einzigen MongoDB-Lookup (Cache pro Aufruf).
  • Hat das Archiv keine benutzerdefinierten Columns (nur die Standard-Zeitreihen-Columns), ist der Node ein No-op-Durchlauf.
  • Existiert die persistente Entität nicht, bleibt das Update unverändert und die Pipeline fährt fort.
  • Wirft eine InvalidOperationException, wenn archiveRtId fehlt oder das Archiv im aktuellen Tenant nicht aufgelöst werden kann.