Condividi tramite


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

Passaggi successivi