Condividi tramite


Problema noto: l'attività di copia da Oracle a lakehouse ha esito negativo per il tipo di dati Number

L'attività di copia da Oracle a un lakehouse ha esito negativo quando una delle colonne di Oracle ha un tipo di dati Number. 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 fallisce.

Stato: Aperto

Esperienza del 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.

Soluzioni e soluzioni alternative

È possibile risolvere questo problema usando una query per convertire esplicitamente la colonna in NUMBER(p,s) o altri tipi come BINARY_DOUBLE. Quando si usa NUMBER(p,s), assicurarsi di 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 a 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