Γνωστό πρόβλημα - Η αντιγραφή δραστηριότητας από το Oracle σε lakehouse αποτυγχάνει για τον τύπο δεδομένων "Αριθμός"
Η δραστηριότητα αντιγραφής από την Oracle σε μια λίμνη αποτυγχάνει όταν μία από τις στήλες από την Oracle έχει τύπο δεδομένων Number. Στην Oracle, η κλιμάκωση μπορεί να είναι μεγαλύτερη από την ακρίβεια για τους δεκαδικούς/αριθμητικούς τύπους. Τα αρχεία Parquet στο Lakehouse απαιτούν η κλίμακα να είναι μικρότερη ή ίση με την ακρίβεια, επομένως η δραστηριότητα αντιγραφής αποτυγχάνει.
κατάσταση : Άνοιγμα
Εμπειρία προϊόντος : Data Factory
Συμπτώματα
Όταν προσπαθείτε να αντιγράψετε δεδομένα από την Oracle σε μια λίμνη, λαμβάνετε ένα σφάλμα παρόμοιο με το: ParquetInvalidDecimalPrecisionScale. Invalid Decimal Precision or Scale. Precision: 38 Scale:127
.
Λύσεις και λύσεις
Μπορείτε να επιλύσετε αυτό το ζήτημα χρησιμοποιώντας ένα ερώτημα για ρητή μετατροπή της στήλης σε NUMBER(p,s)
ή άλλους τύπους, όπως BINARY_DOUBLE
. Όταν χρησιμοποιείτε το NUMBER(p,s)
, βεβαιωθείτε ότι p >= s
και s >= 0
. Εν τω μεταξύ, το εύρος που ορίζεται από NUMBER(p,s)
θα πρέπει να καλύπτει το εύρος των τιμών που είναι αποθηκευμένες στη στήλη. Εάν όχι, λαμβάνετε ένα σφάλμα παρόμοιο με το ORA-01438: value larger than specified precision allowed for this column
. Ακολουθεί ένα δείγμα ερωτήματος: SELECT CAST(ColA AS BINARY_DOUBLE) AS ColB FROM TableA