Partager via


Problème connu : activité Copy d’Oracle vers le lakehouse échoue pour le type de données Numéro

L’activité de copie d’Oracle vers un lakehouse échoue quand l’une des colonnes d’Oracle a un type de données Number. 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.

Statut : 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 méthodes de contournement

Vous pouvez contourner ce problème en utilisant une requête pour caster explicitement la colonne en NUMBER(p,s) ou en d’autres types, comme BINARY_DOUBLE. Quand vous utilisez NUMBER(p,s), vérifiez que p >= s et que s >= 0. Par ailleurs, 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

Étapes suivantes