Delen via


Bekend probleem: kopieeractiviteit van Oracle naar lakehouse mislukt voor het gegevenstype Number

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 dan of gelijk aan de precisie is, waardoor de kopieeractiviteit kan mislukken.

status: Open

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 NUMBER(p,s)gebruikt, moet u ervoor zorgen dat p >= s en s >= 0aanwezig zijn. Ondertussen moet het bereik dat is gedefinieerd door NUMBER(p,s) betrekking hebben op het bereik van de waarden die zijn opgeslagen in de kolom. Zo niet, dan krijgt u een foutmelding die lijkt op 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

Volgende stappen