Set Mapping variable in Ausdruck und Nutzung in Quell-Filter
Ich habe zwei Tabellen in verschiedenen Datenbanken. In einer Tabelle A die Daten in der anderen Tabelle B sind die Daten für das inkrementelle laden der Daten aus der ersten Tabelle. Ich möchte zum laden aus der Tabelle B und speichert das Datum des letzten erfolgreichen laden aus Tabelle A in einer mapping-variable $$LOAD_DATE
. Um dies zu erreichen, lese ich ein Datum aus Tabelle B und verwenden Sie die SETVARIABLE()
Funktion in einen Ausdruck zum festlegen des $$LOAD_DATE
variable. Der Hafen, in dem ich das Tue, ist gekennzeichnet als Ausgabe und schreibt in ein dummy-flat-Datei. Ich lese nur auf Zeile dieser Quelle!
Dann nutze ich diese $$LOAD_DATE
- variable in der Quelle-Filter der Source Qualifier der Tabelle A nur laden neuer Datensätze, die jünger sind als das Datum gespeichert, in der $$LOAD_DATE
variable.
Mein problem ist, dass ich nicht in der Lage, die $$LOAD_DATE
variable korrekt. Es ist immer das Datum 1753-1-1-00.00.00
, das ist der default-Wert für die Zuordnung von Variablen vom Typ Datum/Zeit.
Wie löse ich dieses? Wie kann ich ein Datum speichern in die variable, und verwenden Sie es später in einer Source Qualifiers source filter? Ist es überhaupt möglich?
EDIT: Tabelle A hat zu viel Datensätze Sie alle gelesen und filtern Sie später. Dies wäre zu teuer, so dass Sie gefiltert werden müssen an der Quelle-filter-Ebene.
InformationsquelleAutor htz | 2016-03-09
Du musst angemeldet sein, um einen Kommentar abzugeben.
Ist es nicht möglich, ein mapping von Variablen und verwenden Sie es Wert ist, irgendwo anders in der gleichen ausführen, weil die variable auch tatsächlich gesetzt wird, wenn die Sitzung abgeschlossen ist.
Wenn Sie wirklich wollen, es zu implementieren, mit Zuordnung von Variablen erstellen Sie zwei Funktionen, eine für die Einstellung der mapping-variable und eine für die tatsächliche inkrementelles laden. Können Sie ein mapping-variable mit dem Wert von einer Sitzung zur anderen in einem workflow mit einem workflow-variable. https://stackoverflow.com/a/26849639/2626813
Andere Lösung wäre die Verwendung einer lookup auf B-und a-filter nach.
Kann man auch schreiben einige Skripte, Abfrage, Tabelle B, und ändern Sie die parameter-Datei mit den neuesten $LOAD_DATE Wert vor der Ausführung des Mappings.
InformationsquelleAutor Samik
Ja, es ist möglich.
In der ersten Karte haben Sie zum initialisieren der Variablen, wie folgt:
In der ersten session Konfiguration, die Sie haben zu definieren, die Post-session auf Erfolg variable Zuordnung:
Die zweite Karte (mit der Tabelle A) der variable nach dieser Konfiguration der session in Pre-session-variable Zuordnung:
Wird es funktionieren.
InformationsquelleAutor Lev
Da wir mit zwei verschiedenen DBs verwenden Sie zwei Sitzungen. Holen Sie sich die Werte in der ersten und pass die Parameter an die zweite.
InformationsquelleAutor Maciejg