หมายเหตุ
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลอง ลงชื่อเข้าใช้หรือเปลี่ยนไดเรกทอรีได้
การเข้าถึงหน้านี้ต้องได้รับการอนุญาต คุณสามารถลองเปลี่ยนไดเรกทอรีได้
ใน OneLake คุณสามารถทํางานกับตารางได้อย่างราบรื่นทั้งในรูปแบบ Delta Lake และ Apache Iceberg
ความยืดหยุ่นนี้จะเปิดใช้งานผ่าน การจําลองเสมือนของเมตาดาต้า ซึ่งเป็นคุณลักษณะที่อนุญาตให้ตาราง Iceberg ได้รับการแปลเป็นตาราง Delta Lake และในทางกลับกันด้วย คุณสามารถเขียนตาราง Iceberg โดยตรงหรือสร้างทางลัดไปยังตารางเหล่านี้ทําให้ตารางเหล่านี้สามารถเข้าถึงได้ทั่วทั้งปริมาณงาน Fabric ต่าง ๆ ในทํานองเดียวกัน ตาราง Fabric ที่เขียนในรูปแบบ Delta Lake สามารถอ่านได้โดยใช้ตัวอ่าน Iceberg
เมื่อคุณเขียนหรือสร้างทางลัดไปยังโฟลเดอร์ตาราง Iceberg แล้ว OneLake จะสร้างเมตาดาต้า Delta Lake เสมือน (บันทึก Delta) สําหรับตารางโดยอัตโนมัติ ทําให้สามารถใช้งานด้วยปริมาณงาน Fabric ในทางกลับกัน ตาราง Delta Lake ตอนนี้มีเมตาดาต้า Iceberg เสมือนให้ความเข้ากันได้กับผู้อ่าน Iceberg
ในขณะที่บทความนี้มีคําแนะนําสําหรับการใช้ตาราง Iceberg กับ Snowflake คุณลักษณะนี้มีไว้เพื่อทํางานกับตาราง Iceberg ใด ๆ ที่มีไฟล์ข้อมูลที่จัดรูปแบบ Parquet ในที่เก็บข้อมูล
จําลองตารางทะเลสาบ Delta เป็น Iceberg
ในการตั้งค่าการแปลงโดยอัตโนมัติและการแสดงผลข้อมูลเสมือนของตารางจากรูปแบบ Delta Lake เป็นรูปแบบ Iceberg ให้ทําตามขั้นตอนเหล่านี้
ตรวจสอบให้แน่ใจว่า
Tablesตาราง Delta Lake ของคุณ หรือทางลัดไปยังตารางนั้น อยู่ในส่วนของรายการข้อมูลของคุณ รายการข้อมูลอาจเป็นบ้านพักริมทะเลสาบหรือรายการข้อมูล Fabric อื่น ๆเคล็ดลับ
ถ้าเลคเฮ้าส์ของคุณเปิดใช้งาน schema แล้วไดเรกทอรีตารางของคุณจะตั้งอยู่ภายใน schema โดยตรง เช่น
dboถ้าเลคเฮ้าส์ของคุณไม่ได้เปิดใช้งาน schema ไดเรกทอรีตารางของคุณจะโดยตรงภายในTablesไดเรกทอรียืนยันว่าตาราง Delta Lake ของคุณถูกแปลงเป็นรูปแบบ Iceberg เสมือนเรียบร้อยแล้ว คุณสามารถทําได้โดยตรวจสอบไดเรกทอรีที่อยู่เบื้องหลังตาราง
หากต้องการดูไดเรกทอรีถ้าตารางของคุณอยู่ใน lakehouse คุณสามารถคลิกขวาที่ตารางใน Fabric UI และเลือกดูไฟล์
ถ้าตารางของคุณอยู่ในประเภทรายการข้อมูลอื่น เช่น คลังสินค้า ฐานข้อมูล หรือฐานข้อมูลที่มิเรอร์ คุณจะต้องใช้ไคลเอ็นต์เช่น Azure Storage Explorer หรือ OneLake File Explorer แทนที่จะเป็น Fabric UI เพื่อดูไฟล์ที่อยู่เบื้องหลังตาราง
คุณควรเห็นไดเรกทอรีที่
metadataชื่อว่าอยู่ภายในโฟลเดอร์ตาราง และควรมีหลายไฟล์ รวมถึงไฟล์ล็อกการแปลง เปิดไฟล์บันทึกการแปลงเพื่อดูข้อมูลเพิ่มเติมเกี่ยวกับ Delta Lake เป็นการแปลง Iceberg รวมถึงประทับเวลาของการแปลงล่าสุดและรายละเอียดข้อผิดพลาดใด ๆถ้าไฟล์บันทึกการแปลงแสดงว่าตารางถูกแปลงเรียบร้อยแล้ว ให้อ่านตาราง Iceberg โดยใช้บริการ แอป หรือไลบรารีที่คุณเลือก
ขึ้นอยู่กับโปรแกรมอ่าน Iceberg ที่คุณใช้ คุณจะต้องทราบเส้นทางไปยังไดเร็กทอรีตารางหรือไฟล์ล่าสุด
.metadata.jsonที่แสดงในmetadataไดเร็กทอรีคุณสามารถดูเส้นทาง HTTP ไปยังไฟล์เมตาดาต้าล่าสุดของตารางของคุณได้โดยการเปิดมุมมอง คุณสมบัติ สําหรับ
*.metadata.jsonไฟล์ที่มีหมายเลขเวอร์ชันสูงสุด จดบันทึกของเส้นทางนี้เส้นทางไปยังโฟลเดอร์ของ
Tablesรายการข้อมูลของคุณอาจมีลักษณะดังนี้:https://onelake.dfs.fabric.microsoft.com/83896315-c5ba-4777-8d1c-e4ab3a7016bc/a95f62fa-2826-49f8-b561-a163ba537828/Tables/ภายในโฟลเดอร์นั้น เส้นทางสัมพัทธ์ไปยังไฟล์เมตาดาต้าล่าสุดอาจมีลักษณะเป็น
dbo/MyTable/metadata/321.metadata.jsonหากต้องการอ่านตาราง Iceberg เสมือนของคุณโดยใช้ Snowflake ให้ทําตามขั้นตอนในคู่มือนี้
สร้างทางลัดตารางไปยังตาราง Iceberg
ถ้าคุณมีตาราง Iceberg อยู่แล้วในตําแหน่งที่เก็บข้อมูลที่ได้รับการสนับสนุนโดย ทางลัด OneLake ให้ทําตามขั้นตอนเหล่านี้เพื่อสร้างทางลัดและทําให้ตาราง Iceberg ของคุณปรากฏเป็นรูปแบบ Delta Lake
ค้นหาตาราง Iceberg ของคุณ ค้นหาตําแหน่งที่จัดเก็บตาราง Iceberg ของคุณ ซึ่งอาจอยู่ใน Azure Data Lake Storage, OneLake, Amazon S3, Google Cloud Storage หรือบริการที่เก็บข้อมูล S3 ที่เข้ากันได้
หมายเหตุ
ถ้าคุณกําลังใช้ Snowflake และไม่แน่ใจว่าตาราง Iceberg ของคุณถูกจัดเก็บไว้ที่ใด คุณสามารถเรียกใช้คําสั่งต่อไปนี้เพื่อดูตําแหน่งที่เก็บข้อมูลของตาราง Iceberg ของคุณได้
SELECT SYSTEM$GET_ICEBERG_TABLE_INFORMATION('<table_name>');การเรียกใช้คําสั่งนี้ส่งกลับเส้นทางไปยังไฟล์เมตาดาต้าสําหรับตาราง Iceberg เส้นทางนี้บอกคุณว่าบัญชีเก็บข้อมูลใดมีตาราง Iceberg ตัวอย่างเช่น นี่คือข้อมูลที่เกี่ยวข้องเพื่อค้นหาเส้นทางของตาราง Iceberg ที่จัดเก็บไว้ใน Azure Data Lake Storage:
{"metadataLocation":"azure://<storage_account_path>/<path_within_storage>/<table_name>/metadata/00001-389700a2-977f-47a2-9f5f-7fd80a0d41b2.metadata.json","status":"success"}โฟลเดอร์ตาราง Iceberg ของคุณต้องประกอบด้วย
metadataโฟลเดอร์ซึ่งตัวเองประกอบด้วยไฟล์อย่างน้อยหนึ่งไฟล์ที่ลงท้ายด้วย.metadata.jsonใน Fabric lakehouse ของคุณ สร้างทางลัดตารางใหม่ในพื้นที่ตารางของเลคเฮ้าส์
เคล็ดลับ
ถ้าคุณเห็น schema เช่น dbo ภายใต้โฟลเดอร์ ตาราง ของเลคเฮ้าส์ของคุณ จากนั้น lakehouse จะเปิดใช้งาน schema ในกรณีนี้ คลิกขวาบน schema และสร้างทางลัดตารางภายใต้ schema
สําหรับเส้นทางเป้าหมายของทางลัดของคุณ ให้เลือกโฟลเดอร์ ตาราง Iceberg โฟลเดอร์ ตาราง Iceberg ประกอบด้วย
metadataโฟลเดอร์ และdataเมื่อทางลัดของคุณถูกสร้างขึ้น คุณควรเห็นตารางนี้สะท้อนให้เห็นเป็นตาราง Delta Lake ในเลคเฮ้าส์ของคุณโดยอัตโนมัติ พร้อมให้คุณใช้งานทั่วทั้ง Fabric
หากทางลัดตาราง Iceberg ใหม่ของคุณไม่ปรากฏเป็นตารางที่ใช้งานได้ ให้ตรวจสอบส่วนการแก้ไขปัญหา
การแก้ไขปัญหา
เคล็ดลับต่อไปนี้สามารถช่วยคุณตรวจสอบให้แน่ใจว่าตาราง Iceberg ของคุณเข้ากันได้กับคุณลักษณะนี้:
ตรวจสอบโครงสร้างโฟลเดอร์ของตาราง Iceberg ของคุณ
เปิดโฟลเดอร์ Iceberg ของคุณในเครื่องมือ explorer ที่เก็บข้อมูลที่คุณต้องการ และตรวจสอบรายการไดเรกทอรีของโฟลเดอร์ Iceberg ของคุณในตําแหน่งที่ตั้งเดิม คุณควรเห็นโครงสร้างโฟลเดอร์เช่นตัวอย่างต่อไปนี้
../
|-- MyIcebergTable123/
|-- data/
|-- A5WYPKGO_2o_APgwTeNOAxg_0_1_002.parquet
|-- A5WYPKGO_2o_AAIBON_h9Rc_0_1_003.parquet
|-- metadata/
|-- 00000-1bdf7d4c-dc90-488e-9dd9-2e44de30a465.metadata.json
|-- 00001-08bf3227-b5d2-40e2-a8c7-2934ea97e6da.metadata.json
|-- 00002-0f6303de-382e-4ebc-b9ed-6195bd0fb0e7.metadata.json
|-- 1730313479898000000-Kws8nlgCX2QxoDHYHm4uMQ.avro
|-- 1730313479898000000-OdsKRrRogW_PVK9njHIqAA.avro
|-- snap-1730313479898000000-9029d7a2-b3cc-46af-96c1-ac92356e93e9.avro
|-- snap-1730313479898000000-913546ba-bb04-4c8e-81be-342b0cbc5b50.avro
ถ้าคุณไม่เห็นโฟลเดอร์เมตาดาต้า หรือถ้าคุณไม่เห็นไฟล์ที่มีส่วนขยายที่แสดงในตัวอย่างนี้ คุณอาจไม่มีตาราง Iceberg ที่สร้างขึ้นอย่างเหมาะสม
ตรวจสอบล็อกการแปลง
เมื่อตาราง Iceberg ถูกจําลองเป็นตาราง Delta Lake จะพบโฟลเดอร์ที่มี _delta_log/ ชื่ออยู่ในโฟลเดอร์ทางลัด โฟลเดอร์นี้ประกอบด้วยเมตาดาต้าของรูปแบบ Delta Lake (บันทึก Delta) หลังจากการแปลงที่สําเร็จ
โฟลเดอร์นี้ยังมี latest_conversion_log.txt ไฟล์ ซึ่งประกอบด้วยรายละเอียดความสําเร็จหรือความล้มเหลวของการแปลงที่มีการพยายามล่าสุด
หากต้องการดูเนื้อหาของไฟล์นี้หลังจากสร้างทางลัดของคุณให้เปิดเมนูสําหรับทางลัดตาราง Iceberg ภายใต้พื้นที่ตารางของ lakehouse ของคุณและเลือกดูไฟล์
คุณควรเห็นโครงสร้างเช่นตัวอย่างต่อไปนี้:
Tables/
|-- MyIcebergTable123/
|-- data/
|-- <data files>
|-- metadata/
|-- <metadata files>
|-- _delta_log/ <-- Virtual folder. This folder doesn't exist in the original location.
|-- 00000000000000000000.json
|-- latest_conversion_log.txt <-- Conversion log with latest success/failure details.
เปิดไฟล์บันทึกการแปลงเพื่อดูรายละเอียดการแปลงหรือความล้มเหลวล่าสุด ถ้าคุณไม่เห็นไฟล์บันทึกการแปลง การแปลงจะไม่ถูกพยายาม
เข้าใจบันทึกการแปลงและหมวดหมู่ข้อผิดพลาด
ไฟล์บันทึก latest_conversion_log.txt ความพยายามแปลงล่าสุด เมื่อคุณจําลองตาราง Iceberg เป็น Delta Lake คุณจะพบไฟล์นี้ในโฟลเดอร์ของ _delta_log/ ตาราง เมื่อคุณจําลองตาราง Delta Lake เป็น Iceberg มันจะอยู่ในโฟลเดอร์ของ metadata/ ตารางนั้น ไฟล์เป็นข้อความธรรมดา เมื่อการแปลงล้มเหลว จะมี latest_conversion_log.txt บล็อกโครงสร้างคล้ายกับต่อไปนี้:
Status: Failed
Timestamp (UTC): 2025-07-29T19:04:11Z
Latest Metadata: 00000000000000000012.metadata.json
Invocation Id: 6f1c...e2
Root Activity Id: 9a3d...b7
Error Code: <code>
Error Category: USER | SYSTEM
Error Details: <message>
ใช้ หมวดหมู่ข้อผิดพลาด เพื่อตัดสินใจว่าจะทําอะไรต่อไป:
USERหมายความว่าตารางซอร์สมีบางอย่างที่ฟีเจอร์นี้ไม่สามารถแปลงได้ รายละเอียดข้อผิดพลาด อธิบายสิ่งที่ต้องแก้ไข ปรับตารางต้นทาง (ดู ข้อจํากัดและข้อควรพิจารณา) แล้วบันทึกการเปลี่ยนแปลงไปยังตารางต้นทาง การพยายามแปลงใหม่โดยอัตโนมัติหลังจากการคอมมิตถัดไปSYSTEMหมายความว่าเกิดข้อผิดพลาดภายในหรือข้อผิดพลาดชั่วคราว และไม่มีอะไรต้องแก้ไขในตารางต้นทาง หากต้องการเริ่มการพยายามแปลงอีกครั้ง ให้บันทึกการเปลี่ยนแปลงในตารางต้นทาง หากความล้มเหลวยังคงอยู่ ให้ติดต่อฝ่ายสนับสนุนและส่งไฟล์ทั้งหมดlatest_conversion_log.txt
ถ้าไม่ได้พยายามแปลง
ถ้าคุณไม่เห็นไฟล์บันทึกการแปลง การแปลงจะไม่ถูกพยายาม ต่อไปนี้เป็นสาเหตุทั่วไปสองประการที่ทําให้การแปลงไม่พยายามทํา:
ทางลัดไม่ได้ถูกสร้างขึ้นในตําแหน่งที่ถูกต้อง
เพื่อให้ทางลัดไปยังตาราง Iceberg ถูกแปลงเป็นรูปแบบ Delta Lake ทางลัดจะต้องถูกวางไว้ใต้โฟลเดอร์ ตาราง ของเลคเฮ้าส์ที่ไม่ได้เปิดใช้งาน Schema โดยตรง คุณไม่ควรวางปุ่มลัดในส่วนไฟล์หรือภายใต้โฟลเดอร์อื่นถ้าคุณต้องการให้ตารางเป็นเสมือนโดยอัตโนมัติเป็นตาราง Delta Lake
เส้นทางเป้าหมายของทางลัดไม่ใช่เส้นทางโฟลเดอร์ Iceberg
เมื่อคุณสร้างทางลัด พาธโฟลเดอร์ที่คุณเลือกในตําแหน่งที่เก็บเป้าหมายต้องเป็นโฟลเดอร์ตาราง Iceberg เท่านั้น โฟลเดอร์นี้ประกอบด้วย
metadataโฟลเดอร์ และdata
ข้อความแสดงข้อผิดพลาด "ภูมิภาคความจุ Fabric ไม่สามารถตรวจสอบได้" ใน Snowflake
ถ้าคุณกําลังใช้ Snowflake เพื่อเขียนตาราง Iceberg ใหม่ไปยัง OneLake คุณอาจเห็นข้อความแสดงข้อผิดพลาดต่อไปนี้:
ขอบเขตความจุของผ้าไม่สามารถตรวจสอบได้ เหตุผล: 'โทเค็นการเข้าถึงไม่ถูกต้อง ซึ่งอาจเกิดจากการรับรองความถูกต้องและการกําหนดขอบเขต โปรดตรวจสอบขอบเขตที่ได้รับมอบสิทธิ์'
ถ้าคุณเห็นข้อผิดพลาดนี้ ให้ผู้ดูแลระบบผู้เช่า Fabric ของคุณตรวจสอบอีกครั้งว่าคุณได้เปิดใช้งานการตั้งค่าผู้เช่าทั้งสองที่กล่าวถึงใน เขียนตาราง Iceberg ไปยัง OneLake โดยใช้ส่วน Snowflake :
- ในมุมขวาบนของ Fabric UI ให้เปิด การตั้งค่า และเลือก พอร์ทัลผู้ดูแลระบบ
- ภายใต้ การตั้งค่าผู้เช่า ในส่วน การตั้งค่านักพัฒนา ให้เปิดใช้งานการตั้งค่าโครงร่าง สําคัญของบริการที่ชื่อว่า สามารถใช้ Fabric API ได้
- ในพื้นที่เดียวกันในส่วน การตั้งค่า OneLake ให้เปิดใช้งานการตั้งค่าที่มีป้ายชื่อ ผู้ใช้สามารถเข้าถึงข้อมูลที่จัดเก็บไว้ใน OneLake ด้วยแอปภายนอกไปยัง Fabric ได้
ข้อจํากัดและข้อควรพิจารณา
โปรดทราบข้อจํากัดต่อไปนี้เมื่อใช้ฟีเจอร์นี้ มีข้อจํากัดบางประการสําหรับทั้งสองทิศทางการแปลง บางกรณีเน้นการเปลี่ยนทะเลสาบเดลต้าเป็นภูเขาน้ําแข็ง หรือภูเขาน้ําแข็งเป็นทะเลสาบเดลต้า
ปัญหาการแปลงสกุลเงินปรากฏขึ้นอย่างไร
เมื่อฟีเจอร์ต้นฉบับไม่สามารถแปลได้อย่างสมบูรณ์ จะเกิดสองสาเหตุ ผลลัพธ์ทั้งสองจะถูกรายงานในบันทึกการแปลง
| ผลที่ได้ | จะเกิดอะไรขึ้น |
|---|---|
| การแปลงล้มเหลว | ไม่มีการสร้างเมตาดาต้าเป้าหมายใหม่ ตารางจะเก็บเวอร์ชันที่แปลงสําเร็จล่าสุดไว้ |
| ฟีเจอร์ถูกยกเลิก | การแปลงสําเร็จ แต่คอลัมน์หรือพาร์ติชันที่ไม่รองรับจะถูกละเว้นจากรูปแบบตารางผลลัพธ์ |
ข้อจำกัดทั่วไป
รองรับเวอร์ชัน Apache Iceberg
เวอร์ชัน Iceberg ที่รองรับขึ้นอยู่กับทิศทางการแปลง:
ทิศทางการแปลง พฤติกรรมเวอร์ชันภูเขาน้ําแข็ง ทะเลสาบเดลต้าถึงภูเขาน้ําแข็ง สร้างข้อมูลเมตาของ Iceberg V2 ภูเขาน้ําแข็งถึงทะเลสาบเดลต้า รองรับตารางซอร์สโค้ด Iceberg V2 ตารางซอร์สของ Iceberg V3 ได้รับการสนับสนุนบางส่วน;ดูคุณสมบัติของ Iceberg V3 เฉพาะไฟล์ข้อมูลปาร์เก้เท่านั้น
ฟีเจอร์นี้รองรับเฉพาะ Parquet เป็นรูปแบบไฟล์ข้อมูลพื้นฐานสําหรับการแปลงเมตาดาต้า ในทั้งสองทิศทางการแปลง
แปลงข้อมูลเมตาเวอร์ชันล่าสุด
คุณลักษณะการจําลองเสมือนรูปแบบตารางในปัจจุบันจะแปลงเวอร์ชันข้อมูลเมตาของตารางล่าสุดในรูปแบบตารางดั้งเดิม ถ้ามีการเขียนหลายเวอร์ชันในรูปแบบตารางต้นฉบับ เฉพาะเวอร์ชันข้อมูลเมตาของตารางล่าสุดเท่านั้นที่จะถูกแปลงเป็นรูปแบบตารางเสมือน
จํานวนธุรกรรมนําเข้าสูงสุด
ตารางต้นทางต้องมีธุรกรรมหรือคอมมิตน้อยกว่า 5,000 รายการเพื่อให้สามารถแปลงรูปแบบตารางได้ อย่าลืมบีบอัดบันทึกธุรกรรมหรือไฟล์ manifest เพื่อลดจํานวนธุรกรรมหรือการคอมมิต
เวลาในการตอบสนองของ Conversion และความถี่ในการอัปเดต
การสร้างข้อมูลเมตารูปแบบตารางอาจใช้เวลาระหว่าง 5 วินาทีถึง 2 นาที ตรวจสอบให้แน่ใจว่าการอัปเดตตารางต้นทางของคุณน้อยกว่าทุก 2 นาที มิฉะนั้น คุณอาจเห็นรูปแบบตารางผลลัพธ์ที่ไม่สอดคล้องกัน
วิวัฒนาการของสคีมา
ในทั้งสองทิศทางการแปลง รองรับการเปลี่ยนประเภทการขยาย (เช่น
intเป็นlong) การเปลี่ยนประเภทที่แคบลงหรือไม่เข้ากันจะทําให้การแปลงล้มเหลว
ทะเลสาบเดลต้าถึงภูเขาน้ําแข็ง
ข้อจํากัดเหล่านี้ใช้เมื่อคุณจําลองตาราง Delta Lake เป็น Iceberg
เคล็ดลับ
สําหรับการแปลงที่สมบูรณ์ที่สุดเป็น Iceberg V2 ให้ใช้ IcebergCompatV2 เมื่อตารางต้นทางไม่ได้ใช้เวกเตอร์ลบ ถ้าตารางใช้เวกเตอร์ลบ ให้ใช้ IcebergCompatV3;OneLake จะแปลงเป็น Iceberg V2 ตําแหน่งที่ลบ เนื่องจากฟีเจอร์นี้สร้างข้อมูลเมตาของ Iceberg V2 ฟีเจอร์ที่ใช้เฉพาะ Iceberg V3 จึงไม่ถูกแปลง
ข้อควรพิจารณาต่อไปนี้ โดยเฉพาะกับตาราง Delta Lake ที่ ไม่ได้ เขียนด้วย IcebergCompat ฟีเจอร์สําหรับผู้เขียน:
คอลัมน์ที่ซ้อนกัน
arrayและmapคอลัมน์ต้องการรหัสฟิลด์ที่เสถียรบนองค์ประกอบ คีย์ และค่าของมัน หากไม่มี Index เหล่านี้ คอลัมน์เก็บข้อมูลซ้อนจะถูกตัดออกจากผลลัพธ์ของ Iceberg (ซึ่งบันทึกไว้ในบันทึกการแปลง)IcebergCompatกําหนดรหัสเหล่านี้ตราประทับเวลาต้องเก็บเป็น INT64 ไมโครวินาที ตารางที่บันทึกเวลาประทับถูกบันทึกเป็น INT96 (legacy) แปลง แต่คอลัมน์เวลาประทับไม่สามารถอ่านได้โดยเอนจิน Iceberg
IcebergCompatบังคับใช้ตราประทับเวลา INT64การเปลี่ยนชื่อคอลัมน์ — เก็บรักษาเมื่อตาราง Delta Lake ใช้การแมปคอลัมน์ (
idหรือnameโหมด) ซึ่งIcebergCompatต้องการ ด้วยโหมดnoneแมปคอลัมน์ การเปลี่ยนชื่อจะปรากฏเป็นการลบและเพิ่มคอลัมน์ประเภทคอลัมน์ — เฉพาะประเภทที่เข้ากันได้กับ Iceberg เท่านั้นที่ถูกแปลง;คอลัมน์อื่น ๆ จะถูกตัดออก (ระบุไว้ในบันทึกการแปลง) ตัวอย่างเช่น
voidไม่มีสิ่งที่เทียบเท่า IcebergIcebergCompatจํากัดสคีมาให้เป็นชุดประเภทที่แปลงได้เท่านั้นการแบ่ง — การแบ่งตัวตนและเวลา (ปี เดือน วัน ชั่วโมง) จะถูกแปลง Delta Lake มีการแบ่งพื้นที่แบบตารางเดียว
ภูเขาน้ําแข็งถึงทะเลสาบเดลต้า
ข้อจํากัดเหล่านี้ใช้เมื่อคุณจําลองตาราง Iceberg เป็น Delta Lake
ไม่รองรับการเปลี่ยนชื่อคอลัมน์ คุณไม่สามารถเปลี่ยนชื่อคอลัมน์ในตาราง Iceberg ต้นทางได้ ให้สร้างตารางใหม่ด้วยชื่อคอลัมน์ใหม่แทน เมื่อคุณสร้างตารางใหม่ ให้ลบไฟล์เมตาดาต้าที่เหลืออยู่ ตามที่อธิบายไว้ใน ตาราง Iceberg โฟลเดอร์ต้องมีข้อจํากัดของไฟล์เมตาดาต้าเพียงชุด เดียว
การแปลงแบบแบ่งแยก — รองรับเฉพาะการแปลงอัตลักษณ์และเวลา (ปี เดือน วัน ชั่วโมง) เท่านั้น
bucket[N]การแปลง ,truncate[W], และvoidจะถูกละเลย: ตารางยังคงแปลงได้ แต่ไม่มีการแบ่งพาร์ติชันนั้น คอลัมน์พื้นฐานจะถูกเก็บรักษาไว้เป็นคอลัมน์ปกติที่ไม่มีพาร์ติชันวิวัฒนาการของพาร์ติชัน — หากไฟล์ข้อมูลสดของตารางต้นทางครอบคลุมมากกว่าหนึ่งสเปคพาร์ติชัน หรือคอลัมน์พาร์ติชันของตารางที่แปลงก่อนหน้านี้เปลี่ยนแปลง การแปลงจะถูกปฏิเสธ Delta Lake มีการแบ่งพาร์ติชันแบบตารางเดียว และการแปลงไฟล์แบบผสมจะทําให้ค่าพาร์ติชันเป็นศูนย์สําหรับไฟล์เก่า เก็บสเปคพาร์ติชันเดียว
การลบระดับแถว — การลบตําแหน่ง V2 ของ Iceberg และเวกเตอร์การลบ V3 จะถูกแปลงเป็นเวกเตอร์การลบของ Delta Lake การลบเท่ากันจะทําให้การแปลงล้มเหลว
ประเภทที่ไม่รองรับ — ประเภทที่ไม่มีเทียบเท่า Delta Lake (เช่น
time, และประเภทขยาย Iceberg V3) จะถูกตัดออก;uuidถูกแมปเป็นไบนารี ดูคุณสมบัติของ Iceberg V3ปัญหาความกว้างของชนิด
หากคุณใช้ Snowflake เขียนตาราง Iceberg และตารางมีประเภท
INT64คอลัมน์ ,double, หรือDecimalด้วยความแม่นยํา >= 10 ตาราง Delta Lake เสมือนที่ได้อาจไม่สามารถใช้ได้โดยเอนจิน Fabric ทุกตัว คุณอาจพบข้อผิดพลาด เช่น:Parquet column cannot be converted in file ... Column: [ColumnA], Expected: decimal(18,4), Found: INT32.เรากําลังแก้ไขปัญหานี้
วิธีแก้ไขชั่วคราว: หากคุณใช้ UI ตัวอย่างตาราง Lakehouse และพบปัญหานี้ คุณสามารถแก้ไขข้อผิดพลาดนี้ได้โดยสลับไปที่มุมมอง SQL analytics endpoint (มุมขวาบน เลือกมุมมอง Lakehouse แล้วสลับไปที่ SQL analytics endpoint) และดูตัวอย่างตารางจากตรงนั้น ถ้าคุณสลับกลับไปยังมุมมองเลคเฮ้าส์ การแสดงตัวอย่างตารางควรแสดงผลอย่างถูกต้อง
ถ้าคุณกําลังใช้สมุดบันทึก Spark หรืองาน และพบปัญหานี้ คุณสามารถแก้ไขปัญหานี้ได้โดยการตั้งค่า
spark.sql.parquet.enableVectorizedReaderการกําหนดค่า Spark เป็นfalseต่อไปนี้เป็นตัวอย่างคําสั่ง PySpark เพื่อเรียกใช้ในสมุดบันทึก Spark:spark.conf.set("spark.sql.parquet.enableVectorizedReader","false")ที่เก็บข้อมูลเมตาดาต้าของตาราง Iceberg ไม่ใช่แบบพกพา
ไฟล์เมตาดาต้าของตาราง Iceberg อ้างอิงซึ่งกันและกันโดยใช้การอ้างอิงเส้นทางสัมบูรณ์ ถ้าคุณคัดลอกหรือย้ายเนื้อหาโฟลเดอร์ของตาราง Iceberg ไปยังตําแหน่งอื่นโดยไม่ต้องเขียนไฟล์เมตาดาต้า Iceberg ใหม่ ตารางจะไม่สามารถอ่านได้โดยผู้อ่าน Iceberg รวมถึงคุณลักษณะ OneLake นี้
วิธีแก้ไขปัญหาชั่วคราว:
หากคุณต้องการย้ายตาราง Iceberg ของคุณไปยังตําแหน่งที่ตั้งอื่นเพื่อใช้คุณลักษณะนี้ ให้ใช้เครื่องมือที่เขียนตาราง Iceberg ในตอนแรกเพื่อเขียนตาราง Iceberg ใหม่ในตําแหน่งที่ตั้งที่ต้องการ
โฟลเดอร์ตาราง Iceberg ต้องมีไฟล์เมตาดาต้าเพียงชุดเดียว
หากคุณวางและสร้างตาราง Iceberg ขึ้นใหม่ใน Snowflake ไฟล์เมตาดาต้าจะไม่ถูกล้าง ลักษณะการทํางานนี้เกิดจากการออกแบบในการสนับสนุนของ
UNDROPคุณลักษณะใน Snowflake อย่างไรก็ตาม เนื่องจากทางลัดของคุณชี้ไปยังโฟลเดอร์และโฟลเดอร์นั้นโดยตรงขณะนี้มีไฟล์เมตาดาต้าหลายชุดภายในนั้น เราจึงไม่สามารถแปลงตารางได้จนกว่าคุณจะลบไฟล์เมตาดาต้าของตารางเก่าการแปลงจะล้มเหลวถ้าพบชุดไฟล์เมตาดาต้ามากกว่าหนึ่งชุดในโฟลเดอร์เมตาดาต้าของตาราง Iceberg
วิธีแก้ไขปัญหาชั่วคราว:
เพื่อให้แน่ใจว่าตารางที่แปลงแล้วแสดงเวอร์ชันที่ถูกต้องของตาราง:
- ตรวจสอบให้แน่ใจว่า คุณไม่ได้จัดเก็บตาราง Iceberg มากกว่าหนึ่งตารางไว้ในโฟลเดอร์เดียวกัน
- ล้างข้อมูลใด ๆ ของโฟลเดอร์ตาราง Iceberg หลังจากปล่อยก่อนที่จะสร้างตารางใหม่
การเปลี่ยนแปลงเมตาดาต้าไม่มีผลทันที
หากคุณทําการเปลี่ยนแปลงเมตาดาต้าในตาราง Iceberg ของคุณ เช่น การเพิ่มคอลัมน์ ลบคอลัมน์ เปลี่ยนชื่อคอลัมน์ หรือเปลี่ยนประเภทคอลัมน์ ตารางอาจไม่ถูกแปลงใหม่จนกว่าจะมีการเปลี่ยนแปลงข้อมูล เช่น การเพิ่มแถวข้อมูล
เรากําลังดําเนินการแก้ไขในการเลือกไฟล์เมตาดาต้าที่ถูกต้องล่าสุดที่มีการเปลี่ยนแปลงเมตาดาต้าล่าสุด
วิธีแก้ไขปัญหาชั่วคราว:
หลังจากทําการเปลี่ยนแปลง schema ไปยังตาราง Iceberg ของคุณแล้ว ให้เพิ่มแถวของข้อมูลหรือทําการเปลี่ยนแปลงอื่น ๆ ไปยังข้อมูล หลังจากการเปลี่ยนแปลงนั้น คุณควรสามารถรีเฟรชและดูมุมมองล่าสุดของตารางของคุณใน Fabric
คุณสมบัติของ Iceberg V3
ฟีเจอร์นี้สร้างและอ่านข้อมูลเมตาของ Iceberg V2;มันไม่ได้เขียนข้อมูลเมตาของ Iceberg V3 เมื่อแหล่งข้อมูลเป็นตาราง Iceberg V3 ฟีเจอร์ของมันจะถูกแปลตามที่อธิบายไว้ในตารางต่อไปนี้ คอลัมน์ที่ถูกตัดออกและบันทึกการแปลอื่น ๆ จะถูกบันทึกไว้ในบันทึกการแปลง
| ฟีเจอร์ของ Iceberg V3 | ได้รับการสนับสนุน | พฤติกรรมการแปล |
|---|---|---|
| เวกเตอร์การลบ | ใข่ | อ่านและแปลงเป็นเวกเตอร์ลบ Delta Lake |
| สายพันธุ์ของแถว | ไม่ใช่ | ข้อมูลเมตาของแถว-สายพันธุ์ไม่ได้ถูกแปลไปยัง Delta Lake ตารางยังคงแปลงได้ และข้อมูลแถวยังคงไม่เปลี่ยนแปลง |
| ค่าคอลัมน์เริ่มต้น | ไม่ใช่ | คอลัมน์ที่มีค่าเริ่มต้นสําหรับอ่านจะถูกทิ้ง ค่าเริ่มต้นของการเขียนจะไม่ถูกแปล |
ชนิดข้อมูลใหม่ (variant, ภูมิสารสนเทศ, เวลาประทับนาโนวินาที, unknown) |
ไม่ใช่ | คอลัมน์ที่ใช้ชนิดข้อมูล Iceberg V3 ใหม่จะถูกตัดออก สําหรับรายการทั้งหมด ดูที่ ประเภทข้อมูลที่รองรับ |
| การแปลงพาร์ติชันแบบหลายอาร์กิวเมนต์ | ไม่ใช่ | ไม่สนับสนุน |
| คีย์การเข้ารหัสตาราง | ไม่ใช่ | ไม่สนับสนุน |
Important
แม้เมื่อการแปลงจะตัดคอลัมน์ที่มีชนิดข้อมูล Iceberg V3 ใหม่ เอนจิน Fabric บางตัวก็ไม่สามารถอ่านตารางได้หากไฟล์ข้อมูลใช้ชนิดข้อมูล Iceberg V3 ไฟล์ข้อมูลยังคงเก็บข้อมูลประเภทนั้นอยู่
วิธีแก้ไข:เพื่อให้เข้ากันได้มากที่สุดใน Fabric หลีกเลี่ยงการใช้คอลัมน์ Iceberg V3 ในตารางที่คุณจําลอง
ชนิดข้อมูลที่สนับสนุน
ตารางต่อไปนี้แสดงวิธีการแมปชนิดข้อมูลคอลัมน์ระหว่างรูปแบบ เว้นแต่จะระบุไว้ ประเภทจะถูกแปลงทั้งสองทิศทาง
| ประเภททะเลสาบเดลต้า | ประเภทภูเขาน้ําแข็ง | บันทึกย่อ |
|---|---|---|
string |
string |
|
integer |
int |
|
long |
long |
|
short, byte |
int |
ทะเลสาบ short เดลต้าและ byte ขยายเป็นภูเขาน้ําแข็ง int |
float |
float |
|
double |
double |
|
decimal(P, S) |
decimal(P, S) |
ความแม่นยําสูงสุดถึง 38 |
boolean |
boolean |
|
binary |
binary |
|
date |
date |
|
timestamp |
timestamptz |
UTC;เก็บเป็น INT64 ไมโครวินาที ใน Snowflake ให้ระบุ timestamp_ltz เพื่อสร้างประเภทนี้ |
timestamp_ntz |
timestamp |
ไม่มีเขตเวลา
timestamp_ntzไม่รองรับเต็มรูปแบบในทุกงาน Fabric; ชอบใช้เวลาที่คํานึงถึงเขตเวลา |
struct, array, map |
struct, list, map |
Delta Lake ถึง Iceberg: ซ้อน array กันและ map ต้องใช้ IcebergCompat |
void |
— | เฉพาะทะเลสาบเดลต้าเท่านั้น;ถูกยกเลิกระหว่างการแปลงสภาพ |
| — | time |
เฉพาะภูเขาน้ําแข็ง;ไม่มีเทียบเท่า Delta Lake แต่ถูกทิ้ง |
| — | uuid |
เฉพาะภูเขาน้ําแข็ง;แมปเป็น binary |
| — | variant |
มีแค่ Iceberg (V3);ถูกทิ้ง ดู คุณสมบัติของ Iceberg V3 |
| — |
geometry, geography |
มีแค่ Iceberg (V3);ถูกทิ้ง ดู คุณสมบัติของ Iceberg V3 |
| — |
timestamp_ns, timestamptz_ns |
มีแค่ Iceberg (V3);ถูกทิ้ง ดู คุณสมบัติของ Iceberg V3 |
| — | unknown |
มีแค่ Iceberg (V3);ถูกทิ้ง ดู คุณสมบัติของ Iceberg V3 |
สําหรับตาราง Iceberg ที่เขียนโดย Snowflake ตาราง longdoubleกว้าง , หรือdecimalคอลัมน์ก็อาจได้รับผลกระทบจากปัญหาความกว้างประเภทที่อธิบายไว้ในส่วน Iceberg ถึง Delta Lake
การแปลงพาร์ติชันที่รองรับ
| การแปลง | ภูเขาน้ําแข็งถึงทะเลสาบเดลต้า | ทะเลสาบเดลต้าถึงภูเขาน้ําแข็ง |
|---|---|---|
| ข้อมูลประจำตัว | ได้รับการสนับสนุน | ได้รับการสนับสนุน |
| ปี เดือน วัน ชั่วโมง | ได้รับการสนับสนุน | ได้รับการสนับสนุน |
bucket[N] |
ถูกละเลย (การแบ่งพาร์ติชันถูกยกเลิก) | ไม่มี |
truncate[W] |
ถูกละเลย (การแบ่งพาร์ติชันถูกยกเลิก) | ไม่มี |
void |
ถูกละเลย (การแบ่งพาร์ติชันถูกยกเลิก) | ไม่มี |
สคีมาและวิวัฒนาการของการแบ่งส่วน
| ความสามารถ | ภูเขาน้ําแข็งถึงทะเลสาบเดลต้า | ทะเลสาบเดลต้าถึงภูเขาน้ําแข็ง | บันทึกย่อ |
|---|---|---|---|
| เพิ่มคอลัมน์ | ได้รับการสนับสนุน | ได้รับการสนับสนุน | |
| วางคอลัมน์ | ได้รับการสนับสนุน | ได้รับการสนับสนุน | |
| เปลี่ยนชื่อคอลัมน์ | ไม่ได้รับการสนับสนุน | ได้รับการสนับสนุน | ทะเลสาบเดลต้าไปยังภูเขาน้ําแข็งต้องใช้การแมปคอลัมน์ (id หรือ name โหมด) |
| การเปลี่ยนประเภทการขยาย | ได้รับการสนับสนุน | ได้รับการสนับสนุน | ตัวอย่างเช่น int ไปยัง long |
| การจํากัดหรือเปลี่ยนประเภทที่ไม่เข้ากัน | ล้มเหลว | ล้มเหลว | |
| วิวัฒนาการของพาร์ติชัน (หลายสเปก) | ล้มเหลว | ไม่มี | Delta Lake มีการแบ่งพื้นที่แบบตารางเดียว |
การลบในระดับแถว
เมื่อคุณจําลองตาราง Iceberg เป็น Delta Lake:
| ลบประเภทข้อมูล | พฤติกรรม |
|---|---|
| ตําแหน่ง Iceberg V2 ถูกลบ | แปลงเป็นเวกเตอร์ลบ Delta Lake แล้ว |
| เวกเตอร์ลบ Iceberg V3 | อ่านและแปลงเป็นเวกเตอร์ลบ Delta Lake |
| การลบความเท่าเทียมกัน | การแปลงล้มเหลว |
เมื่อคุณจําลองตาราง Delta Lake เป็น Iceberg:
| ลบประเภทข้อมูล | พฤติกรรม |
|---|---|
| เวกเตอร์ลบเดลต้าเลค | เขียนเป็น Iceberg V2 ตําแหน่งถูกลบ |
ความพร้อมใช้งานและข้อจํากัดของแพลตฟอร์ม
ข้อจํากัดความพร้อมใช้งานของภูมิภาค
ฟีเจอร์นี้ยังไม่พร้อมใช้งานในภูมิภาคต่อไปนี้:
- กาตาร์ เซ็นทรัล
- นอร์เวย์ฝั่งตะวันตก
วิธีแก้ไขปัญหาชั่วคราว:
พื้นที่ทํางานที่แนบมากับความจุ Fabric ในภูมิภาคอื่น ๆ สามารถใช้คุณลักษณะนี้ได้ ดูรายชื่อภูมิภาคทั้งหมดที่ Fabric พร้อมให้บริการ
ลิงก์ส่วนตัวไม่ได้รับการสนับสนุน
คุณลักษณะนี้ไม่รองรับผู้เช่าหรือพื้นที่ทํางานที่มีลิงก์ส่วนตัวที่เปิดใช้งานอยู่ในขณะนี้
เรากําลังดําเนินการปรับปรุงเพื่อลบข้อจํากัดนี้ออก
ทางลัด OneLake ต้องเป็นภูมิภาคเดียวกัน
เรามีข้อจํากัดชั่วคราวเกี่ยวกับการใช้คุณลักษณะนี้ด้วยทางลัดที่ชี้ไปยังตําแหน่ง OneLake: ตําแหน่งเป้าหมายของปุ่มลัดต้องอยู่ในภูมิภาคเดียวกันกับปุ่มลัดเอง
เรากําลังดําเนินการปรับปรุงเพื่อเอาข้อกําหนดนี้ออก
วิธีแก้ไขปัญหาชั่วคราว:
หากคุณมีทางลัด OneLake ไปยังตารางภูเขาน้ําแข็งในเลคเฮ้าส์อื่น โปรดตรวจสอบให้แน่ใจว่าเลคเฮ้าส์อื่น ๆ มีความเกี่ยวข้องกับความจุในภูมิภาคเดียวกัน
เนื้อหาที่เกี่ยวข้อง
- ใช้ Snowflake เพื่อเขียนหรืออ่านตาราง Iceberg ใน OneLake
- เรียนรู้เพิ่มเติมเกี่ยวกับ ทางลัด OneLake