Korzystanie z tabel Iceberg z OneLake

W usłudze OneLake można bezproblemowo pracować z tabelami w formatach Delta Lake i Apache Iceberg.

Ta elastyczność jest umożliwiona dzięki wirtualizacji metadanych, funkcji, która pozwala interpretować tabele Iceberg jako tabele Delta Lake i odwrotnie. Możesz bezpośrednio zapisywać tabele Iceberg lub tworzyć do nich skróty, co sprawia, że te tabele są dostępne w różnych obciążeniach w ramach Fabric. Podobnie tabele Fabric zapisane w formacie Delta Lake można odczytywać przy użyciu czytników Iceberg.

Podczas pisania lub tworzenia skrótu do folderu tabeli Iceberg, OneLake automatycznie generuje wirtualne metadane Delta Lake (dziennik Delta) dla tabeli, co umożliwia jej użycie z obciążeniami Fabric. Z drugiej strony tabele usługi Delta Lake zawierają teraz wirtualne metadane góry lodowej, co pozwala na zgodność z czytnikami góry lodowej.

Diagram przedstawiający transformację tabeli z Iceberg do Delta Lake.

Chociaż ten artykuł zawiera wskazówki dotyczące korzystania z tabel Iceberg w systemie Snowflake, ta funkcja jest przeznaczona do pracy z dowolnymi tabelami Iceberg, które mają pliki danych w formacie Parquet przechowywane w magazynie.

Wirtualizuj tabele Delta Lake jako Iceberg

Aby skonfigurować automatyczną konwersję i wirtualizację tabel z formatu usługi Delta Lake do formatu Iceberg, wykonaj następujące kroki.

  1. Upewnij się, że tabela Delta Lake lub skrót do niej znajduje się w Tables sekcji elementu danych. Element danych może być domem nad jeziorem lub innym elementem danych Fabric.

    Wskazówka

    Jeśli Twój Lakehouse ma włączony schemat, katalog tabel będzie znajdować się bezpośrednio w takim schemacie jak dbo. Jeśli lakehouse nie ma włączonych schematów, katalog tabel będzie znajdować się bezpośrednio w katalogu Tables.

  2. Upewnij się, że tabela Delta Lake została pomyślnie przekonwertowana na wirtualny format Iceberg. Można to zrobić, sprawdzając katalog za tabelą.

    Aby wyświetlić katalog, jeśli tabela znajduje się w lakehouse, możesz kliknąć prawym przyciskiem myszy na tabeli w Fabric UI i wybrać pozycję Wyświetl pliki.

    Jeśli tabela znajduje się w innym typie elementu danych, takim jak repozytorium danych, baza danych lub zduplikowana baza danych, musisz użyć klienta, takiego jak Eksplorator usługi Azure Storage lub Eksplorator plików OneLake, zamiast interfejsu użytkownika Fabric, aby obejrzeć pliki powiązane z tabelą.

  3. Powinien zostać wyświetlony katalog o nazwie metadata wewnątrz folderu tabeli i powinien zawierać wiele plików, w tym plik dziennika konwersji. Otwórz plik dziennika konwersji, aby wyświetlić więcej informacji o konwersji z Delta Lake na Iceberg, w tym znacznik czasu najnowszej konwersji oraz wszelkie szczegóły błędów.

  4. Jeśli plik dziennika konwersji pokazuje, że tabela została pomyślnie przekonwertowana, przeczytaj tabelę Iceberg, używając wybranej usługi, aplikacji lub biblioteki.

    W zależności od używanego czytnika Iceberg należy znać ścieżkę do katalogu tabeli lub do najnowszego pliku .metadata.json pokazanego w katalogu metadata.

    Możesz wyświetlić ścieżkę HTTP do najnowszego pliku metadanych tabeli, otwierając widok Właściwości dla *.metadata.json pliku o najwyższym numerze wersji. Zanotuj tę ścieżkę.

    Ścieżka do folderu Tables Twojego elementu danych może wyglądać następująco:

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

    W tym folderze ścieżka relatywna do najnowszego pliku metadanych może wyglądać tak: dbo/MyTable/metadata/321.metadata.json.

    Aby przeczytać wirtualną tabelę Iceberg przy użyciu usługi Snowflake, wykonaj kroki opisane w tym przewodniku.

