Mancata corrispondenza del tipo DTS al joul
-
29-09-2020 - |
Domanda
Sono nuovo per ETL e VB in generale e ho bisogno di qualche aiuto per risolvere questo problema.Ho guardato online e ho trovato alcune risposte interessanti ma nessuno sembra funzionare per me.
varamt = Lookup (
"Lookup_tbl1",
[Lookup_tbl1].[Amount],
Array(DTSSource("DEPT_ID"), DTSSource("ACCT_ID")))
IF NOT isEmpty(varamt) or NOT isNULL(varamt) or NOT varamt="" THEN
DTSDestination("AMOUNT") = varamt
ELSE
DTSDestination("AMOUNT") = DTSSource("AMOUNT")
END IF
.
Lookup_tbl1
ha ACCT_ID
e DEPT_ID
come le chiavi primarie.La mia tabella di destinazione non ha questi come chiave primaria e ACCT_ID
ha valori NULL
nella tabella.Dept_ID
e Acct_ID
sono Varchar.
Quando ho provato questa trasformazione in cui ACCT_ID
era notNULL
, ha funzionato, ma non nella tabella dove voglio che funzioni.
Ecco il messaggio di errore che ottengo:
Inserting into [AMOUNT] ...
Error details: The number of failing rows exceeds the maximum specified.
(Microsoft Data Transformation Services (DTS) Data Pump (80020101):
Error Code: 0 Error Source= Microsoft VBScript runtime error
Error Description: Type mismatch: 'Join' Error on Line 36)
Execution Failed.`
.
Non c'è la linea 36 nel mio codice.Si prega di suggerire soluzioni / puntatori.
Soluzione
OK.Sono stato in grado di trovare la causa principale (si spera) e la circondarlo.Molto probabilmente il motivo è stato il tipo di mancata corrispondenza del tipo "Iscriviti" perché ACCT_ID
era NULL
nel tavolo di origine.
Il sotto ha funzionato bene:
IF NOT isNULL(DTSSource("ACCT_ID"))
varamt = Lookup ("Lookup_tbl1",
[Lookup_tbl1].[Amount],
Array(DTSSource("DEPT_ID"), DTSSource("ACCT_ID")))
IF (NOT isEmpty(varamt) or NOT isNULL(varamt)) or varamt<>"" THEN
DTSDestination("AMOUNT") = varamt
ELSE
DTSDestination("AMOUNT") = DTSSource("AMOUNT")
END IF
ELSE
DTSDestination("AMOUNT") = DTSSource("AMOUNT")
END IF
.