Udostępnij za pośrednictwem


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

Następne kroki