Znany problem — działanie Kopiuj z oracle do lakehouse kończy się niepowodzeniem dla typu danych Liczba
Działanie kopiowania z bazy danych Oracle do usługi Lakehouse kończy się niepowodzeniem, gdy jedna z kolumn z bazy danych Oracle 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 jest mniejsza niż lub równa precyzji, więc działanie kopiowania kończy się niepowodzeniem.
Stan: Otwórz
Środowisko 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żesz obejść ten problem, używając zapytania, aby jawnie rzutować kolumnę na NUMBER(p,s)
lub inne typy, takie jak BINARY_DOUBLE
. W przypadku korzystania z NUMBER(p,s)
polecenia upewnij się, że p >= s
polecenie 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