Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
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:
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.
I det nedre vänstra hörnet av ditt Snowflake på Azure-kontogränssnittet kontrollerar du Azure-regionen för Snowflake-kontot.
Om dessa regioner är olika måste du använda en annan infrastrukturkapacitet i samma region som ditt Snowflake-konto.
Öppna menyn för området Filer i ditt lakehouse, välj Egenskaper och kopiera URL:en (HTTPS-sökvägen) för mappen.
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.
I Snowflake konfigurerar du din
EXTERNAL VOLUMEmed hjälp av sökvägen tillFilesmapp 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ånhttps://tillazure://.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/icebergtablesmappen .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_URLegenskaperna ochAZURE_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.Ö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.
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 .
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.
Lägg till lite data i din Iceberg-tabell.
INSERT INTO MYDATABASE.PUBLIC.Inventory VALUES (123456,'Amatriciana');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.
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.jsonfil.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.
I Snowflake konfigurerar du din
EXTERNAL VOLUMEmed hjälp av sökvägen tillTablesmappen 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 ändrahttps://tillazure://.Ersätt
<path_to_data_item>med sökvägen till dataobjektet, till exempelhttps://onelake.dfs.fabric.microsoft.com/83896315-c5ba-4777-8d1c-e4ab3a7016bc/a95f62fa-2826-49f8-b561-a163ba537828.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_URLegenskaperna ochAZURE_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.Ö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.
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.
CATALOG INTEGRATIONSkapa 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;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 exempeldbo/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.
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.