Dela via


Använd Snowflake med Isbergstabeller i OneLake

Microsoft OneLake kan användas med Snowflake för lagring och åtkomst av Apache Iceberg-tabeller.

Följ den här guiden om du vill använda Snowflake i Azure för att:

  • skriva isbergstabeller direkt till OneLake
  • läsa virtuella isbergstabeller som konverterats från Delta Lake-formatet

Important

Den här funktionen är i förhandsversion.

Innan du börjar följer du de nödvändiga stegen som visas nedan.

Prerequisite

Om du vill använda Snowflake på Azure för att skriva eller läsa Iceberg-tabeller med OneLake måste ditt Snowflake-kontos identitet i Entra-ID kunna kommunicera med Fabric. Aktivera Fabric-inställningar på klientnivå som tillåter tjänstprincipaler att anropa Fabric-API:er och anropa OneLake-API:er.

Skriva en isbergstabell till OneLake med hjälp av Snowflake i Azure

Om du använder Snowflake i Azure kan du skriva Iceberg-tabeller till OneLake genom att följa dessa steg:

  1. Kontrollera att din Infrastrukturkapacitet finns på samma Azure-plats som din Snowflake-instans.

    Identifiera platsen för infrastrukturresurskapaciteten som är associerad med fabric lakehouse. Öppna inställningarna för arbetsytan Infrastruktur som innehåller ditt lakehouse.

    Skärmbild som visar kapacitetsregion för infrastrukturresurser.

    I det nedre vänstra hörnet av ditt Snowflake på Azure-kontogränssnittet kontrollerar du Azure-regionen för Snowflake-kontot.

    Skärmbild som visar Snowflake-kontoregionen.

    Om dessa regioner är olika måste du använda en annan infrastrukturkapacitet i samma region som ditt Snowflake-konto.

  2. Öppna menyn för området Filer i ditt lakehouse, välj Egenskaper och kopiera URL:en (HTTPS-sökvägen) för mappen.

    Skärmbild som visar menyalternativet Egenskaper.

  3. Identifiera ditt klient-ID för Infrastruktur. Välj din användarprofil i det övre högra hörnet i användargränssnittet för infrastrukturresurser och hovra över informationsbubblan bredvid ditt klientnamn. Kopiera klientorganisations-ID.

    Skärmbild som visar klientorganisations-ID.

  4. I Snowflake konfigurerar du din EXTERNAL VOLUME med hjälp av sökvägen till Files mapp i lakehouse. Mer information om hur du konfigurerar externa Snowflake-volymer finns här.

    Note

    Snowflake kräver att URL-schemat är azure://, så se till att ändra sökvägen från https:// till 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>'
        )
    );
    

    I det här exemplet lagras alla tabeller som skapats med den här externa volymen i Infrastruktursjöhuset i Files/icebergtables mappen .

  5. Nu när den externa volymen har skapats kör du följande kommando för att hämta medgivande-URL:en och namnet på det program som Snowflake använder för att skriva till OneLake. Det här programmet används av andra externa volymer i ditt Snowflake-konto.

    DESC EXTERNAL VOLUME onelake_write_exvol;
    

    Utdata från det här kommandot returnerar AZURE_CONSENT_URL egenskaperna och AZURE_MULTI_TENANT_APP_NAME . Anteckna båda värdena. Namnet på azure-appen för flera klientorganisationer ser ut som <name>_<number>, men du behöver bara samla in <name> delen.

  6. Öppna medgivande-URL:en från föregående steg på en ny webbläsarflik om du inte har gjort det tidigare. Om du vill fortsätta godkänner du de nödvändiga programbehörigheterna om du uppmanas att göra det. Du kan omdirigeras till snowflakes huvudwebbplats.

  7. I Infrastruktur öppnar du arbetsytan och väljer Hantera åtkomst och sedan Lägg till personer eller grupper. Ge programmet som används av din externa Snowflake-volym de behörigheter som krävs för att skriva data till lakehouses på din arbetsyta. Vi rekommenderar att du beviljar rollen Deltagare .

  8. Tillbaka i Snowflake använder du din nya externa volym för att skapa ett isbergsbord.

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

    När du har kört det här kommandot har en ny Iceberg-tabellmapp med namnet Inventory skapats i den mappsökväg som definieras i den externa volymen.

  9. Lägg till lite data i din Iceberg-tabell.

    INSERT INTO MYDATABASE.PUBLIC.Inventory
    VALUES
    (123456,'Amatriciana');
    
  10. Slutligen kan du skapa en OneLake-genväg till ditt Iceberg-bord i området Tabeller i samma sjöhus. Med den genvägen visas din Iceberg-tabell som en Delta Lake-tabell för förbrukning i infrastrukturarbetsbelastningar.

