แชร์ผ่าน


ใช้ Snowflake กับตาราง Iceberg ใน OneLake

สามารถใช้ Microsoft OneLake กับ Snowflake สําหรับจัดเก็บและเข้าถึงตาราง Apache Iceberg ได้

ทําตามคําแนะนํานี้เพื่อใช้ Snowflake บน Azure เพื่อ:

  • เขียนตาราง Iceberg โดยตรงไปยัง OneLake
  • อ่านตาราง Iceberg เสมือนที่แปลงจากรูปแบบ Delta Lake

Important

คุณลักษณะนี้อยู่ในแสดงตัวอย่าง

ก่อนเริ่มต้นใช้งาน ทําตามขั้นตอนข้อกําหนดเบื้องต้นที่แสดงด้านล่าง

Prerequisite

หากต้องการใช้ Snowflake บน Azure เพื่อเขียนหรืออ่านตาราง Iceberg ด้วย OneLake ข้อมูลประจําตัวของบัญชี Snowflake ของคุณใน Entra ID จําเป็นต้องสามารถสื่อสารกับ Fabric เปิดใช้งานการตั้งค่าระดับผู้เช่า Fabric ที่อนุญาตให้บริการหลักเรียก Fabric API และเรียกใช้ Api ของ OneLake

เขียนตาราง Iceberg ไปยัง OneLake โดยใช้ Snowflake บน Azure

หากคุณใช้ Snowflake บน Azure คุณสามารถเขียนตาราง Iceberg ไปยัง OneLake ได้โดยทําตามขั้นตอนเหล่านี้:

  1. ตรวจสอบให้แน่ใจว่าความจุ Fabric ของคุณอยู่ในตําแหน่ง Azure เดียวกันกับอินสแตนซ์ Snowflake ของคุณ

    ระบุตําแหน่งที่ตั้งของความจุ Fabric ที่เชื่อมโยงกับ Fabric lakehouse ของคุณ เปิดการตั้งค่าของพื้นที่ทํางาน Fabric ที่มีเลคเฮ้าส์ของคุณ

    สกรีนช็อตที่แสดงภูมิภาคความจุ Fabric

    ที่มุมล่างซ้ายของ Snowflake บนอินเทอร์เฟซบัญชี Azure ให้ตรวจสอบภูมิภาค Azure ของบัญชี Snowflake

    สกรีนช็อตที่แสดงภูมิภาคบัญชี Snowflake

    หากภูมิภาคเหล่านี้แตกต่างกัน คุณจําเป็นต้องใช้ความจุ Fabric ที่แตกต่างกันในภูมิภาคเดียวกันกับบัญชี Snowflake ของคุณ

  2. เปิดเมนูสําหรับพื้นที่ไฟล์ของ lakehouse ของคุณ เลือกคุณสมบัติ และคัดลอก URL (เส้นทาง HTTPS) ของโฟลเดอร์นั้น

    สกรีนช็อตที่แสดงรายการเมนูคุณสมบัติ

  3. ระบุ ID ผู้เช่า Fabric ของคุณ เลือกโปรไฟล์ผู้ใช้ของคุณที่มุมบนขวาของ Fabric UI และวางเมาส์เหนือฟองข้อมูลถัดจากชื่อผู้เช่าของคุณ คัดลอก ID ผู้เช่า

    สกรีนช็อตที่แสดงรหัสผู้เช่า

  4. ใน Snowflake ให้ตั้งค่าของคุณ EXTERNAL VOLUME โดยใช้เส้นทางไปยัง Files โฟลเดอร์ในเลคเฮ้าส์ของคุณ ข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าไดรฟ์ข้อมูลภายนอกของ Snowflake สามารถดูได้ที่นี่

    Note

    Snowflake จําเป็นต้องใช้โครงร่าง URL เป็น azure://ดังนั้นโปรดตรวจสอบให้แน่ใจว่าได้เปลี่ยนเส้นทางจาก https:// เป็นazure://

    CREATE OR REPLACE EXTERNAL VOLUME onelake_write_exvol
    STORAGE_LOCATIONS =
    (
        (
            NAME = 'onelake_write_exvol'
            STORAGE_PROVIDER = 'AZURE'
            STORAGE_BASE_URL = 'azure://<path_to_lakehouse>/Files/icebergtables'
            AZURE_TENANT_ID = '<Tenant_ID>'
        )
    );
    

    ในตัวอย่างนี้ ตารางใด ๆ ที่สร้างขึ้นโดยใช้ไดรฟ์ข้อมูลภายนอกนี้จะถูกจัดเก็บไว้ใน Fabric lakehouse ภายใน Files/icebergtables โฟลเดอร์

  5. ตอนนี้ไดรฟ์ข้อมูลภายนอกของคุณถูกสร้างขึ้นแล้ว ให้เรียกใช้คําสั่งต่อไปนี้เพื่อเรียกใช้ URL ความยินยอมและชื่อของแอปพลิเคชันที่ Snowflake ใช้เขียนไปยัง OneLake แอปพลิเคชันนี้ใช้โดยไดรฟ์ข้อมูลภายนอกใด ๆ ในบัญชี Snowflake ของคุณ

    DESC EXTERNAL VOLUME onelake_write_exvol;
    

    ผลลัพธ์ของคําสั่งนี้ส่งกลับAZURE_CONSENT_URLคุณสมบัติ และAZURE_MULTI_TENANT_APP_NAME จดบันทึกค่าทั้งสองไว้ ชื่อแอปแบบหลายผู้เช่า Azure มีลักษณะเหมือน <name>_<number>แต่คุณจําเป็นต้องจับภาพ <name> ส่วนเท่านั้น

  6. เปิด URL ความยินยอม จากขั้นตอนก่อนหน้าในแท็บเบราว์เซอร์ใหม่ ถ้าคุณยังไม่ได้ดําเนินการนี้ก่อนหน้านี้ หากคุณต้องการดําเนินการต่อ ให้ยินยอมตามสิทธิ์แอปพลิเคชันที่จําเป็น หากได้รับพร้อมท์ ระบบอาจนําคุณไปยังเว็บไซต์ Snowflake หลัก

  7. กลับไปใน Fabric เปิดพื้นที่ทํางานของคุณและเลือกจัดการการเข้าถึง จากนั้นเพิ่มบุคคลหรือกลุ่ม อนุญาตให้แอปพลิเคชันที่ใช้โดยไดรฟ์ข้อมูล Snowflake ภายนอกของคุณ มีสิทธิ์ที่จําเป็นในการเขียนข้อมูลไปยัง lakehouses ในพื้นที่ทํางานของคุณ เราขอแนะนําให้มอบ บทบาทผู้ สนับสนุน

  8. ย้อนกลับไปที่ Snowflake ใช้ไดรฟ์ข้อมูลภายนอกใหม่ของคุณเพื่อสร้างตาราง Iceberg

    CREATE OR REPLACE ICEBERG TABLE MYDATABASE.PUBLIC.Inventory (
        InventoryId int,
        ItemName STRING
    )
    EXTERNAL_VOLUME = 'onelake_write_exvol'
    CATALOG = 'SNOWFLAKE'
    BASE_LOCATION = 'Inventory/';
    

    หลังจากเรียกใช้คําสั่งนี้ โฟลเดอร์ตาราง Iceberg ใหม่ที่ชื่อว่า Inventory จะถูกสร้างขึ้นภายในเส้นทางโฟลเดอร์ที่กําหนดในไดรฟ์ข้อมูลภายนอก

  9. เพิ่มข้อมูลลงในตาราง Iceberg ของคุณ

    INSERT INTO MYDATABASE.PUBLIC.Inventory
    VALUES
    (123456,'Amatriciana');
    
  10. สุดท้าย ในพื้นที่ ตาราง ของเลคเฮ้าส์ เดียวกัน คุณสามารถสร้างทางลัด OneLake ไปยังตาราง Iceberg ของคุณได้ ผ่านทางลัดนั้น ตาราง Iceberg ของคุณจะปรากฏเป็นตาราง Delta Lake สําหรับการใช้งานในปริมาณงาน Fabric

