Zmienianie nazwy i usuwanie kolumn za pomocą mapowania kolumn usługi Delta Lake
Usługa Azure Databricks obsługuje mapowanie kolumn dla tabel usługi Delta Lake, co umożliwia wprowadzanie zmian tylko metadanych w celu oznaczania kolumn jako usuniętych lub zmienionych bez ponownego zapisywania plików danych. Umożliwia również użytkownikom nadawanie nazw kolumnom tabeli delty przy użyciu znaków, które nie są dozwolone przez Parquet, takich jak spacje, dzięki czemu użytkownicy mogą bezpośrednio pozyskiwać dane CSV lub JSON do funkcji Delta bez konieczności zmieniania nazw kolumn z powodu poprzednich ograniczeń znaków.
Ważne
Tabele z włączonym mapowaniem kolumn można odczytywać tylko w środowisku Databricks Runtime 10.4 LTS lub nowszym.
Włączenie mapowania kolumn w tabelach może spowodować przerwanie operacji podrzędnych korzystających z zestawienia zmian różnicowych. Zobacz Zmienianie ograniczeń źródła danych dla tabel z włączonym mapowaniem kolumn.
Włączenie mapowania kolumn w tabelach może spowodować przerwanie operacji przesyłania strumieniowego odczytów z tabeli delty jako źródła, w tym w tabelach delta live. Zobacz Przesyłanie strumieniowe za pomocą mapowania kolumn i zmian schematu.
Włączanie mapowania kolumn
Mapowanie kolumn wymaga następujących protokołów różnicowych:
- Czytelnik w wersji 2 lub nowszej.
- Składnik zapisywania w wersji 5 lub nowszej.
W przypadku tabeli delty z wymaganymi wersjami protokołu można włączyć mapowanie kolumn, ustawiając wartość delta.columnMapping.mode
.name
Aby włączyć mapowanie kolumn, możesz użyć następującego polecenia:
ALTER TABLE <table-name> SET TBLPROPERTIES (
'delta.columnMapping.mode' = 'name'
)
Zobacz Wyłączanie mapowania kolumn.
Zmienianie nazwy kolumny
Uwaga
Dostępne w środowisku Databricks Runtime 10.4 LTS i nowszym.
Po włączeniu mapowania kolumn dla tabeli delty można zmienić nazwę kolumny:
ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name
Aby uzyskać więcej przykładów, zobacz Aktualizowanie schematu tabeli usługi Delta Lake.
Usuwanie kolumn
Uwaga
Dostępne w środowisku Databricks Runtime 11.3 LTS i nowszym.
Po włączeniu mapowania kolumn dla tabeli delty można usunąć jedną lub więcej kolumn:
ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)
Aby uzyskać więcej informacji, zobacz Aktualizowanie schematu tabeli usługi Delta Lake.
Obsługiwane znaki w nazwach kolumn
Gdy mapowanie kolumn jest włączone dla tabeli delty, można uwzględnić spacje i dowolne z tych znaków w nazwach kolumn tabeli: ,;{}()\n\t=
.
Przesyłanie strumieniowe za pomocą mapowania kolumn i zmian schematu
Ważne
Ta funkcja jest dostępna w publicznej wersji zapoznawczej w środowisku Databricks Runtime 13.3 LTS lub nowszym.
Możesz podać lokalizację śledzenia schematu, aby włączyć przesyłanie strumieniowe z tabel delty z włączonym mapowaniem kolumn. Spowoduje to rozwiązanie problemu, w którym zmiany schematu nie addytywnego mogą spowodować uszkodzenie strumieni.
Każde przesyłanie strumieniowe odczytu względem źródła danych musi mieć własną określoną schemaTrackingLocation
wartość. schemaTrackingLocation
Określony musi być zawarty w katalogu określonym dla checkpointLocation
tabeli docelowej na potrzeby zapisu strumieniowego.
Uwaga
W przypadku obciążeń przesyłania strumieniowego łączących dane z wielu źródłowych tabel delty należy określić unikatowe katalogi w ramach checkpointLocation
każdej tabeli źródłowej.
schemaTrackingLocation
Opcja służy do określania ścieżki śledzenia schematu, jak pokazano w poniższym przykładzie kodu:
checkpoint_path = "/path/to/checkpointLocation"
(spark.readStream
.option("schemaTrackingLocation", checkpoint_path)
.table("delta_source_table")
.writeStream
.option("checkpointLocation", checkpoint_path)
.toTable("output_table")
)
Wyłączanie mapowania kolumn
W środowisku Databricks Runtime 15.3 lub nowszym można użyć DROP FEATURE
polecenia , aby usunąć mapowanie kolumn z tabeli i obniżyć protokół tabeli.
Zobacz Usuwanie funkcji tabeli delty.