DsModGate dient zum Stagen aus einer Produktion. Ziel ist die Entlastung von Quellsystemen: dieselben Daten sollen nicht mehrfach für Umgebungen wie DEV, TEST oder QA importiert werden. Das Modul ist eine Weiche, die datasqill zwischen den Quellimport schaltet. Bei entsprechender Konfiguration lädt sie die Daten aus der produktiven DWH-Datenbank statt erneut aus der Quelle (SAP, Web Service, Fremddatenbank).
In der GUI wählt man DsModGate nicht aus. runJavaModule.sh startet es als Java-Einstieg und übergibt das eigentliche Importmodul mit -DmoduleClass. Beim Validate geht die Anfrage unverändert an dieses Modul. Beim Run kann die Weiche den Original-Load durch einen Load aus der produktiven DWH-Tabelle ersetzen (stageFromDB bzw. Snowflake-cloneFromDB). Ist der Ersatz nicht möglich, läuft der Originalimport.
| Name | Bedeutung |
|---|---|
| Modul | (in der GUI nicht wählbar) |
| Modulklasse | DsModGate |
| Typ | Java |
| Zweck | Weiche für Quellimporte: Daten aus dem produktiven DWH stagen statt die Quelle mehrfach zu belasten |
| Transformationscode | vom delegierten Modul |
| Quellen / Ziele | vom delegierten Modul |
Alle folgenden Bedingungen müssen erfüllt sein. Sonst läuft das Originalmodul.
-DmoduleClass ist gesetzt (bei jedem Start Pflicht; sonst Fehler -101).-DsourceObjectTypeId oder ein eingebautes Mapping zur Modulklasse.stageFromDB und/oder cloneFromDB.Eingebaute Quell-Objekttypen:
| Modulklasse | Objekttyp-ID | Typische Quelle |
|---|---|---|
| DsModRemote | 1 | Datenbanktabelle |
| DsModSAP | 10 | SAP-Tabelle |
| DsModWebServiceClient | 8 | Web Service |
Andere Module (Insert, Check, Call procedure, Send E-Mail, …) gehen immer an moduleClass. Sie werden nicht umgeschrieben.
Diese Parameter stehen an der Quell-Connection (SQTS_DB_<id>), nicht am Ziel.
| Name | Bedeutung |
|---|---|
| stageFromDB | datasqill-Connection-ID einer Alternativdatenbank, in der die Zieltabelle bereits liegt (gleiches Schema und gleicher Tabellenname). |
| cloneFromDB | Name einer Snowflake-Datenbank, aus der die Zieltabelle per CLONE erzeugt werden kann. Nur wenn das Ziel Snowflake ist. Sind beide gesetzt, gilt auf Snowflake cloneFromDB, stageFromDB wird ignoriert. |
Das Gate öffnet Staging- und Ziel-Connection und vergleicht die Metadaten von <schema>.<table> (das Ziel). Die Staging-Kopie wird nur verwendet, wenn:
SQDV_* und bei Tabelle SAP_CE10058 zusätzlich ZEITSTEMPEL fehlen im generierten SELECT)Dann läuft nicht das Originalmodul. Stattdessen baut das Gate eine Action Load from Database (DsModRemote), die aus der Staging-Tabelle liest und ins echte Ziel schreibt:
N, wenn der Zielname mit VV_ beginnt, sonst YSELECT <passende Spalten> FROM <schema>.<table>Im Run-Log steht stageFromDB <id> will be used oder der Grund, warum Staging nicht genutzt wurde (Dummy-Connection, leere Tabelle, Schema-Abweichung, …).
Mit JVM-Property -DdoAnonymize=Y kann jede selektierte Spalte durch einen Ausdruck aus dws_konfig.vv_anonymisierung ersetzt werden (schema_name, tabellen_name, spalten_name → ausdruck). Default ist N. Anonymisierung gilt nur für stageFromDB, nicht für Snowflake-Clone.
Ist die Zieldatenbank Snowflake und cloneFromDB gesetzt, droppt das Gate die Zieltabelle und legt sie neu an mit:
CREATE TABLE <schema>.<table> CLONE <cloneFromDB>.<schema>.<table>
Schlägt der Clone fehl, versucht es UNDROP TABLE, um die vorherige Tabelle wiederherzustellen. rows_processed ist die Zeilenzahl der geklonten Tabelle. Clone und Anonymisierung schließen sich aus.
Diese setzt der Module-Runner, nicht die GUI.
| Name | Bedeutung |
|---|---|
| -DmoduleClass | Java-Klasse des echten Moduls (Pflicht), z. B. DsModRemote. |
| -DsourceObjectTypeId | Überschreibt den eingebauten Objekttyp der Quelle für die Suche nach stageFromDB / cloneFromDB. |
| -DdoAnonymize | Y oder N (Default N). Spaltenausdrücke aus dws_konfig.vv_anonymisierung bei stageFromDB. |
runJavaModule.sh startet:
java ... -DmoduleClass=${MODULE_CLASS} ... DsModGate
Fehlt die produktive Kopie, ist die Tabelle leer oder das Schema abweichend, fällt datasqill auf den Originalimport zurück, ohne dass das Gate selbst fehlschlägt.