Verwenden von Iceberg-Tabellen mit OneLake

In OneLake können Sie nahtlos mit Tabellen in Delta Lake- und Apache Iceberg-Formaten arbeiten.

Diese Flexibilität wird durch die Metadatenvirtualisierung ermöglicht, ein Feature, mit dem Iceberg-Tabellen als Delta Lake-Tabellen interpretiert werden können und umgekehrt. Sie können Iceberg-Tabellen direkt schreiben oder Verknüpfungen zu ihnen erstellen, sodass diese Tabellen für verschiedene Fabric-Workloads zugänglich sind. Ebenso können Fabric-Tabellen, die im Delta Lake-Format geschrieben wurden, mit Iceberg-Lesern gelesen werden.

Wenn Sie eine Verknüpfung zu einem Iceberg-Tabellenordner schreiben oder erstellen, generiert OneLake automatisch virtuelle Delta Lake-Metadaten (Delta-Protokoll) für die Tabelle, wodurch die Verwendung mit Fabric-Workloads ermöglicht wird. Umgekehrt enthalten Delta Lake-Tabellen jetzt virtuelle Iceberg-Metadaten und ermöglichen die Kompatibilität mit Iceberg-Lesern.

Diagramm mit Tabellenvirtualisierung von Iceberg zu Delta Lake.

Während dieser Artikel Anleitungen für die Verwendung von Iceberg-Tabellen mit Snowflake enthält, ist dieses Feature für die Verwendung mit Iceberg-Tabellen und im Speicher befindlichen Datendateien im Parquet-Format vorgesehen.

Delta-Lake-Tabellen als Iceberg virtualisieren

Führen Sie die folgenden Schritte aus, um die automatische Konvertierung und Virtualisierung von Tabellen aus dem Delta Lake-Format in das Iceberg-Format einzurichten.

  1. Stellen Sie sicher, dass sich Ihre Delta Lake-Tabelle oder eine Verknüpfung dazu im Tables Abschnitt Ihres Datenelements befindet. Das Datenelement könnte ein Seehaus oder ein anderes Fabric-Datenelement sein.

    Tipp

    Wenn Ihr Lakehouse schema-aktiviert ist, befindet sich Ihr Tabellenverzeichnis direkt in einem Schema, wie z. B. dbo. Wenn Ihr Lakehouse nicht schemafähig ist, befindet sich Ihr Tabellenverzeichnis direkt im Tables Verzeichnis.

  2. Vergewissern Sie sich, dass Ihre Delta Lake-Tabelle erfolgreich in das virtuelle Iceberg-Format konvertiert wurde. Sie können dies tun, indem Sie das Verzeichnis hinter der Tabelle untersuchen.

    Um das Verzeichnis anzuzeigen, wenn sich Ihre Tabelle in einem Seehaus befindet, können Sie mit der rechten Maustaste auf die Tabelle in der Fabric-Benutzeroberfläche klicken und "Dateien anzeigen" auswählen.

    Wenn sich Ihre Tabelle in einem anderen Datenelementtyp befindet, z. B. einem Lagerhaus, einer Datenbank oder einer gespiegelten Datenbank, müssen Sie einen Client wie Azure Storage-Explorer oder OneLake-Datei-Explorer anstelle der Fabric-Benutzeroberfläche verwenden, um die Dateien hinter der Tabelle anzuzeigen.

  3. Sie sollten ein Verzeichnis mit dem Namen metadata innerhalb des Tabellenordners sehen, und es sollte mehrere Dateien enthalten, einschließlich der Konvertierungsprotokolldatei. Öffnen Sie die Konvertierungsprotokolldatei, um weitere Informationen zum Delta Lake zu Iceberg-Konvertierung anzuzeigen, einschließlich des Zeitstempels der letzten Konvertierung und aller Fehlerdetails.

  4. Wenn die Konvertierungsprotokolldatei anzeigt, dass die Tabelle erfolgreich konvertiert wurde, lesen Sie die Iceberg-Tabelle mit Ihrem Dienst, Ihrer App oder Bibliothek.

    Je nachdem, welchen Iceberg-Reader Sie verwenden, müssen Sie entweder den Pfad zum Tabellenverzeichnis oder zur zuletzt im .metadata.json Verzeichnis angezeigten metadata Datei kennen.

    Sie können den HTTP-Pfad zur neuesten Metadatendatei Ihrer Tabelle anzeigen, indem Sie die Eigenschaftenansicht für die *.metadata.json Datei mit der höchsten Versionsnummer öffnen. Notieren Sie sich diesen Pfad.

    Der Pfad zum Ordner Ihres Datenelements Tables könnte so aussehen:

    https://onelake.dfs.fabric.microsoft.com/83896315-c5ba-4777-8d1c-e4ab3a7016bc/a95f62fa-2826-49f8-b561-a163ba537828/Tables/
    

    Innerhalb dieses Ordners könnte der relative Pfad zur neuesten Metadatendatei so aussehen.dbo/MyTable/metadata/321.metadata.json

    Um Ihre virtuelle Iceberg-Tabelle mit Snowflake zu lesen, befolgen Sie die Schritte in diesem Leitfaden.

