ปัญหาที่ทราบแล้ว - คัดลอกกิจกรรมจาก 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