Utwórz skrót do tabeli Iceberg

Jeśli masz już tabelę Iceberg w lokalizacji magazynu obsługiwanej przez skróty OneLake, wykonaj następujące kroki, aby utworzyć skrót i wyświetlić tabelę Iceberg w formacie Delta Lake.

  1. Znajdź tabelę Iceberg. Znajdź miejsce przechowywania tabeli Iceberg, która może znajdować się w usłudze Azure Data Lake Storage, OneLake, Amazon S3, Google Cloud Storage lub usłudze magazynu zgodnej z usługą S3.

    Uwaga

    Jeśli używasz usługi Snowflake i nie masz pewności, gdzie jest przechowywana tabela Iceberg, możesz uruchomić następującą instrukcję, aby wyświetlić lokalizację przechowywania tabeli Iceberg.

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

    Uruchomienie tej instrukcji zwraca ścieżkę do pliku metadanych dla tabeli Iceberg. Ta ścieżka informuje, które konto magazynowe zawiera tabelę Iceberg. Oto na przykład odpowiednie informacje do znalezienia ścieżki tabeli Iceberg zapisanej w usłudze Azure Data Lake Storage:

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

    Katalog tabeli Iceberg musi zawierać folder metadata, który zawiera co najmniej jeden plik kończący się na .metadata.json.

  2. W lakehouse Fabric utwórz nowy skrót do tabeli w obszarze Tabele lakehouse'u.

    Wskazówka

    Jeśli zobaczysz schematy, takie jak dbo w folderze Tabele swojego lakehouse, oznacza to, że lakehouse obsługuje schematy. W takim przypadku kliknij prawym przyciskiem myszy schemat i utwórz skrót do tabeli w schemacie.

    Zrzut ekranu przedstawiający nową akcję skrótu.

  3. Aby określić ścieżkę docelową dla skrótu, wybierz folder tabeli Iceberg. Folder tabeli Góra Lodowa zawiera foldery metadata i data.

  4. Po utworzeniu skrótu, ta tabela powinna zostać automatycznie odzwierciedlona jako tabela Delta Lake w lakehouse, gotowa do użycia w całym Fabric.

    Zrzut ekranu przedstawiający utworzony skrót.

    Jeśli nowy skrót do tabeli Iceberg nie jest wyświetlany jako tabela do użycia, zapoznaj się z sekcją Rozwiązywanie problemów .

Rozwiązywanie problemów

Poniższe wskazówki mogą pomóc w upewnieniu się, że tabele Iceberg są zgodne z tą funkcją.

Sprawdź strukturę folderów tabeli Iceberg

Otwórz folder Iceberg w preferowanym narzędziu do eksploracji plików i sprawdź zawartość folderu Iceberg w jego oryginalnej lokalizacji. Powinna zostać wyświetlona struktura folderów podobna do poniższego przykładu.

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

Jeśli nie widzisz folderu metadanych lub nie widzisz plików z rozszerzeniami przedstawionymi w tym przykładzie, być może nie masz poprawnie wygenerowanej tabeli Góry lodowej.

Sprawdzanie dziennika konwersji

Gdy tabela Iceberg jest zwirtualizowana jako tabela Delta Lake, folder o nazwie _delta_log/ można znaleźć w folderze skrótów. Ten folder zawiera metadane formatu Delta Lake (dziennik Delta) po pomyślnej konwersji.

Ten folder zawiera również plik latest_conversion_log.txt, który zawiera szczegóły powodzenia lub niepowodzenia najnowszej próby konwersji.

Aby wyświetlić zawartość tego pliku po utworzeniu skrótu, otwórz menu skrótu do tabeli Iceberg w obszarze Tabele w lakehouse i wybierz pozycję Wyświetl pliki.

Zrzut ekranu Przedstawiający element menu Wyświetl pliki.

Powinna zostać wyświetlona struktura podobna do poniższego przykładu:

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.

Otwórz plik dziennika konwersji, aby wyświetlić najnowszy czas konwersji lub szczegóły błędu. Jeśli nie widzisz pliku dziennika konwersji, konwersja nie została podjęta.

Zrozum dziennik konwersji i kategorie błędów

