Problema conhecido – a atividade Copy do Oracle para o lakehouse falha para o tipo de dados Number
A atividade Copy do Oracle para um lakehouse falha quando uma das colunas do Oracle tem um tipo de dados Number. No Oracle, a escala pode ser maior que a precisão para tipos decimal/numéricos. Os arquivos Parquet no Lakehouse exigem que a escala seja menor ou igual à precisão, portanto, a atividade Copy falha.
Status: aberto
Experiência de produto: Data Factory
Sintomas
Ao tentar copiar dados do Oracle para um lakehouse, você recebe um erro semelhante a: ParquetInvalidDecimalPrecisionScale. Invalid Decimal Precision or Scale. Precision: 38 Scale:127
.
Soluções e soluções alternativas
Você pode contornar esse problema usando uma consulta para converter explicitamente a coluna em NUMBER(p,s)
ou outros tipos, como BINARY_DOUBLE
. Ao usar NUMBER(p,s)
, verifique p >= s
e s >= 0
. Enquanto isso, o intervalo definido por NUMBER(p,s)
deve abranger o intervalo dos valores armazenados na coluna. Caso contrário, você receberá um erro semelhante ao ORA-01438: value larger than specified precision allowed for this column
. Aqui está uma consulta de exemplo: SELECT CAST(ColA AS BINARY_DOUBLE) AS ColB FROM TableA