Bekanntes Problem – Copy-Aktivität von Oracle nach Lakehouse schlägt für den Datentyp Zahl fehl
Die Copy-Aktivität von Oracle in ein Lakehouse schlägt fehl, wenn einer der Spalten von Oracle einen Datentyp Zahl aufweist. In Oracle kann die Skalierung größer als die Genauigkeit für Dezimal-/numerische Typen sein. Parquet-Dateien in Lakehouse erfordern, dass der Maßstab kleiner oder gleich der Genauigkeit ist, sodass die Copy-Aktivität fehlschlägt.
Status: Offen
Produktbereich: Data Factory
Problembeschreibung
Wenn Sie versuchen, Daten aus Oracle in ein Lakehouse zu kopieren, erhalten Sie eine Fehlermeldung wie: ParquetInvalidDecimalPrecisionScale. Invalid Decimal Precision or Scale. Precision: 38 Scale:127
.
Lösungen und Problemumgehungen
Sie können dieses Problem umgehen, indem Sie eine Abfrage verwenden, um die Spalte explizit in NUMBER(p,s)
oder andere Typen wie BINARY_DOUBLE
umzuwandeln. Stellen Sie bei Verwendung von NUMBER(p,s)
sicher, dass p >= s
und s >= 0
angegeben sind. In der Zwischenzeit sollte der durch NUMBER(p,s)
definierte Bereich den Bereich der in der Spalte gespeicherten Werte abdecken. Andernfalls wird ein ähnlicher Fehler wie ORA-01438: value larger than specified precision allowed for this column
angezeigt. Dies ist eine Beispielabfrage: SELECT CAST(ColA AS BINARY_DOUBLE) AS ColB FROM TableA