Known issue - Copy activity from Oracle to lakehouse fails for Number data type
The copy activity from Oracle to a lakehouse fails when one of the columns from Oracle has a Number data type. In Oracle, scale can be greater than precision for decimal/numeric types. Parquet files in Lakehouse require the scale be less than or equal to precision, so the copy activity fails.
Status: Open
Product Experience: Data Factory
Symptoms
When trying to copy data from Oracle to a lakehouse, you receive an error similar to: ParquetInvalidDecimalPrecisionScale. Invalid Decimal Precision or Scale. Precision: 38 Scale:127
.
Solutions and workarounds
You can work around this issue by using a query to explicitly cast the column to NUMBER(p,s)
or other types like BINARY_DOUBLE
. When using NUMBER(p,s)
, ensure p >= s
and s >= 0
. Meanwhile, the range defined by NUMBER(p,s)
should cover the range of the values stored in the column. If not, you receive an error similar to ORA-01438: value larger than specified precision allowed for this column
. Here's a sample query: SELECT CAST(ColA AS BINARY_DOUBLE) AS ColB FROM TableA