Erstellen einer Schnellzugriffsverknüpfung zu einer Iceberg-Tabelle

Wenn Sie bereits über eine Iceberg-Tabelle an einem Speicherort verfügen, der von OneLake-Verknüpfungen unterstützt wird, führen Sie die folgenden Schritte aus, um eine Verknüpfung zu erstellen und die Iceberg-Tabelle im Delta Lake-Format anzuzeigen.

  1. Suchen Sie die Iceberg-Tabelle. Suchen Sie den Speicherort der Iceberg-Tabelle. Das kann Azure Data Lake Storage, OneLake, Amazon S3, Google Cloud Storage oder ein S3-kompatibler Speicherdienst sein.

    Hinweis

    Wenn Sie Snowflake verwenden und nicht sicher sind, wo die Iceberg-Tabelle gespeichert ist, können Sie die folgende Anweisung ausführen, um den Speicherort der Iceberg-Tabelle anzuzeigen.

    SELECT SYSTEM$GET_ICEBERG_TABLE_INFORMATION('<table_name>');

    Wenn Sie diese Anweisung ausführen, wird ein Pfad zur Metadatendatei für die Iceberg-Tabelle zurückgegeben. Dieser Pfad gibt an, in welchem Speicherkonto die Iceberg-Tabelle enthalten ist. Nachfolgend sehen Sie ein Beispiel mit den relevanten Informationen, um den Pfad einer in Azure Data Lake Storage gespeicherten Iceberg-Tabelle zu finden:

    {"metadataLocation":"azure://<storage_account_path>/<path_within_storage>/<table_name>/metadata/00001-389700a2-977f-47a2-9f5f-7fd80a0d41b2.metadata.json","status":"success"}

    Der Iceberg-Tabellenordner muss einen Ordner metadata enthalten, der selbst mindestens eine Datei enthält, die auf .metadata.json endet.

  2. Erstellen Sie in Ihrem Fabric Lakehouse eine neue Tabellenverknüpfung im Tabellenbereich eines Seehauses.

    Tipp

    Wenn Schemas wie dbo unter dem Ordner "Tabellen" Ihres Lakehouse angezeigt werden, ist das Lakehouse schemafähig. Klicken Sie in diesem Fall mit der rechten Maustaste auf das Schema, und erstellen Sie eine Tabellenverknüpfung unter dem Schema.

    Screenshot, der die neue Verknüpfungsaktion zeigt.

  3. Wählen Sie für den Zielpfad der Verknüpfung den Iceberg-Tabellenordner aus. Der Iceberg-Tabellenordner enthält die Ordner metadata und data.

  4. Sobald Ihre Verknüpfung erstellt wurde, sollte diese Tabelle automatisch als Delta Lake-Tabelle in Ihrem Lakehouse angezeigt werden und steht dann zur Verwendung in Fabric bereit.

    Screenshot mit erstellter Verknüpfung.

    Wenn die neue Verknüpfung zur Iceberg-Tabelle nicht als verwendbare Tabelle angezeigt wird, überprüfen Sie den Abschnitt Problembehandlung.

Problembehandlung

Anhand der folgenden Tipps können Sie sicherstellen, dass die Iceberg-Tabellen mit diesem Feature kompatibel sind:

Überprüfen der Ordnerstruktur der Iceberg-Tabelle

