Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Microsoft OneLake kann mit Snowflake für die Speicherung und den Zugriff auf Apache Iceberg-Tabellen verwendet werden.
Befolgen Sie diesen Leitfaden, um Snowflake auf Azure zu verwenden, um:
- Iceberg-Tabellen direkt in OneLake schreiben
- virtuelle Iceberg-Tabellen lesen, die aus dem Delta Lake-Format konvertiert wurden
Important
Dieses Feature befindet sich in der Vorschauphase.
Bevor Sie beginnen, führen Sie die nachstehend aufgeführten erforderlichen Schritte aus.
Prerequisite
Um Snowflake auf Azure zum Schreiben oder Lesen von Iceberg-Tabellen mit OneLake zu verwenden, muss die Identität Ihres Snowflake-Kontos in entra ID in der Lage sein, mit Fabric zu kommunizieren. Aktivieren Sie die Einstellungen auf Fabric-Mandantenebene, mit denen Dienstprinzipale Fabric-APIs aufrufen und OneLake-APIs aufrufen können.
Eine Iceberg-Tabelle in OneLake schreiben mithilfe von Snowflake auf Azure
Wenn Sie Snowflake in Azure verwenden, können Sie Iceberg-Tabellen in OneLake schreiben, indem Sie die folgenden Schritte ausführen:
Stellen Sie sicher, dass sich die Fabric-Kapazität am selben Azure-Speicherort wie die Snowflake-Instanz befindet.
Ermitteln Sie den Standort der Fabric-Kapazität, die dem Fabric-Lakehouse zugeordnet ist. Öffnen Sie die Einstellungen des Fabric-Arbeitsbereichs, in dem das Lakehouse enthalten ist.
Überprüfen Sie in der unteren linken Ecke der Schnittstelle für das Snowflake-Konto in Azure die Azure-Region des Snowflake-Kontos.
Wenn diese Regionen nicht identisch sind, müssen Sie eine andere Fabric-Kapazität verwenden, die sich in derselben Region wie das Snowflake-Konto befindet.
Öffnen Sie das Menü für den Bereich „Dateien“ des Lakehouse, wählen Sie „Eigenschaften“ aus, und kopieren Sie die URL (den HTTPS-Pfad) dieses Ordners.
Ermitteln Sie Ihre Fabric-Mandanten-ID. Wählen Sie Ihr Benutzerprofil in der oberen rechten Ecke der Fabric-Benutzeroberfläche aus, und zeigen Sie auf die Infoblase neben Ihrem Mandantennamen. Kopieren Sie die Tenant ID (Mandanten-ID).
Richten Sie in Snowflake den
EXTERNAL VOLUMEmithilfe des Pfads zumFiles-Ordner in Ihrem Data Lakehouse ein. Hier finden Sie weitere Informationen zum Einrichten externer Snowflake-Volumes.Note
Snowflake erfordert, dass das URL-Schema
azure://ist, daher achten Sie darauf, den Pfad vonhttps://zuazure://zu ändern.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>' ) );In diesem Beispiel werden alle Tabellen, die mit diesem externen Volume erstellt wurden, im Fabric-Lakehouse im Ordner
Files/icebergtablesgespeichert.Nachdem das externe Volume erstellt wurde, führen Sie den folgenden Befehl aus, um die Zustimmungs-URL und den Namen der Anwendung abzurufen, die Snowflake zum Schreiben in OneLake verwendet. Diese Anwendung wird allen anderen externen Volumes im Snowflake-Konto verwendet.
DESC EXTERNAL VOLUME onelake_write_exvol;Die Ausgabe dieses Befehls gibt die Eigenschaften
AZURE_CONSENT_URLundAZURE_MULTI_TENANT_APP_NAMEzurück. Notieren Sie sich beide Werte. Der Name der mehrinstanzenfähigen Azure-App sieht wie folgt aus:<name>_<number>. Sie müssen jedoch nur den<name>-Teil notieren.Öffnen Sie die Zustimmungs-URL aus dem vorherigen Schritt in einem neuen Tab, wenn Sie dies zuvor noch nicht getan haben. Wenn Sie fortfahren möchten, stimmen Sie den erforderlichen Anwendungsberechtigungen zu, wenn Sie dazu aufgefordert werden. Möglicherweise werden Sie auf die Haupt-Snowflake-Website umgeleitet.
Kehren Sie zu Fabric zurück, öffnen Sie den Arbeitsbereich, und wählen Sie Zugriff verwalten und dann Fügen Sie Personen oder Gruppen hinzu aus. Erteilen Sie der Anwendung, die vom externen Snowflake-Volume verwendet wird, die Berechtigungen, die zum Schreiben von Daten in Lakehouses in Ihrem Arbeitsbereich erforderlich sind. Es wird empfohlen, die Rolle Mitwirkender zu gewähren.
Kehren Sie zu Snowflake zurück, und verwenden Sie das neue externe Volume, um eine Iceberg-Tabelle zu erstellen.
CREATE OR REPLACE ICEBERG TABLE MYDATABASE.PUBLIC.Inventory ( InventoryId int, ItemName STRING ) EXTERNAL_VOLUME = 'onelake_write_exvol' CATALOG = 'SNOWFLAKE' BASE_LOCATION = 'Inventory/';Nach ausführung dieser Anweisung wurde ein neuer Iceberg-Tabellenordner mit dem Namen "Inventory" innerhalb des ordnerpfads erstellt, der im externen Volume definiert ist.
Fügen Sie einige Daten zur Iceberg-Tabelle hinzu.
INSERT INTO MYDATABASE.PUBLIC.Inventory VALUES (123456,'Amatriciana');Schließlich können Sie im Bereich „Tabellen“ desselben Lakehouse eine OneLake-Verknüpfung zur Iceberg-Tabelle erstellen. Über diese Verknüpfung wird die Iceberg-Tabelle als Delta Lake-Tabelle angezeigt, die in Fabric-Workloads verwendet werden kann.
Lesen einer virtuellen Iceberg-Tabelle aus OneLake mithilfe von Snowflake auf Azure
Wenn Sie Snowflake auf Azure verwenden möchten, um eine virtuelle Iceberg-Tabelle zu lesen, die auf einer Delta Lake-Tabelle in Fabric basiert, führen Sie die folgenden Schritte aus.
Befolgen Sie den Leitfaden, um zu bestätigen, dass Ihre Delta Lake-Tabelle erfolgreich in Iceberg konvertiert wurde, und notieren Sie sich den Pfad zum Datenelement, das Ihre Tabelle enthält, sowie die neueste
*.metadata.jsonDatei Ihrer Tabelle.Ermitteln Sie Ihre Fabric-Mandanten-ID. Wählen Sie Ihr Benutzerprofil in der oberen rechten Ecke der Fabric-Benutzeroberfläche aus, und zeigen Sie auf die Infoblase neben Ihrem Mandantennamen. Kopieren Sie die Tenant ID (Mandanten-ID).
Richten Sie in Snowflake den
EXTERNAL VOLUMEPfad zumTablesOrdner des Datenelements ein, das die Tabelle enthält. Hier finden Sie weitere Informationen zum Einrichten externer Snowflake-Volumes.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
Das URL-Schema für Snowflake muss
azure://lauten. Achten Sie daher darauf,https://inazure://zu ändern.Ersetzen Sie
<path_to_data_item>durch den Pfad zu Ihrem Datenelement, wiehttps://onelake.dfs.fabric.microsoft.com/83896315-c5ba-4777-8d1c-e4ab3a7016bc/a95f62fa-2826-49f8-b561-a163ba537828.Nachdem das externe Volume erstellt wurde, führen Sie den folgenden Befehl aus, um die Zustimmungs-URL und den Namen der Anwendung abzurufen, die Snowflake zum Schreiben in OneLake verwendet. Diese Anwendung wird allen anderen externen Volumes im Snowflake-Konto verwendet.
DESC EXTERNAL VOLUME onelake_read_exvol;Die Ausgabe dieses Befehls gibt die Eigenschaften
AZURE_CONSENT_URLundAZURE_MULTI_TENANT_APP_NAMEzurück. Notieren Sie sich beide Werte. Der Name der mehrinstanzenfähigen Azure-App sieht wie folgt aus:<name>_<number>. Sie müssen jedoch nur den<name>-Teil notieren.Öffnen Sie die Zustimmungs-URL aus dem vorherigen Schritt in einem neuen Tab, wenn Sie dies zuvor noch nicht getan haben. Wenn Sie fortfahren möchten, stimmen Sie den erforderlichen Anwendungsberechtigungen zu, wenn Sie dazu aufgefordert werden. Möglicherweise werden Sie auf die Haupt-Snowflake-Website umgeleitet.
Kehren Sie zu Fabric zurück, öffnen Sie den Arbeitsbereich, und wählen Sie Zugriff verwalten und dann Fügen Sie Personen oder Gruppen hinzu aus. Gewähren Sie der Anwendung, die von Ihrem Snowflake-Externvolumen verwendet wird, die Berechtigungen, die erforderlich sind, um Daten aus Datenobjekten in Ihrem Arbeitsbereich zu lesen.
Tip
Wenn Sie möchten, können Sie stattdessen Berechtigungen auf Datenelementebene erteilen. Erfahren Sie mehr über den OneLake-Datenzugriff.
Erstellen Sie das
CATALOG INTEGRATIONObjekt in Snowflake, wenn Sie dies zuvor noch nicht getan haben. Dies ist von Snowflake erforderlich, um auf vorhandene Iceberg-Tabellen im Speicher zu verweisen.CREATE CATALOG INTEGRATION onelake_catalog_integration CATALOG_SOURCE = OBJECT_STORE TABLE_FORMAT = ICEBERG ENABLED = TRUE;Erstellen Sie in Snowflake eine Iceberg-Tabelle, die auf die neueste Metadatendatei für die virtualisierte Iceberg-Tabelle in OneLake verweist.
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
Ersetzen Sie
<TABLE_NAME>durch Ihren Tabellennamen und<metadata_file_path>mit dem Metadatendateipfad Ihrer Iceberg-Tabelle, wiedbo/MyTable/metadata/321.metadata.json.Nachdem Sie diese Anweisung ausgeführt haben, haben Sie jetzt einen Verweis auf Ihre virtualisierte Iceberg-Tabelle, die Sie jetzt mit Snowflake abfragen können.
Führen Sie die folgende Anweisung aus, um Ihre virtualisierte Iceberg-Tabelle abzufragen.
SELECT TOP 10 * FROM MYDATABASE.PUBLIC.<TABLE_NAME>;
Troubleshooting
Siehe die Abschnitte zur Problembehandlung und zu Einschränkungen und Überlegungen in unserer Dokumentation zur Virtualisierung des OneLake-Tabellenformats und zur Konvertierung zwischen Delta Lake- und Apache Iceberg-Tabellenformaten.