Tunnettu ongelma : toimintojen kopiointi Oraclesta Lakehouseen epäonnistuu Luvun-tietotyypin kohdalla
Tietojen kopiointi Oraclesta Lakehouseen epäonnistuu, kun jonkin Oraclen sarakkeen tietotyyppi on Number. Oraclessa skaalaus voi olla suurempi kuin desimaali-/numeeristen tyyppien tarkkuus. Lakehousen parquet-tiedostot edellyttävät, että asteikko on pienempi tai yhtä suuri kuin tarkkuus, joten kopiointitoiminto epäonnistuu.
Tila: Avaa
tuotekokemus: Data Factory
Oireet
Kun yrität kopioida tietoja Oraclesta Lakehouseen, saat seuraavanlaisen virheen: ParquetInvalidDecimalPrecisionScale. Invalid Decimal Precision or Scale. Precision: 38 Scale:127
.
Ratkaisut ja ratkaisut
Voit kiertää tämän ongelman käyttämällä kyselyä, joka nimenomaisesti muuntaa sarakkeen NUMBER(p,s)
tai muille tyypeille, kuten BINARY_DOUBLE
. Kun käytät NUMBER(p,s)
, varmista, että p >= s
ja s >= 0
. Samaan aikaan NUMBER(p,s)
määrittämän alueen pitäisi kattaa sarakkeeseen tallennettujen arvojen alue. Jos näin ei ole, näyttöön tulee ORA-01438: value larger than specified precision allowed for this column
kaltainen virhe. Tässä on esimerkkikysely: SELECT CAST(ColA AS BINARY_DOUBLE) AS ColB FROM TableA