Κοινή χρήση μέσω


Γνωστό πρόβλημα - Η αντιγραφή δραστηριότητας από το 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

Επόμενα βήματα