Поделиться через


Известная проблема - действие копирования из Oracle в Lakehouse завершается сбоем для типа данных Number

Действие копирования из Oracle в лейкхаус завершается ошибкой, если один из столбцов Oracle имеет тип данных number. В Oracle масштабирование может быть больше точности для десятичных и числовых типов. Файлы Parquet в Lakehouse требуют, чтобы масштаб был меньше или равен точности, поэтому операция копирования завершается ошибкой.

Состояние : Открыто

продукт: фабрика данных

Симптомы

При попытке скопировать данные из 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

Дальнейшие действия