Известная проблема - действие копирования из 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