既知の問題 - 数値データ型の Oracle から lakehouse へのコピー アクティビティが失敗する
Oracle から lakehouse へのコピー アクティビティは、Oracle の列の 1 つに Number データ型がある場合に失敗します。 Oracle では、10進/数値型において、スケールが精度を超えることがあります。 Lakehouse の Parquet ファイルでは、スケールが精度以下である必要があり、コピー アクティビティが失敗します。
ステータス: オープン
製品エクスペリエンス: データファクトリー
症状
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