Znany problem — czynność kopiowania z bazy danych Oracle do Lakehouse kończy się niepowodzeniem dla typu danych Liczba
Działanie kopiowania z Oracle do lakehouse'u kończy się niepowodzeniem, gdy jedna z kolumn ma typ danych Liczba. W programie Oracle skala może być większa niż precyzja dla typów dziesiętnych/liczbowych. Pliki Parquet w usłudze Lakehouse wymagają, aby skala była mniejsza lub równa precyzji, więc operacja kopiowania kończy się niepowodzeniem.
stan : Otwórz
Doświadczenie produktu : Data Factory
Objawy
Podczas próby skopiowania danych z bazy danych Oracle do usługi Lakehouse jest wyświetlany błąd podobny do: ParquetInvalidDecimalPrecisionScale. Invalid Decimal Precision or Scale. Precision: 38 Scale:127
.
Rozwiązania i obejścia
Można obejść ten problem, używając zapytania w celu jawnego rzutowania kolumny na NUMBER(p,s)
lub inne typy, takie jak BINARY_DOUBLE
. W przypadku korzystania z NUMBER(p,s)
upewnij się, że p >= s
i s >= 0
. Tymczasem zakres zdefiniowany przez NUMBER(p,s)
powinien obejmować zakres wartości przechowywanych w kolumnie. Jeśli nie, zostanie wyświetlony błąd podobny do ORA-01438: value larger than specified precision allowed for this column
. Oto przykładowe zapytanie: SELECT CAST(ColA AS BINARY_DOUBLE) AS ColB FROM TableA