Öffnen Sie den Iceberg-Ordner in Ihrem bevorzugten Speicher-Explorertool, und überprüfen Sie die Verzeichnisauflistung des Iceberg-Ordners am ursprünglichen Speicherort. Sie sollten eine Ordnerstruktur wie im folgenden Beispiel sehen:

../
|-- 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

Wenn der Metadatenordner oder die Dateien mit den in diesem Beispiel gezeigten Erweiterungen nicht angezeigt werden, verfügen Sie möglicherweise nicht über eine ordnungsgemäß generierte Iceberg-Tabelle.

Überprüfen des Konvertierungsprotokolls

Wenn eine Iceberg-Tabelle als Delta Lake-Tabelle virtualisiert wird, wird im Verknüpfungsordner der Ordner _delta_log/ angezeigt. Dieser Ordner enthält nach erfolgreicher Konvertierung die Metadaten des Delta Lake-Formats (das Delta-Protokoll).

Dieser Ordner enthält auch die Datei latest_conversion_log.txt, die Informationen darüber enthält, ob die letzte Konvertierung erfolgreich war oder fehlgeschlagen ist.

Wenn Sie den Inhalt dieser Datei nach dem Erstellen der Verknüpfung anzeigen möchten, öffnen Sie im Bereich „Tabellen“ Ihres Lakehouses das Menü für die Iceberg-Tabellenverknüpfung und wählen Sie Dateien anzeigen aus.

Screenshot des Menüelements „Dateien anzeigen“

Sie sollten eine Struktur wie im folgenden Beispiel sehen:

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.

Öffnen Sie die Protokolldatei für die Konvertierung, um Details zur letzten Konvertierungszeit oder zu Fehlern anzuzeigen. Wenn keine Protokolldatei für die Konvertierung angezeigt wird, wurde kein Konvertierungsversuch unternommen.

Verstehen Sie das Konvertierungsprotokoll und die Fehlerkategorien

Die latest_conversion_log.txt Datei zeichnet den letzten Konvertierungsversuch auf. Wenn Sie eine Iceberg-Tabelle als Delta Lake virtualisieren, finden Sie diese Datei im Ordner der _delta_log/ Tabelle. Wenn du eine Delta Lake-Tabelle als Iceberg virtualisierst, befindet sie sich im Ordner der Tabelle metadata/ . Die Datei ist Klartext. Wenn eine Konvertierung fehlschlägt, latest_conversion_log.txt enthält sie einen strukturierten Block ähnlich wie folgt:

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>

Verwenden Sie die Fehlerkategorie , um zu entscheiden, was als Nächstes zu tun ist:

  • USER bedeutet, dass die Quelltabelle etwas enthält, das diese Funktion nicht konvertieren kann. Fehlerdetails beschreiben, was behoben werden soll. Passen Sie die Quelltabelle an (siehe Einschränkungen und Überlegungen) und setzen Sie dann eine Änderung an der Quelltabelle vor. Erneute Konvertierungsversuche erfolgen automatisch nach dem nächsten Commit.

  • SYSTEM bedeutet, dass ein interner oder vorübergehender Fehler aufgetreten ist und es nichts zu beheben in der Quelltabelle gibt. Um einen weiteren Konvertierungsversuch auszulösen, nehmen Sie eine Änderung an der Quelltabelle vor. Wenn die Fehler bestehen, kontaktieren Sie den Support und stellen Sie die gesamte latest_conversion_log.txt Datei bereit.

Wenn kein Konvertierungsversuch unternommen wurde

Wenn keine Protokolldatei für die Konvertierung angezeigt wird, wurde kein Konvertierungsversuch unternommen. Nachfolgend sind zwei häufige Gründe aufgeführt, warum kein Konvertierungsversuch unternommen wird:

  • Die Verknüpfung wurde nicht an der richtigen Stelle erstellt.

    Damit eine Verknüpfung zu einer Iceberg-Tabelle in das Delta Lake-Format konvertiert werden kann, muss die Verknüpfung direkt unter dem Ordner „Tabellen“ eines Lakehouse platziert werden, das nicht für Schemas aktiviert ist. Sie dürfen die Verknüpfung nicht im Bereich „Dateien“ oder unter einem anderen Ordner platzieren, wenn die Tabelle automatisch als Delta Lake-Tabelle virtualisiert werden soll.

    Screenshot der richtigen Platzierung einer Verknüpfung im Ordner „Tabellen“

  • Der Zielpfad der Verknüpfung ist nicht der Pfad des Iceberg-Ordners.

    Wenn Sie die Verknüpfung erstellen, muss der Ordnerpfad, den Sie als Zielspeicherort auswählen, ausschließlich der Ordner der Iceberg-Tabelle sein. Dieser Ordner enthält die Dateien metadata und data.

    Screenshot des Inhalts eines Verknüpfungszielpfads während der Erstellung der Verknüpfung.

