既知の問題 - Number データ型で Oracle からレイクハウスへの Copy アクティビティが失敗する
Oracle からレイクハウスへの Copy アクティビティは、Oracle の列の 1 つに Number データ型がある場合に失敗します。 Oracle では、小数点以下桁数は 10 進/数値型の有効桁数を超えることができます。 Lakehouse の Parquet ファイルでは、スケールが有効桁数以下である必要があるため、Copy アクティビティは失敗します。
状態: オープン
製品エクスペリエンス: 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