Udostępnij za pośrednictwem


Zmienianie nazwy i usuwanie kolumn za pomocą mapowania kolumn 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.

Tabele podzielone na partycje z włączonym mapowaniem kolumn używają losowych prefiksów zamiast nazw kolumn dla katalogów partycji. Zobacz , czy Delta Lake i Parquet współdzielą strategie partycjonowania?.

Włączenie mapowania kolumn w tabelach może spowodować przerwanie operacji podrzędnych korzystających z kanału danych zmian Delta. Zobacz Zmiana ograniczeń danych wejściowych dla tabel z włączonym mapowaniem kolumn.

Włączenie mapowania kolumn w tabelach może przerwać odczyt strumieniowy z tabeli Delta jako źródła, w tym w Delta Live Tables. Zobacz Przesyłanie strumieniowe za pomocą mapowania kolumn i zmian schematu.

Włączanie mapowania kolumn

Mapowanie kolumn wymaga następujących protokołów Delta:

  • 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 delta.columnMapping.mode na 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łącz mapowanie 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 Zaktualizuj schemat tabeli 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 aktualizację schematu tabeli Delta Lake.

Obsługiwane znaki w nazwach kolumn

Gdy mapowanie kolumn jest włączone dla tabeli delty, możesz uwzględnić spacje i dowolne z tych znaków w nazwach kolumn tabeli: ,;{}()\n\t=.

Przesyłanie strumieniowe przy użyciu 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 Delta, z włączonym mapowaniem kolumn. Rozwiązuje to problem, w którym zmiany w schemacie nieaddytywnym mogą prowadzić do uszkodzenia strumieni.

Każde przesyłanie strumieniowe odczytu względem źródła danych musi mieć własną określoną schemaTrackingLocation wartość. Określony schemaTrackingLocation musi znajdować się 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 Delta należy określić unikatowe katalogi w folderze checkpointLocation dla każdej tabeli źródłowej.

Opcja schemaTrackingLocation 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łącz mapowanie kolumn

W środowisku Databricks Runtime 15.3 lub nowszym możesz użyć polecenia DROP FEATURE, aby usunąć mapowanie kolumn z tabeli i obniżyć wersję protokołu tabeli.

Zobacz funkcje tabeli delty drop.