Fehlermeldung "Fabric-Kapazitätsregion kann nicht überprüft werden" in Snowflake

Wenn Sie Snowflake verwenden, um eine neue Iceberg-Tabelle in OneLake zu schreiben, wird möglicherweise die folgende Fehlermeldung angezeigt:

Der Fabric-Kapazitätsbereich kann nicht überprüft werden. Grund: 'Ungültiges Zugriffstoken. Dies kann auf Authentifizierung und Bereichsdefinition zurückzuführen sein. Überprüfen Sie delegierte Zugriffsbereiche.

Wenn dieser Fehler angezeigt wird, lassen Sie Ihren Fabric-Mandantenadministrator überprüfen, ob beide in dem Abschnitt Schreiben einer Iceberg-Tabelle in OneLake mit Snowflake genannten Mandanteneinstellungen aktiviert sind.

  1. Öffnen Sie in der oberen rechten Ecke der Fabric-Benutzeroberfläche Einstellungen, und wählen Sie das Verwaltungsportal aus.
  2. Aktivieren Sie unter "Mandanteneinstellungen" im Abschnitt " Entwicklereinstellungen " die Einstellung " Dienstprinzipale", die Fabric-APIs verwenden können.
  3. Aktivieren Sie im selben Bereich im Abschnitt OneLake-Einstellungen die Einstellung mit der Bezeichnung Benutzer können auf Daten, die in OneLake gespeichert sind, mit Apps außerhalb von Fabric darauf zugreifen.

Einschränkungen und Aspekte

Beachten Sie die folgenden Einschränkungen, wenn Sie diese Funktion nutzen. Einige Einschränkungen gelten für beide Umwandlungsrichtungen. Andere beziehen sich speziell auf die Umwandlung von Delta Lake in Iceberg oder Iceberg in Delta Lake.

Wie Umwandlungsprobleme auftreten

Wenn eine Quellfunktion nicht vollständig übersetzt werden kann, passiert eines von zwei Dingen. Beide Ergebnisse werden im Konversionsprotokoll angegeben.

Ergebnis Was ist los
Umwandlung fehlschlägt Es werden keine neuen Zielmetadaten erstellt. Die Tabelle behält ihre zuletzt erfolgreich konvertierte Version bei.
Funktion gestrichen Die Konvertierung gelingt, aber eine nicht unterstützte Spalte oder Partitionierung wird aus dem Ausgabetabellenformat weggelassen.

Allgemeine Einschränkungen

  • Unterstützung für die Apache Iceberg-Version

    Die unterstützte Iceberg-Version hängt von der Umwandlungsrichtung ab:

    Umwandlungsrichtung Verhalten der Eisberg-Version
    Delta Lake bis Iceberg Erzeugt Iceberg V2-Metadaten.
    Eisberg bis Delta Lake Unterstützt Iceberg V2-Quelltabellen. Iceberg V3-Quelltabellen werden teilweise unterstützt; siehe Iceberg V3-Funktionen.
  • Nur Parquet-Dateien

    Diese Funktion unterstützt nur Parquet als zugrundeliegendes Dateiformat für die Metadatenübersetzung in beiden Umwandlungsrichtungen.

  • Neueste Metadatenversion konvertiert

    Das Feature zur Virtualisierung des Tabellenformats konvertiert momentan die neueste Version der Tabellenmetadaten im ursprünglichen Tabellenformat. Wenn mehrere Versionen in das ursprüngliche Tabellenformat geschrieben werden, wird nur die neueste Tabellenmetadatenversion in das virtuelle Tabellenformat konvertiert.

  • Maximale Anzahl von Eingabetransaktionen

    Quelltabellen müssen weniger als 5.000 Transaktionen oder Commits haben, damit die Tabellenformat-Konvertierung stattfindet. Achten Sie darauf, Ihre Transaktionsprotokolle oder -manifeste zu kompaktieren, um die Anzahl der Transaktionen oder Commits zu reduzieren.

  • Konvertierungslatenz und Aktualisierungshäufigkeit

    Die Generierung von Tabellenformatmetadaten kann zwischen 5 Sekunden und 2 Minuten dauern. Stellen Sie sicher, dass die Aktualisierungen, die Sie an Ihrer Quelltabelle vornehmen, seltener als einmal alle zwei Minuten erfolgen. Andernfalls könnten Sie eine inkonsistente Ansicht des Ausgabetabellenformats sehen.

  • Schemaentwicklung

    In beiden Umwandlungsrichtungen werden Verbreiterungstypänderungen (zum Beispiel int nach long) unterstützt. Eine einschränkende oder anderweitig inkompatible Änderung des Typs führt dazu, dass die Konvertierung fehlschlägt.