Plik latest_conversion_log.txt rejestruje najnowszą próbę konwersji. Gdy wirtualizujesz tabelę Iceberg jako Delta Lake, znajdujesz ten plik w folderze _delta_log/ tabeli. Kiedy wirtualizujesz tabelę Delta Lake jako Iceberg, jest ona w folderze metadata/ tabeli. Plik jest w formie zwykłego tekstu. Gdy konwersja zakończy się niepowodzeniem, latest_conversion_log.txt zawiera ustrukturyzowany blok podobny do poniższego:

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>

Użyj kategorii błędu , aby zdecydować, co zrobić dalej:

  • USER To oznacza, że tabela źródłowa zawiera coś, czego ta funkcja nie może przekonwertować. Szczegóły błędu opisują, co należy naprawić. Dostosuj tabelę źródłową (zobacz Ograniczenia i rozważania), a następnie zatwierdz zmianę w tabeli źródłowy. Konwersja jest powtarzana automatycznie po następnym commite.

  • SYSTEM oznacza, że wystąpił wewnętrzny lub przejściowy błąd i nie ma nic do naprawienia w tabeli źródłowych. Aby wywołać kolejną próbę konwersji, zatwierdz zmianę w tabeli źródłowej. Jeśli awarie się utrzymają, skontaktuj się z pomocą techniczną i udostępnij cały latest_conversion_log.txt plik.

Jeśli nie podjęto próby konwersji

Jeśli nie widzisz pliku dziennika konwersji, konwersja nie została podjęta. Oto dwie typowe przyczyny, dla których konwersja nie jest podejmowana:

  • Skrót nie został utworzony we właściwym miejscu.

    Aby skrót do tabeli Iceberg został przekonwertowany na format Delta Lake, skrót należy umieścić bezpośrednio w folderze Tables lakehouse bez obsługi schematów. Nie należy umieszczać skrótu w sekcji Pliki lub w innym folderze, jeśli chcesz, aby tabela została automatycznie zwirtualizowana jako tabela usługi Delta Lake.

    Zrzut ekranu przedstawiający poprawne umieszczenie skrótu w folderze Tables.

  • Ścieżka docelowa skrótu nie jest ścieżką folderu Iceberg.

    Podczas tworzenia skrótu ścieżka folderu wybrana w docelowej lokalizacji magazynu musi być tylko folderem tabeli Iceberg. Ten folder zawiera foldery metadata oraz data.

    Zrzut ekranu przedstawiający zawartość ścieżki docelowej skrótu podczas tworzenia skrótów.

Komunikat o błędzie "Nie można zweryfikować regionu pojemności fabricu" w aplikacji Snowflake

Jeśli używasz usługi Snowflake do zapisania nowej tabeli Góry Lodowej w usłudze OneLake, może zostać wyświetlony następujący komunikat o błędzie:

Nie można zweryfikować regionu pojemności sieci szkieletowej. Przyczyna: "Nieprawidłowy token dostępu. Może to być spowodowane uwierzytelnianiem i określeniem zakresu. Sprawdź delegowane zakresy".

Jeśli widzisz ten błąd, poproś administratora dzierżawy usługi Fabric, aby dokładnie sprawdził, czy włączono oba ustawienia dzierżawy wymienione w sekcji Zapisz tabelę Iceberg do OneLake za pomocą Snowflake:

  1. W prawym górnym rogu Fabric UI otwórz Ustawienia, i wybierz Portal administracyjny.
  2. W obszarze Ustawienia dzierżawy w sekcji Ustawienia dewelopera włącz ustawienie z etykietą Elementy serwisowe mogą używać interfejsów API Fabric.
  3. W tym samym obszarze w sekcji Ustawienia usługi OneLake włącz ustawienie Użytkownicy mogą uzyskiwać dostęp do danych przechowywanych w usłudze OneLake za pomocą aplikacji zewnętrznych wobec Fabric.

Ograniczenia i istotne zagadnienia

Pamiętaj o następujących ograniczeniach podczas korzystania z tej funkcji. Pewne ograniczenia mają zastosowanie do obu kierunków konwersji. Inne są skierowane do przekształcenia Delta Lake w Iceberg lub Iceberg w Delta Lake.

Jak pojawiają się problemy z konwersją

Gdy cechy źródłowej nie da się w pełni przetłumaczyć, dzieją się dwie rzeczy. Oba wyniki są raportowane w dzienniku konwersji.