อ่านตาราง Iceberg เสมือนจริงจาก OneLake โดยใช้ Snowflake บน Azure

หากต้องการใช้ Snowflake บน Azure เพื่ออ่านตาราง Iceberg เสมือนตามตาราง Delta Lake ใน Fabric ให้ทําตามขั้นตอนเหล่านี้

  1. ทําตามคําแนะนําเพื่อยืนยันว่าตาราง Delta Lake ของคุณถูกแปลงเป็น Iceberg เรียบร้อยแล้ว และจดบันทึกเส้นทางไปยังรายการข้อมูลที่ประกอบด้วยตารางของคุณ รวมถึงไฟล์ล่าสุด*.metadata.jsonของตารางของคุณ

  2. ระบุ ID ผู้เช่า Fabric ของคุณ เลือกโปรไฟล์ผู้ใช้ของคุณที่มุมบนขวาของ Fabric UI และวางเมาส์เหนือฟองข้อมูลถัดจากชื่อผู้เช่าของคุณ คัดลอก ID ผู้เช่า

    สกรีนช็อตที่แสดงรหัสผู้เช่า

  3. ใน Snowflake ให้ตั้งค่าของคุณ EXTERNAL VOLUME โดยใช้เส้นทางไปยัง Tables โฟลเดอร์ของรายการข้อมูลที่ประกอบด้วยตารางของคุณ ข้อมูลเพิ่มเติมเกี่ยวกับการตั้งค่าไดรฟ์ข้อมูลภายนอกของ Snowflake สามารถดูได้ที่นี่

    CREATE OR REPLACE EXTERNAL VOLUME onelake_read_exvol
    STORAGE_LOCATIONS =
    (
        (
            NAME = 'onelake_read_exvol'
            STORAGE_PROVIDER = 'AZURE'
            STORAGE_BASE_URL = 'azure://<path_to_data_item>/Tables/'
            AZURE_TENANT_ID = '<Tenant_ID>'
        )
    )
    ALLOW_WRITES = false;
    

    Note

    Snowflake ต้องเป็นแบบแผน azure://URL ดังนั้นอย่าลืมเปลี่ยนhttps://เป็นazure://

    แทนที่ <path_to_data_item> ด้วยเส้นทางไปยังรายการข้อมูลของคุณ เช่นhttps://onelake.dfs.fabric.microsoft.com/83896315-c5ba-4777-8d1c-e4ab3a7016bc/a95f62fa-2826-49f8-b561-a163ba537828

  4. ตอนนี้ไดรฟ์ข้อมูลภายนอกของคุณถูกสร้างขึ้นแล้ว ให้เรียกใช้คําสั่งต่อไปนี้เพื่อเรียกใช้ URL ความยินยอมและชื่อของแอปพลิเคชันที่ Snowflake ใช้เขียนไปยัง OneLake แอปพลิเคชันนี้ใช้โดยไดรฟ์ข้อมูลภายนอกใด ๆ ในบัญชี Snowflake ของคุณ

    DESC EXTERNAL VOLUME onelake_read_exvol;
    

    ผลลัพธ์ของคําสั่งนี้ส่งกลับAZURE_CONSENT_URLคุณสมบัติ และAZURE_MULTI_TENANT_APP_NAME จดบันทึกค่าทั้งสองไว้ ชื่อแอปแบบหลายผู้เช่า Azure มีลักษณะเหมือน <name>_<number>แต่คุณจําเป็นต้องจับภาพ <name> ส่วนเท่านั้น

  5. เปิด URL ความยินยอม จากขั้นตอนก่อนหน้าในแท็บเบราว์เซอร์ใหม่ ถ้าคุณยังไม่ได้ดําเนินการนี้ก่อนหน้านี้ หากคุณต้องการดําเนินการต่อ ให้ยินยอมตามสิทธิ์แอปพลิเคชันที่จําเป็น หากได้รับพร้อมท์ ระบบอาจนําคุณไปยังเว็บไซต์ Snowflake หลัก

  6. กลับไปใน Fabric เปิดพื้นที่ทํางานของคุณและเลือกจัดการการเข้าถึง จากนั้นเพิ่มบุคคลหรือกลุ่ม อนุญาตให้แอปพลิเคชันที่ใช้โดยไดรฟ์ข้อมูลภายนอกของ Snowflake ของคุณ มีสิทธิ์ที่จําเป็นในการอ่านข้อมูลจากรายการข้อมูลในพื้นที่ทํางานของคุณ

    Tip

    คุณอาจเลือกที่จะให้สิทธิ์ที่ระดับรายการข้อมูลถ้าคุณต้องการ เรียนรู้เพิ่มเติมเกี่ยวกับ การเข้าถึงข้อมูล OneLake

  7. สร้างวัตถุใน CATALOG INTEGRATION Snowflake ถ้าคุณยังไม่ได้ทําสิ่งนี้ก่อนหน้านี้ การดําเนินการนี้จําเป็นต้องมีโดย Snowflake เพื่ออ้างอิงตาราง Iceberg ที่มีอยู่ในที่เก็บข้อมูล

    CREATE CATALOG INTEGRATION onelake_catalog_integration
    CATALOG_SOURCE = OBJECT_STORE
    TABLE_FORMAT = ICEBERG
    ENABLED = TRUE;
    
  8. กลับไปใน Snowflake สร้างตาราง Iceberg ที่อ้างอิงไฟล์เมตาดาต้าล่าสุดสําหรับตาราง Iceberg เสมือนใน OneLake

    CREATE OR REPLACE ICEBERG TABLE MYDATABASE.PUBLIC.<TABLE_NAME>
    EXTERNAL_VOLUME = 'onelake_read_exvol'
    CATALOG = onelake_catalog_integration
    METADATA_FILE_PATH = '<metadata_file_path>';
    

    Note

    แทนที่ <TABLE_NAME> ด้วยชื่อตารางของคุณ และ <metadata_file_path> ด้วยเส้นทางไฟล์เมตาดาต้าของตาราง Iceberg ของคุณ เช่นdbo/MyTable/metadata/321.metadata.json

    หลังจากเรียกใช้คําสั่งนี้ ตอนนี้คุณมีการอ้างอิงไปยังตาราง Iceberg เสมือนของคุณที่คุณสามารถคิวรีได้โดยใช้ Snowflake

  9. คิวรีตาราง Iceberg เสมือนของคุณโดยการเรียกใช้คําสั่งต่อไปนี้

    SELECT TOP 10 * FROM MYDATABASE.PUBLIC.<TABLE_NAME>;
    

Troubleshooting

ดู ส่วนการแก้ไขปัญหา และ ข้อจํากัดและข้อควรพิจารณา ของเอกสารประกอบของเราของการจําลองเสมือนรูปแบบตาราง OneLake และการแปลงระหว่าง Delta Lake และรูปแบบตาราง Apache Iceberg