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