Outcome Co się stanie
Niepowodzenie konwersji Nie powstają nowe metadane docelowe. Tabela zachowuje ostatnią pomyślnie przekonwertowaną wersję.
Wycofanie funkcji Konwersja kończy się powodzeniem, ale nieobsługiwana kolumna lub partycjonowanie są pomijane w formacie tabeli wyjściowej.

Ogólne ograniczenia

  • Wsparcie dla wersji Apache Iceberg

    Wspierana wersja Iceberg zależy od kierunku konwersji:

    Kierunek konwersji Zachowanie wersji Iceberg
    Delta Lake do Iceberg Generuje metadane Iceberg V2.
    Iceberg na Delta Lake Obsługuje tabele źródłowe Iceberg V2. Tabele źródłowe Iceberg V3 są częściowo wspierane; zobacz cechy Iceberg V3.
  • Tylko pliki danych Parquet

    Ta funkcja obsługuje tylko Parquet jako podstawowy format pliku danych do translacji metadanych, w obu kierunkach konwersji.

  • Przekonwertowana najnowsza wersja metadanych

    Funkcja wirtualizacji formatu tabeli konwertuje obecnie najnowszą wersję metadanych tabeli w oryginalnym formacie tabeli. Jeśli wiele wersji jest zapisywanych w oryginalnym formacie tabeli, tylko najnowsza wersja metadanych tabeli zostanie przekonwertowana na format tabeli wirtualnej.

  • Maksymalna liczba transakcji wejściowych

    Tabele źródłowe muszą mieć mniej niż 5 000 transakcji lub commitów, aby konwersja formatu tabeli mogła się dokonać. Pamiętaj, aby kompaktować dzienniki transakcji lub manifesty, aby zmniejszyć liczbę transakcji lub zapisów.

  • Opóźnienie konwersji i częstotliwość aktualizacji

    Generowanie metadanych formatu tabeli może potrwać od 5 sekund do 2 minut. Upewnij się, że aktualizacje tabeli źródłowej są rzadziej niż raz na 2 minuty. W przeciwnym razie możesz zobaczyć niespójny widok formatu tabeli wyjściowej.

  • Ewolucja schematu

    W obu kierunkach konwersji obsługiwane są zmiany na szerszy typ (na przykład z int na long). Zawężenie lub inna niekompatybilna zmiana typu powoduje, że konwersja kończy się niepowodzeniem.

Z Delta Lake do Iceberg

Te ograniczenia dotyczą wirtualizacji tabeli Delta Lake jako Iceberg.

Wskazówka

Aby uzyskać najpełniejszą konwersję do Iceberg V2, użyj IcebergCompatV2 wtedy, gdy tabela źródłowa nie używa wektorów usuwania. Jeśli tabela używa wektorów usuwania, użyj IcebergCompatV3; OneLake konwertuje je na usunięcia pozycyjne Iceberg V2. Ponieważ ta funkcja generuje metadane Iceberg V2, funkcje dostępne wyłącznie w Iceberg V3 nie są przekształcane.

Należy wziąć pod uwagę następujące kwestie, zwłaszcza w przypadku tabel Delta Lake, które nie są zapisywane z użyciem funkcji zapisu IcebergCompat:

  • Zagnieżdżone kolumny array i map wymagają stabilnych identyfikatorów pól dla elementu, klucza i wartości. Bez nich kolumna zagnieżdżonej kolekcji zostaje usunięta z wyniku Iceberg, co odnotowano w dzienniku konwersji. IcebergCompat przypisuje te identyfikatory.

  • Znaczniki czasowe muszą być przechowywane jako INT64 mikrosekundy. Tabela, której znaczniki czasu są fizycznie przechowywane jako INT96 (legacy), konwertuje się, ale jej kolumny znaczników czasu nie mogą być odczytywane przez silniki Iceberg. IcebergCompat egzekwuje znaczniki czasowe INT64.

  • Przemiany kolumn — Zachowywane wtedy, gdy tabela Delta Lake używa mapowania kolumn (id lub name trybu), co IcebergCompat wymaga. W trybie mapowania kolumn none zmiana nazwy jest widoczna jak usunięcie i dodanie kolumny.

  • Typy kolumn — Konwertowane są tylko typy zgodne z Iceberg; inne kolumny są usuwane (odnotowane w dzienniku konwersji). Na przykład void nie ma odpowiednika w Iceberg. IcebergCompat ogranicza schemat do zbioru typów podlegających konwersji.

  • Partycjonowanie — Konwertowane są partycje tożsamości i partycje czasowe (rok, miesiąc, dzień, godzina). Delta Lake ma jedno partycjonowanie dla całej tabeli.

