Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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.
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.
Upewnij się, że tabela Delta Lake lub skrót do niej znajduje się w
Tablessekcji 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 kataloguTables.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ą.
Powinien zostać wyświetlony katalog o nazwie
metadatawewną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.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.jsonpokazanego w katalogumetadata.Możesz wyświetlić ścieżkę HTTP do najnowszego pliku metadanych tabeli, otwierając widok Właściwości dla
*.metadata.jsonpliku o najwyższym numerze wersji. Zanotuj tę ścieżkę.Ścieżka do folderu
TablesTwojego 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.
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.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.
Aby określić ścieżkę docelową dla skrótu, wybierz folder tabeli Iceberg. Folder tabeli Góra Lodowa zawiera foldery
metadataidata.Po utworzeniu skrótu, ta tabela powinna zostać automatycznie odzwierciedlona jako tabela Delta Lake w lakehouse, gotowa do użycia w całym Fabric.
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.
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:
USERTo 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.SYSTEMoznacza, ż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łylatest_conversion_log.txtplik.
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.
Ś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
metadataorazdata.
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:
- W prawym górnym rogu Fabric UI otwórz Ustawienia, i wybierz Portal administracyjny.
- W obszarze Ustawienia dzierżawy w sekcji Ustawienia dewelopera włącz ustawienie z etykietą Elementy serwisowe mogą używać interfejsów API Fabric.
- 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
intnalong). 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
arrayimapwymagają 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.IcebergCompatprzypisuje 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.
IcebergCompategzekwuje znaczniki czasowe INT64.Przemiany kolumn — Zachowywane wtedy, gdy tabela Delta Lake używa mapowania kolumn (
idlubnametrybu), coIcebergCompatwymaga. W trybie mapowania kolumnnonezmiana 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
voidnie ma odpowiednika w Iceberg.IcebergCompatogranicza 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], ivoidsą 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;uuidmapowane 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,doublelubDecimalz 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.enableVectorizedReaderSpark nafalse. 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ę
UNDROPw 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.
Powiązana zawartość
- Użyj "Snowflake" do zapisywania lub odczytywania tabel Iceberg w usłudze OneLake.
- Dowiedz się więcej o skrótach OneLake.