Delta Lake bis Iceberg

Diese Einschränkungen gelten, wenn Sie eine Delta Lake-Tabelle als Iceberg virtualisieren.

Tipp

Für eine möglichst vollständige Konvertierung in Iceberg V2 verwenden Sie IcebergCompatV2, wenn die Quelltabelle keine Löschvektoren verwendet. Wenn die Tabelle Löschvektoren verwendet, verwenden Sie IcebergCompatV3; OneLake konvertiert sie in Iceberg V2-Positionslöschungen. Da diese Funktion Metadaten für Iceberg V2 erzeugt, werden Iceberg V3-only Features nicht konvertiert.

Die folgenden Überlegungen gelten, insbesondere für Delta-Lake-Tabellen , die nicht mit einer Schreibfunktion IcebergCompat geschrieben sind:

  • Verschachtelte array und map Spalten benötigen stabile Feld-IDs für ihr Element, Schlüssel und Wert. Ohne sie wird die Spalte mit verschachtelter Sammlung aus der Iceberg-Ausgabe entfernt (im Konvertierungsprotokoll vermerkt). IcebergCompat weist diese IDs zu.

  • Zeitstempel müssen als INT64 Mikrosekunden gespeichert werden. Eine Tabelle, deren Zeitstempel physisch als INT96 (Legacy) gespeichert sind, konvertiert, deren Zeitstempelspalten aber von Iceberg-Engines nicht gelesen werden können. IcebergCompat setzt INT64-Zeitstempel durch.

  • Spaltenumbenennungen — bleiben erhalten, wenn die Delta Lake-Tabelle die Spaltenzuordnung (name- oder id-Modus) verwendet, was IcebergCompat erfordert. Im Spaltenzuordnungsmodus noneerscheint eine Umbenennung als Entfernen und Hinzufügen einer Spalte.

  • Säulentypen — Nur Iceberg-kompatible Typen werden konvertiert; andere Spalten werden weggelassen (im Konvertierungslogbuch vermerkt). Zum Beispiel hat void kein Iceberg-Äquivalent. IcebergCompat beschränkt das Schema auf eine konvertierbare Typmenge.

  • Partitionierung — Identitäts- und zeitliche (Jahr, Monat, Tag, Stunde) Partitionen werden umgewandelt. Delta Lake verfügt über eine einseitige, tabellenweite Partitionierung.

Eisberg bis Delta Lake