Läs en virtuell Iceberg-tabell från OneLake med hjälp av Snowflake på Azure

Följ dessa steg om du vill använda Snowflake i Azure för att läsa en virtuell isbergstabell baserat på en Delta Lake-tabell i Fabric.

  1. Följ guiden för att bekräfta att Delta Lake-tabellen har konverterats till Iceberg och anteckna sökvägen till dataobjektet som innehåller tabellen samt tabellens senaste *.metadata.json fil.

  2. Identifiera ditt klient-ID för Infrastruktur. Välj din användarprofil i det övre högra hörnet i användargränssnittet för infrastrukturresurser och hovra över informationsbubblan bredvid ditt klientnamn. Kopiera klientorganisations-ID.

    Skärmbild som visar klientorganisations-ID.

  3. I Snowflake konfigurerar du din EXTERNAL VOLUME med hjälp av sökvägen till Tables mappen för det dataobjekt som innehåller tabellen. Mer information om hur du konfigurerar externa Snowflake-volymer finns här.

    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 kräver att URL-schemat är azure://, så se till att ändra https:// till azure://.

    Ersätt <path_to_data_item> med sökvägen till dataobjektet, till exempel https://onelake.dfs.fabric.microsoft.com/83896315-c5ba-4777-8d1c-e4ab3a7016bc/a95f62fa-2826-49f8-b561-a163ba537828.

  4. Nu när den externa volymen har skapats kör du följande kommando för att hämta medgivande-URL:en och namnet på det program som Snowflake använder för att skriva till OneLake. Det här programmet används av andra externa volymer i ditt Snowflake-konto.

    DESC EXTERNAL VOLUME onelake_read_exvol;
    

    Utdata från det här kommandot returnerar AZURE_CONSENT_URL egenskaperna och AZURE_MULTI_TENANT_APP_NAME . Anteckna båda värdena. Namnet på azure-appen för flera klientorganisationer ser ut som <name>_<number>, men du behöver bara samla in <name> delen.

  5. Öppna medgivande-URL:en från föregående steg på en ny webbläsarflik om du inte har gjort det tidigare. Om du vill fortsätta godkänner du de nödvändiga programbehörigheterna om du uppmanas att göra det. Du kan omdirigeras till snowflakes huvudwebbplats.

  6. I Infrastruktur öppnar du arbetsytan och väljer Hantera åtkomst och sedan Lägg till personer eller grupper. Ge programmet som används av din externa Snowflake-volym de behörigheter som krävs för att läsa data från dataobjekt på din arbetsyta.

    Tip

    Du kan i stället välja att bevilja behörigheter på dataobjektsnivå om du vill. Läs mer om OneLake-dataåtkomst.

  7. CATALOG INTEGRATION Skapa objektet i Snowflake om du inte har gjort det tidigare. Detta krävs av Snowflake för att referera till befintliga Iceberg-tabeller i lagring.

    CREATE CATALOG INTEGRATION onelake_catalog_integration
    CATALOG_SOURCE = OBJECT_STORE
    TABLE_FORMAT = ICEBERG
    ENABLED = TRUE;
    
  8. I Snowflake skapar du en Isbergstabell som refererar till den senaste metadatafilen för den virtualiserade Iceberg-tabellen i 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

    Ersätt <TABLE_NAME> med tabellnamnet och <metadata_file_path> med isbergstabellens metadatafilsökväg, till exempel dbo/MyTable/metadata/321.metadata.json.

    När du har kört den här instruktionen har du en referens till din virtualiserade Iceberg-tabell som du kan ställa frågor mot med hjälp av Snowflake.

  9. Kör en fråga på din virtualiserade Iceberg-tabell genom att köra följande uttalande.

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

Troubleshooting

Se avsnitten felsökning och begränsningar och överväganden i vår dokumentation om virtualisering och konvertering av OneLake-tabellformat mellan Delta Lake- och Apache Iceberg-tabellformat.