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
RtIdzeigen, 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, wennarchiveRtIdfehlt oder das Archiv im aktuellen Tenant nicht aufgelöst werden kann.