Problème connu : l’activité de copie d’Oracle vers lakehouse échoue pour le type de données Number
L’activité de copie d’Oracle vers un lakehouse échoue quand l’une des colonnes d’Oracle présente un type de données Nombre. Dans Oracle, l’échelle peut être supérieure à la précision pour les types décimaux/numériques. Les fichiers Parquet dans Lakehouse nécessitent que l’échelle soit inférieure ou égale à la précision, ce qui fait que l’activité de copie échoue.
État : ouvert
Expérience produit : Data Factory
Symptômes
Lorsque vous essayez de copier des données d’Oracle vers un lakehouse, vous recevez une erreur similaire à : ParquetInvalidDecimalPrecisionScale. Invalid Decimal Precision or Scale. Precision: 38 Scale:127
.
Solutions et solutions de contournement
Vous pouvez contourner ce problème à l’aide d’une requête pour convertir explicitement la colonne en NUMBER(p,s)
ou d’autres types comme BINARY_DOUBLE
. Lorsque vous utilisez NUMBER(p,s)
, vérifiez p >= s
et s >= 0
. Pendant ce temps, la plage définie par NUMBER(p,s)
doit couvrir la plage des valeurs stockées dans la colonne. Si ce n’est pas le cas, vous recevez une erreur similaire à ORA-01438: value larger than specified precision allowed for this column
. Voici un exemple de requête : SELECT CAST(ColA AS BINARY_DOUBLE) AS ColB FROM TableA