แชร์ผ่าน


ปัญหาที่ทราบแล้ว - คัดลอกกิจกรรมจาก Oracle ไปยัง lakehouse ล้มเหลวสําหรับชนิดข้อมูล Number

กิจกรรมการคัดลอกจาก Oracle ไปยัง lakehouse ล้มเหลวเมื่อหนึ่งในคอลัมน์จาก Oracle มีชนิดข้อมูล Number ใน Oracle สเกลสามารถมีค่ามากกว่าความแม่นยําสําหรับชนิดทศนิยม/ตัวเลข ไฟล์ Parquet ใน Lakehouse ต้องการมาตราส่วนน้อยกว่าหรือเท่ากับความแม่นยํา ดังนั้นกิจกรรมการคัดลอกจึงล้มเหลว

สถานะ : เปิด

ประสบการณ์ผลิตภัณฑ์ : โรงงานข้อมูล

อาการ

เมื่อพยายามคัดลอกข้อมูลจาก Oracle ไปยัง lakehouse คุณจะได้รับข้อผิดพลาดที่คล้ายกับ: 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

ขั้นตอนถัดไป