Diese Einschränkungen gelten, wenn Sie eine Eisberg-Tabelle als Delta Lake virtualisieren.

  • Spaltenumbenennungen werden nicht unterstützt. Man kann eine Spalte in der Quell-Eisberg-Tabelle nicht umbenennen. Stattdessen erstelle die Tabelle mit den neuen Spaltennamen neu. Wenn Sie die Tabelle neu erstellen, entfernen Sie alle verbliebenen Metadatendateien, wie in der Einschränkung Iceberg-Tabellenordner dürfen nur einen Satz von Metadatendateien enthalten beschrieben.

  • Partitionstransformationen — Es werden nur Identitäts- und zeitliche (Jahr, Monat, Tag, Stunde) Transformationen unterstützt. Die truncate[W], void und bucket[N] Transformationen werden ignoriert: Die Tabelle wird dennoch konvertiert, jedoch ohne diese Partitionierung. Die zugrundeliegende Spalte bleibt als reguläre, nicht-partitionierte Spalte erhalten.

  • Partitionsentwicklung — Wenn die Live-Datendateien der Quelltabelle mehr als eine Partitionsspezifikation umfassen oder sich die Spalten einer zuvor konvertierten Tabelle ändern, wird die Konvertierung abgelehnt. Delta Lake verfügt über eine einheitliche, tabellenweite Partitionierung, und die Konvertierung von gemischten Spezifikationsdateien würde fälschlicherweise Null-Partitionswerte für die älteren Dateien erzeugen. Behalte eine einzelne Partitionsspezifikation.

  • Löschungen auf Zeilenebene — Iceberg-V2-Positionslöschungen und V3-Löschvektoren werden in Delta-Lake-Löschvektoren umgewandelt. Gleichheitslöschungen führen dazu, dass die Umwandlung fehlschlägt.

  • Nicht unterstützte Typen — Typen ohne Delta-Lake-Äquivalent (zum Beispiel time, und die Iceberg V3-erweiterten Typen) werden weggelassen; uuid wird auf Binärsysteme abgebildet. Siehe Iceberg V3-Funktionen.

  • Problem mit Zeichenbreite

    Wenn Sie Snowflake verwenden, um Ihre Eisberg-Tabelle zu schreiben und die Tabelle Spaltentypen INT64enthält, double, oder Decimal mit Genauigkeit >= 10, ist die resultierende virtuelle Delta-Lake-Tabelle möglicherweise nicht von allen Fabric-Engines verbrauchbar. Sie sehen möglicherweise Fehler wie:

    Parquet column cannot be converted in file ... Column: [ColumnA], Expected: decimal(18,4), Found: INT32.
    

    Wir arbeiten an der Behebung dieses Problems.

    Workaround: Wenn Sie die Vorschau-UI der Lakehouse-Tabelle verwenden und dieses Problem sehen, können Sie diesen Fehler beheben, indem Sie zur SQL-Analytics-Endpunktansicht wechseln (oben rechts, Lakehouse-Ansicht auswählen, zum SQL-Analytics-Endpunkt wechseln) und von dort aus die Tabelle vorschauen. Wenn Sie dann wieder zur Lakehouse-Ansicht wechseln, sollte die Tabellenvorschau ordnungsgemäß angezeigt werden.

    Wenn Sie ein Spark-Notebook oder einen Spark-Auftrag ausführen und dieses Problem auftritt, können Sie den Fehler beheben, indem Sie die Spark-Konfiguration spark.sql.parquet.enableVectorizedReader auf falsefestlegen. Hier ist ein Beispiel für einen PySpark-Befehl, der in einem Spark-Notebook ausgeführt werden kann:

    spark.conf.set("spark.sql.parquet.enableVectorizedReader","false")
    
  • Metadatenspeicher der Iceberg-Tabelle ist nicht portierbar

    Die Metadatendateien einer Iceberg-Tabelle verweisen unter Verwendung absoluter Pfadverweise aufeinander. Wenn Sie den Ordnerinhalt einer Iceberg-Tabelle an einen anderen Speicherort kopieren oder verschieben, ohne die Iceberg-Metadatendateien neu zu schreiben, wird die Tabelle für Iceberg-Reader unlesbar, einschließlich dieses OneLake-Features.

    Problemumgehung:

    Wenn Sie die Iceberg-Tabelle an einen anderen Ort verschieben müssen, um dieses Feature zu verwenden, verwenden Sie das Tool, mit dem die Iceberg-Tabelle ursprünglich geschrieben wurde, um eine neue Iceberg-Tabelle am gewünschten Ort zu schreiben.

  • Iceberg-Tabellenordner dürfen nur eine Gruppe von Metadatendateien enthalten

    Wenn Sie eine Iceberg-Tabelle in Snowflake ablegen und neu erstellen, werden die Metadatendateien nicht bereinigt. Dieses Verhalten ist designiert, um das UNDROP Feature in Snowflake zu unterstützen. Da die Verknüpfung jedoch direkt auf einen Ordner verweist und dieser Ordner jetzt mehrere Metadatendateien enthält, kann die Tabelle erst konvertiert werden, wenn Sie die Metadatendateien der alten Tabelle entfernen.

    Die Konvertierung schlägt fehl, wenn mehrere Metadatendateien im Metadatenordner der Iceberg-Tabelle gefunden werden.

    Problemumgehung:

    So stellen Sie sicher, dass die konvertierte Tabelle die richtige Version der Tabelle widerspiegelt:

    • Stellen Sie sicher, dass Sie nicht mehr als eine Iceberg-Tabelle im selben Ordner speichern.
    • Bereinigen Sie nach dem Ablegen der Tabelle alle Inhalte eines Iceberg-Tabellenordners, bevor Sie die Tabelle neu erstellen.
  • Metadatenänderungen werden nicht sofort widergespiegelt

    Wenn Sie Metadatenänderungen an Ihrer Iceberg-Tabelle vornehmen, wie zum Beispiel eine Spalte hinzufügen, eine Spalte löschen, eine Spalte umbenennen oder einen Spaltentyp ändern, kann es sein, dass die Tabelle erst wieder konvertiert wird, wenn eine Datenänderung vorgenommen wurde, etwa durch das Hinzufügen einer Datenzeile.

    Wir arbeiten daran, das Problem zu beheben, damit die richtige Metadatendatei ausgewählt wird, die die neueste Metadatenänderung enthält.

    Problemumgehung:

    Nachdem Sie die Schemaänderung an der Iceberg-Tabelle vorgenommen haben, fügen Sie eine Datenzeile hinzu, oder nehmen Sie eine andere Änderung an den Daten vor. Nach dieser Änderung sollten Sie die Tabelle aktualisieren können, um die neueste Ansicht in Fabric zu sehen.

