Referenz: Reconciliation-Modi¶
Reconciliation-Prüfungen umspannen mehrere Entities einer Lieferung — z. B. eine Buchungsdatei, die gegen eine Summendatei ausgeglichen sein muss. Diese Regeln liegen am Projekt (nicht an Transformern, die reine Mapper bleiben) und laufen während einer Session nach dem Transform.
Zwei Arten, eine Regel auszudrücken¶
Eine Reconciliation-Regel ist von einem von zwei Typen:
- Expression (
type: "expression"oder keintype) — in der Ausdruckssprache geschrieben und zu DuckDB-SQL geparst. - SQL (
type: "sql") — ein rohes DuckDB-SELECTim Feldsql, vor der Ausführung vom SQL-Validator (sqlglot-AST) geprüft.
Beide laufen in einer einzigen geteilten DuckDB-Verbindung pro Session, nachdem die Rollen-Parquets als Views registriert und die Wörterbuch- und Kontexttabellen geladen sind.
Wie eine SQL-Regel meldet¶
Eine SQL-Regel ist eine Abfrage, die die verletzenden Zeilen zurückgibt:
- 0 Zeilen zurück → die Regel besteht.
- Zeilen zurück → die Regel scheitert, mit
total_mismatchesgleich der Zeilenzahl und den ersten 10 Zeilen als Samples. Hat das Ergebnis eine Spaltereconcile_key, werden diese Schlüssel inmismatched_keysgesammelt.
-- Konten der Buchungsdatei ohne passenden Kontenrahmen-Eintrag
SELECT b."account" AS reconcile_key
FROM buchungen b
LEFT JOIN dict_buchungen_kontenplan d ON b."account" = d."code"
WHERE d."code" IS NULL
Was einer Regel zur Verfügung steht¶
- Rollen-Views — das transformierte Parquet jeder Entity-Rolle wird als View
registriert, abfragbar über den Rollennamen (z. B.
buchungen). - Wörterbuch-Tabellen — jedes Wörterbuch der Entity einer Rolle wird als
dict_{role}_{dictionary_name}geladen (z. B.dict_buchungen_kontenplan). - Kontexttabellen — tabellarischer Session-Kontext wird als
ctx_{table_name}materialisiert (z. B.ctx_sap_balances), sodass Sie gegen eine mitgelieferte Referenzbilanz abstimmen können.
Konzeptionelle Modi¶
Zwei Formen decken die meisten Reconciliations ab:
- Keyed — zwei Rollen über einen Gruppierungsschlüssel joinen und je Schlüssel vergleichen (die nicht zugeordneten / nicht ausgeglichenen Schlüssel werden zu Verstößen).
- Global — skalare Aggregate über Rollen vergleichen (z. B. Summe einer Datei vs. ein Total), typischerweise ein Cross Join einzeiliger Aggregate.
Sicherheit¶
SQL-Regeln durchlaufen dieselben Leitplanken: DDL/DML wie DROP TABLE wird beim
Parsen abgelehnt, blockierte Funktionen wie READ_PARQUET / READ_CSV werden
verweigert, und ein Verweis auf eine Tabelle, die nicht unter den registrierten
Views/Tabellen ist, wird mit Auflistung der verfügbaren Namen abgelehnt.