Od Iceberg do Delta Lake

Te ograniczenia dotyczą wirtualizacji tabeli Iceberg jako Delta Lake.

  • Zmiany nazw kolumn nie są obsługiwane. Nie możesz zmienić nazwy kolumny w tabeli źródłowej Iceberg. Zamiast tego utwórz tabelę na nowo z nowymi nazwami kolumn. Podczas ponownego tworzenia tabeli usuń wszystkie pozostałe pliki metadanych, zgodnie z opisem w ograniczeniu Foldery tabel Iceberg muszą zawierać tylko jeden zestaw plików metadanych.

  • Transformacje partycyjne — obsługiwane są tylko transformacje tożsamości i temporalne (rok, miesiąc, dzień, godzina). Transformacje bucket[N], truncate[W], i void są pomijane: tabela nadal konwertuje, ale bez tego podziału. Kolumna bazowa jest zachowywana jako zwykła kolumna niepartycjonowana.

  • Ewolucja partycji — Jeśli pliki danych na żywo tabeli źródłowej obejmują więcej niż jedną specyfikację partycji lub kolumny partycji w wcześniej przekonwertowanej tabeli ulegną zmianie, konwersja jest odrzucana. Delta Lake używa jednego schematu partycjonowania dla całej tabeli, a konwersja plików z mieszanymi specyfikacjami spowodowałaby niepoprawne przypisanie starszym plikom wartości partycji null. Zachowaj jedną specyfikację partycji.

  • Usunięcia na poziomie wierszy — usunięcia pozycyjne Iceberg V2 oraz wektory usuwania Iceberg V3 są konwertowane na wektory usuwania Delta Lake. Usuwanie równości powoduje niepowodzenie konwersji.

  • Typy nieobsługiwane — Typy bez odpowiednika Delta Lake (na przykład time, oraz rozszerzone typy Iceberg V3) są usuwane; uuid mapowane na binarne. Zobacz funkcje Iceberg V3.

  • Problem z szerokością danych typu

    Jeśli użyjesz Snowflake do zapisu tabeli Iceberg, a tabela zawiera typy kolumn INT64, double lub Decimal z precyzją > = 10, powstała wirtualna tabela Delta Lake może nie być obsługiwana przez wszystkie silniki Fabric. Mogą wystąpić błędy, takie jak:

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

    Pracujemy nad rozwiązaniem tego problemu.

    Obejście: Jeśli korzystasz z interfejsu podglądu tabeli Lakehouse i zauważysz ten problem, możesz rozwiązać ten błąd, przełączając się na widok endpoint SQL Analytics (w prawym górnym rogu, wybierz widok Lakehouse, przełącz na endpoint SQL Analytics) i przeglądając tabelę stamtąd. Jeśli następnie przełączysz się z powrotem do widoku lakehouse, podgląd tabeli powinien być wyświetlany prawidłowo.

    Jeśli używasz notesu Spark lub uruchamiasz zadanie i napotkasz ten problem, możesz rozwiązać ten błąd, ustawiając konfigurację spark.sql.parquet.enableVectorizedReader Spark na false. Oto przykładowe polecenie PySpark do uruchomienia w notesie Spark.

    spark.conf.set("spark.sql.parquet.enableVectorizedReader","false")
    
  • Metadane stołu Iceberg nie można przenosić

    Pliki metadanych tabeli Iceberg odwołują się do siebie nawzajem przy użyciu bezwzględnych ścieżek. Jeśli skopiujesz lub przeniesiesz zawartość folderu tabeli Iceberg do innego miejsca bez przepisania plików metadanych Iceberg, tabela stanie się nieczytelna przez czytników Iceberg, w tym tę funkcję OneLake.

    Obejście:

    Jeśli musisz przenieść tabelę Góry Lodowej do innej lokalizacji, aby użyć tej funkcji, użyj narzędzia, które pierwotnie napisało tabelę Góry lodowej, aby napisać nową tabelę Góry Lodowej w żądanej lokalizacji.

  • Foldery tabel Iceberg muszą zawierać tylko jeden zestaw plików metadanych

    Jeśli upuścisz i ponownie utworzysz tabelę Iceberg w Snowflake, pliki metadanych nie są czyszczone. To zachowanie jest zgodne z projektem i wspiera funkcję UNDROP w Snowflake. Jednak ponieważ skrót wskazuje bezpośrednio folder i ten folder zawiera teraz wiele zestawów plików metadanych, nie możemy przekonwertować tabeli, dopóki nie usuniesz plików metadanych starej tabeli.

    Konwersja zakończy się niepowodzeniem, jeśli w folderze metadanych tabeli Iceberg znajduje się więcej niż jeden zestaw plików metadanych.

    Obejście:

    Aby upewnić się, że przekonwertowana tabela odzwierciedla poprawną wersję tabeli:

    • Upewnij się, że nie przechowujesz więcej niż jednej tabeli Iceberg w jednym folderze.
    • Wyczyść wszystkie zawartości folderu tabeli Iceberg po jego usunięciu, przed ponownym utworzeniem tabeli.
  • Zmiany metadanych nie zostały natychmiast odzwierciedlone

    Jeśli wprowadzisz zmiany metadanych w tabeli Iceberg, takie jak dodanie kolumny, usunięcie kolumny, zmiana nazwy kolumny lub zmiana typu kolumny, tabela może nie zostać ponownie przekonwertowana do czasu wprowadzenia zmiany danych, na przykład dodania wiersza danych.

    Pracujemy nad poprawką, która pobiera prawidłowy najnowszy plik metadanych zawierający najnowszą zmianę metadanych.

    Obejście:

    Po wprowadzeniu zmiany schematu w tabeli Iceberg, dodaj wiersz z danymi lub dokonaj innej zmiany w danych. Po tej zmianie powinno być możliwe odświeżenie i wyświetlenie najnowszego widoku tabeli w usłudze Fabric.