Eigenschaften des Iceberg V3

Diese Funktion erzeugt und liest Metadaten von Iceberg V2; sie schreibt keine Metadaten von Iceberg V3. Wenn die Quelle eine Iceberg-V3-Tabelle ist, werden ihre Funktionen wie in der folgenden Tabelle beschrieben umgesetzt. Weggelassene Spalten und andere Übersetzungsanmerkungen werden im Umwandlungsprotokoll festgehalten.

Iceberg V3-Funktion Unterstützt Übersetzungsverhalten
Vektoren löschen Ja Gelesen und in Delta Lake-Löschvektoren konvertiert.
Reihenlinie No Row-Lineage-Metadaten werden nicht nach Delta Lake übertragen. Die Tabelle konvertiert weiterhin und ihre Zeilendaten bleiben unverändert.
Standard-Spaltenwerte No Eine Spalte mit einem Leser-Standardwert wird gestrichen. Standardeinstellungen für Schreibvorgänge werden nicht übersetzt.
Neue Datentypen (variant, georäumlich, Nanosekunden-Zeitstempel, unknown) No Spalten, die neue Iceberg V3-Datentypen verwenden, werden entfernt. Die vollständige Liste finden Sie unter Unterstützte Datentypen.
Partitionstransformationen mit mehreren Argumenten No Wird nicht unterstützt.
Tabellenverschlüsselungsschlüssel No Wird nicht unterstützt.

Important

Selbst wenn die Konvertierung Spalten mit neuen Iceberg V3-Datentypen entfernt, können einige Fabric-Engines keine Tabelle lesen, wenn die Datendateien Iceberg V3-Typen verwenden. Die Datendateien enthalten weiterhin diese Art von Informationen.

Workaround: Für die größtmögliche Kompatibilität über Fabric hinweg vermeiden Sie es, Iceberg V3-Spalten in virtualisierten Tabellen zu verwenden.

Unterstützte Datentypen

Die folgende Tabelle zeigt, wie Spaltendatentypen zwischen Formaten abgebildet werden. Sofern nicht anders angegeben, wird ein Typ in beide Richtungen umgewandelt.

Delta Lake-Typ Eisbergtyp Hinweise
string string
integer int
long long
short, byte int Delta Lake short und byte Ausweitung zum Eisberg int
float float
double double
decimal(P, S) decimal(P, S) Präzision bis zu 38
boolean boolean
binary binary
date date
timestamp timestamptz UTC; gespeichert als INT64 Mikrosekunden. Geben Sie in Snowflake timestamp_ltz an, um diesen Typ zu erzeugen.
timestamp_ntz timestamp Keine Zeitzone. timestamp_ntz wird nicht in allen Fabric-Workloads vollständig unterstützt; verwenden Sie bevorzugt Zeitstempel mit Zeitzonenbezug.
struct, array, map struct, list, map Delta Lake nach Iceberg: Verschachtelungen array und map erfordern IcebergCompat
void — Nur Delta Lake; während der Umrüstung fallen gelassen
— time Nur Iceberg; kein Delta-Lake-Äquivalent, entfernt
— uuid Nur Eisberg; Kartiert auf binary
— variant Nur Eisberg (V3); abgeworfen. Siehe Iceberg V3-Merkmale
— geometry, geography Nur Iceberg (V3); eingestellt. Siehe Iceberg V3-Merkmale
— timestamp_ns, timestamptz_ns Nur Iceberg (V3); entfernt. Siehe Iceberg V3-Merkmale
— unknown Iceberg nur (V3); entfernt. Siehe Iceberg V3-Merkmale

