Γνωστό πρόβλημα - Η αντιγραφή δραστηριότητας από το Oracle σε lakehouse αποτυγχάνει για τον τύπο δεδομένων "Αριθμός"
Η δραστηριότητα αντιγραφής από την Oracle σε μια λίμνη αποτυγχάνει όταν μία από τις στήλες από την Oracle έχει τύπο δεδομένων Αριθμός . Στην Oracle, η κλιμάκωση μπορεί να είναι μεγαλύτερη από την ακρίβεια για τους δεκαδικούς/αριθμητικούς τύπους. Τα αρχεία Parquet στο Lakehouse απαιτούν η κλίμακα να είναι μικρότερη ή ίση με την ακρίβεια, επομένως η δραστηριότητα αντιγραφής αποτυγχάνει.
Κατάσταση: Άνοιγμα
Εμπειρία προϊόντος: Data Factory
Συμπτώματα
Όταν προσπαθείτε να αντιγράψετε δεδομένα από την Oracle σε ένα lakehouse, λαμβάνετε ένα σφάλμα παρόμοιο με το: 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