Problema noto: attività Copy da Oracle a lakehouse non riesce per il tipo di dati Numero
L'attività Copy da Oracle a un lakehouse ha esito negativo quando una delle colonne di Oracle ha un tipo di dati Numero. In Oracle la scala può essere maggiore della precisione per i tipi decimali/numerici. I file Parquet in Lakehouse richiedono che la scala sia minore o uguale alla precisione, quindi l'attività di copia ha esito negativo.
Stato: aperto
Esperienza prodotto: Data Factory
Sintomi
Quando si tenta di copiare dati da Oracle a una lakehouse, viene visualizzato un errore simile al seguente: ParquetInvalidDecimalPrecisionScale. Invalid Decimal Precision or Scale. Precision: 38 Scale:127
.
Strategie e soluzioni alternative
È possibile risolvere questo problema usando una query per eseguire la trasmissione esplicita della colonna in NUMBER(p,s)
o in altri tipi, ad esempio BINARY_DOUBLE
. Quando si usa NUMBER(p,s)
, assicurarsi p >= s
e s >= 0
. Nel frattempo, l'intervallo definito da NUMBER(p,s)
deve coprire l'intervallo dei valori archiviati nella colonna. In caso contrario, viene visualizzato un errore simile al seguente ORA-01438: value larger than specified precision allowed for this column
. Ecco una query di esempio: SELECT CAST(ColA AS BINARY_DOUBLE) AS ColB FROM TableA