2017-12-01 1 views
0

Ich versuche, eine Lookup-Transformation zu verwenden, um ACCT_ID aus der ACCT Tabelle basierend auf dem Port CUST_DDA zu extrahieren, der ein Ausgabeport von einem Ausdruck ist. Ich benutze ein sqloverride wie unten. Die anfängliche Lookup Bedingung:Gibt es eine Möglichkeit, den Wert vom CUST_DDA-Port als Eingabe-Port für die Suche zu verwenden?

SUBSTR_ACCT_ID = IN_CUST_DDA 

Aufschalten:

SELECT 
ACCT.ACCT_ID as ACCT_ID, 
ACCT.ALT_ACCT_ID as ALT_ACCT_ID, 
substr(acct.acct_id,-1*(length(IN_CUST_DDA))) as SUBSTR_ACCT_ID 
FROM ACCT 
WHERE ACCT.ALT_ACCT_ID LIKE '%'||TO_CHAR(IN_CUST_DDA) 
AND ACCT.ACCT_ID LIKE '%'||TO_CHAR(IN_CUST_DDA) 

Die obige SQL-Überschreibung wird auf die Fehler aufgrund Fehler: ORA-00904: "IN_CUST_DDA": ungültige Kennung

Gibt es eine Möglichkeit den Wert vom CUST_DDA-Port als Eingabe-Port für die Suche zu verwenden. CUST_DDA ist kein Feld, das zur ACCT-Tabelle gehört. Gibt es einen Weg, dies zu tun?

Danke.

Antwort

0

Von der Überschreibung kann ich sehen, dass Sie IN_CUST_DDA in CHAR, auch zur gleichen Zeit Ihres mit IN_CUST_DDA in der Länge zu konvertieren versuchen.

Könnte die Längenfunktion sein, die das Problem verursacht, weil die Längenfunktion zusammen mit einer Zeichenfolge verwendet werden kann.

0

Um CUST_DDA (aus der Quelle) in Ihrer Lookup-Override zu verwenden. Sie müssen die Nachschlagetabelle mit der Quelle mit einem gemeinsamen Feld in der Überschreibung verbinden.

Sie können den Port nicht wie oben erwähnt verwenden. Wenn Sie den Workflow ausführen, führt der Informatica-Integrationsservice die Lookup-Override-Abfrage in der Datenbank aus und ruft die Daten in die Cachedatei ab (aus diesem Grund erhalten Sie den Fehler "IN_CUST_DDA": ungültiger Bezeichner). Sobald die Cache-Datei fertig ist, wendet sie die Bedingungen an und holt dann die Ausgabe für Sie.

Lassen Sie mich wissen, wenn Sie auf diesen

Grüßen Raj

0

Um dies zu erreichen Sie sind nicht klar benötigen Lookup als nicht im Cache gespeichert zu konfigurieren, so dass die Abfrage für jede Eingabezeile ausgeführt werden. Beachten Sie, dass dies die Leistung stark beeinträchtigt. Als nächstes müssen Sie eine etwas andere Syntax verwenden, indem Sie den Eingabeport in Fragezeichen einschließen. Hier ist eine example. In Ihrem Fall sollte es so etwas wie (das könnte ein wenig Anpassung benötigen):

SELECT 
ACCT.ACCT_ID as ACCT_ID, 
ACCT.ALT_ACCT_ID as ALT_ACCT_ID, 
substr(acct.acct_id,-1*(length(?IN_CUST_DDA?))) as SUBSTR_ACCT_ID 
FROM ACCT 
WHERE ACCT.ALT_ACCT_ID LIKE '%'||TO_CHAR(?IN_CUST_DDA?) 
AND ACCT.ACCT_ID LIKE '%'||TO_CHAR(?IN_CUST_DDA?) 
Verwandte Themen