Für von Snowflake geschriebene Iceberg-Tabellen können auch breite long, double oder decimal-Spalten von dem im Abschnitt Iceberg zu Delta Lake beschriebenen Problem mit der Typbreite betroffen sein.

Unterstützte Partitionstransformationen

Umwandeln Eisberg bis Delta Lake Delta Lake bis Iceberg
identity Unterstützt Unterstützt
Jahr, Monat, Tag, Stunde Unterstützt Unterstützt
bucket[N] Ignoriert (Partitionierung verworfen) Nicht verfügbar
truncate[W] Ignoriert (Partitionierung verworfen) Nicht verfügbar
void Ignoriert (Partitionierung abgebrochen) Nicht verfügbar

Entwicklung von Schema und Partition

Fähigkeit Eisberg bis Delta Lake Delta Lake bis Iceberg Hinweise
Spalte hinzufügen Unterstützt Unterstützt
Spalte löschen Unterstützt Unterstützt
Spalte umbenennen Nicht unterstützt Unterstützt Für Delta Lake zu Iceberg ist eine Spaltenzuordnung (id- oder name-Modus) erforderlich.
erweiternde Typänderung Unterstützt Unterstützt Zum Beispiel int bis long
Einengende oder inkompatible Typänderung Gescheitert Gescheitert
Partitionsentwicklung (mehrere Spezifikationen) Gescheitert Nicht verfügbar Delta Lake hat eine einzige tabellenweite Partitionierung

Löschungen auf Zeilenebene

Wenn Sie eine Eisberg-Tabelle als Delta Lake virtualisieren:

Löschen Art Behavior
Iceberg V2-Position entfernt In Delta-Lake-Deletionsvektoren umgewandelt.
Eisberg-V3-Deletionsvektoren Gelesen und in Delta-Lake-Löschvektoren konvertiert.
Gleichheit löscht Die Umwandlung schlägt fehl.

Wenn Sie eine Delta-Lake-Tabelle als Eisberg virtualisieren:

Löschen Art Behavior
Delta-Lake-Deletionsvektoren Geschrieben als Iceberg V2 Position deletes.

Verfügbarkeit und Plattformbeschränkungen

  • Einschränkungen der Regionsverfügbarkeit

    Dieses Feature ist in den folgenden Regionen noch nicht verfügbar:

    • Katar, Mitte
    • Norwegen, Westen

    Problemumgehung:

    Arbeitsbereiche, die mit Fabric-Kapazitäten in anderen Regionen verbunden sind, können dieses Feature verwenden. Sehen Sie sich die vollständige Liste der Regionen an, in denen Fabric verfügbar sind.

  • Private Links werden nicht unterstützt

    Derzeit wird dieses Feature nicht für Mandanten oder Arbeitsbereiche unterstützt, die private Links aktiviert haben.

    Wir arbeiten an einer Verbesserung, um diese Einschränkung zu entfernen.

  • OneLake-Verknüpfungen müssen dieselbe Region haben

    Es gibt eine temporäre Einschränkung für die Verwendung dieses Features mit Verknüpfungen, die auf OneLake-Speicherorte verweisen: Der Zielspeicherort der Verknüpfung muss sich in derselben Region wie die Verknüpfung selbst befinden.

    Wir arbeiten an einer Verbesserung, um diese Anforderung zu entfernen.

    Problemumgehung:

    Wenn Sie einen OneLake-Shortcut zu einer Iceberg-Tabelle in einem anderen Lakehouse haben, stellen Sie sicher, dass dieses Lakehouse einer Kapazität in derselben Region zugeordnet ist.