Bekend probleem: Copy-activiteit van Oracle naar lakehouse mislukt voor het gegevenstype Getal
De kopieeractiviteit van Oracle naar een lakehouse mislukt wanneer een van de kolommen van Oracle een gegevenstype Getal heeft. In Oracle kan schaal groter zijn dan precisie voor decimale/numerieke typen. Parquet-bestanden in Lakehouse vereisen dat de schaal kleiner is dan of gelijk is aan precisie, zodat de kopieeractiviteit mislukt.
Status: Openen
Productervaring: Data Factory
Symptomen
Wanneer u gegevens probeert te kopiƫren van Oracle naar een lakehouse, krijgt u een foutmelding die vergelijkbaar is met: ParquetInvalidDecimalPrecisionScale. Invalid Decimal Precision or Scale. Precision: 38 Scale:127
.
Oplossingen en tijdelijke oplossingen
U kunt dit probleem omzeilen door een query te gebruiken om de kolom expliciet te casten naar NUMBER(p,s)
of andere typen, zoals BINARY_DOUBLE
. Wanneer u dit gebruikt NUMBER(p,s)
, zorg er dan voor p >= s
en s >= 0
. Ondertussen moet het bereik dat is NUMBER(p,s)
gedefinieerd, betrekking hebben op het bereik van de waarden die zijn opgeslagen in de kolom. Als dat niet het probleem is, krijgt u een foutmelding die vergelijkbaar is met ORA-01438: value larger than specified precision allowed for this column
. Hier volgt een voorbeeldquery: SELECT CAST(ColA AS BINARY_DOUBLE) AS ColB FROM TableA