Funkcje Iceberg V3

Ta funkcja generuje i odczytuje metadane Iceberg V2; nie zapisuje metadanych Iceberg V3. Jeśli źródłem jest tabela Iceberg V3, jej funkcje są tłumaczone w sposób opisany w poniższej tabeli. Usunięte kolumny i inne notatki tłumaczeniowe są zapisywane w dzienniku konwersji.

Funkcje Iceberg V3 Supported Zachowanie translacji
Wektory usuwania Yes Odczytane i przekonwertowane do wektorów usuwania Delta Lake.
Linia liniowa No Metadane linii wierszowej nie są tłumaczone na Delta Lake. Tabela nadal konwertuje, a dane wiersza pozostają niezmienione.
Domyślne wartości kolumn No Kolumna z domyślną wartością odczytywaną przez czytnik jest usuwana. Domyślne wartości zapisu nie są tłumaczone.
Nowe typy danych (variant, geoprzestrzenne, nanosekundowe znaczniki czasu, unknown) No Kolumny wykorzystujące nowe typy danych Iceberg V3 są usuwane. Pełną listę można znaleźć w artykule Obsługiwane typy danych.
Wieloargumentowe transformacje podziału No Niewspierane.
Klucze szyfrowania tabel No Niewspierane.

Ważna

Nawet gdy konwersja usuwa kolumny z nowymi typami danych Iceberg V3, niektóre silniki Fabric nie potrafią odczytać tabeli, jeśli pliki danych używają typów Iceberg V3. Pliki danych nadal zawierają takie informacje.

Obejście: Aby uzyskać jak najszerszą kompatybilność w Fabric, unikaj używania kolumn Iceberg V3 w tabelach, które wirtualizujesz.

Obsługiwane typy danych

Poniższa tabela pokazuje, jak typy danych w kolumnach są mapowane między formatami. O ile nie zaznaczono inaczej, typ jest konwertowany w obu kierunkach.

