알려진 문제 - Number 데이터 형식에 대해 Oracle에서 lakehouse로의 복사 작업 실패
Oracle의 열 중 하나에 Number 데이터 형식이 있는 경우 Oracle에서 레이크하우스로의 복사 작업이 실패합니다. Oracle에서 소수 자릿수는 소수/숫자 형식의 전체 자릿수보다 클 수 있습니다. 레이크하우스의 Parquet 파일은 소수 자릿수가 전체 자릿수보다 작거나 같아야 하므로 복사 작업이 실패합니다.
상태: 열기
제품 환경: Data Factory
증상
Oracle에서 레이크하우스로 데이터를 복사하려고 하면 다음과 유사한 오류가 발생합니다. 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