Typ Delta Lake Typ góry lodowej Notatki
string string
integer int
long long
short, byte int Delta Lake short i byte rozszerzają się o Iceberg int
float float
double double
decimal(P, S) decimal(P, S) Dokładność do 38
boolean boolean
binary binary
date date
timestamp timestamptz UTC; przechowywane jako INT64 mikrosekundy. W Snowflake określ timestamp_ltz, aby wygenerować ten typ.
timestamp_ntz timestamp Brak strefy czasowej. timestamp_ntz nie jest w pełni obsługiwany we wszystkich obciążeniach platformy Fabric; preferuj znaczniki czasu uwzględniające strefę czasową.
struct, array, map struct, list, map Z Delta Lake do Iceberg: zagnieżdżone array i map wymagają IcebergCompat
void — tylko Delta Lake; zrzucony podczas przebudowy
— time Tylko Iceberg; brak odpowiednika w Delta Lake, usunięto
— uuid Tylko Iceberg; mapowane do binary
— variant Tylko Iceberg (V3); usunięto. Zobacz funkcje Iceberg V3
— geometry, geography Tylko Iceberg (V3); usunięto. Zobacz funkcje Iceberg V3
— timestamp_ns, timestamptz_ns Tylko Iceberg (V3); wycofany. Zobacz funkcje Iceberg V3
— unknown Tylko Iceberg (V3); usunięto. Zobacz funkcje Iceberg V3

W przypadku tabel Iceberg zapisywanych przez Snowflake, kolumny long, double lub decimal o dużej szerokości mogą być również dotknięte problemem z szerokością typu opisanym w sekcji Iceberg to Delta Lake.

Obsługiwane transformacje partycji

Przekształć Od Iceberg do Delta Lake Z Delta Lake do Iceberg
tożsamość Supported Supported
rok, miesiąc, dzień, godzina Supported Supported
bucket[N] Zignorowano (partycjonowanie pominięto) N/A
truncate[W] Zignorowane (partycjonowanie pominięte) N/A
void Zignorowane (partycjonowanie pominięte) N/A

Ewolucja schematu i podziału

Capability Od Iceberg do Delta Lake Delta Lake do Iceberg Notatki
Dodaj kolumnę Supported Supported
Usuń kolumnę Supported Supported
Zmienianie nazwy kolumny Niewspierane Supported Konwersja z Delta Lake do Iceberg wymaga mapowania kolumn w trybie id lub name
Zmiana na szerszy typ Supported Supported Na przykład, int do long
Zwężająca się lub niekompatybilna zmiana typu Nieudane Nieudane
Ewolucja partycji (wiele specyfikacji) Nieudane N/A Delta Lake ma jedno partycjonowanie dla całej tabeli.

Usuwanie na poziomie wierszy

Gdy wirtualizujesz tabelę Iceberg jako Delta Lake:

Usuń rodzaj Behavior
Usuwanie pozycji Iceberg V2 Przekonwertowano na wektory usunięć Delta Lake.
Wektory usuwania Iceberg V3 Odczytano i przekonwertowano na wektory usuwania Delta Lake.
Usuwanie równości Konwersja się nie udaje.

Gdy wirtualizujesz tabelę Delta Lake jako Iceberg:

Usuń rodzaj Behavior
Wektory delecji jeziora Delty Napisane jako Iceberg V2 pozycja usunięta.

Dostępność i ograniczenia platformy

  • Ograniczenie dostępności regionu

    Funkcja nie jest jeszcze dostępna w następujących regionach:

    • Katar Środkowy
    • Norwegia Zachodnia

    Obejście:

    Obszary robocze dołączone do pojemności Fabric w innych regionach mogą używać tej funkcji. Zobacz pełną listę regionów, w których jest dostępna Fabric.

  • Łącza prywatne nie są obsługiwane

    Obecnie ta funkcja nie jest obsługiwana w przypadku dzierżawców ani obszarów roboczych, które mają włączone linki prywatne.

    Pracujemy nad ulepszeniem w celu usunięcia tego ograniczenia.

  • Skróty OneLake muszą być w tym samym regionie

    Mamy tymczasowe ograniczenie dotyczące korzystania z tej funkcji ze skrótami wskazującymi lokalizacje OneLake: lokalizacja docelowa skrótu musi znajdować się w tym samym regionie co sam skrót.

    Pracujemy nad ulepszeniem, aby usunąć to wymaganie.

    Obejście:

    Jeśli masz skrót OneLake do tabeli Iceberg w innym lakehouse, upewnij się, że nowe lakehouse jest skojarzone z pojemnością w tym samym regionie.