Sdílet prostřednictvím


Přejmenování a odstranění sloupců pomocí mapování Delta Lake

Azure Databricks podporuje mapování sloupců pro tabulky Delta Lake, které umožňují změny pouze metadat označit sloupce jako odstraněné nebo přejmenované bez přepsání datových souborů. Umožňuje také uživatelům pojmenovat sloupce tabulky Delta pomocí znaků, které nejsou povoleny službou Parquet, jako jsou mezery, aby uživatelé mohli přímo ingestovat data CSV nebo JSON do tabulky Delta, aniž by museli přejmenovat sloupce kvůli omezením předchozích znaků.

Důležité

Tabulky s povoleným mapováním sloupců je možné číst pouze v Databricks Runtime 10.4 LTS a vyšší.

Dělené tabulky s povoleným mapováním sloupců používají pro adresáře oddílů náhodné předpony místo názvů sloupců. Viz Delta Lake a Parquet sdílejí strategie dělení?.

Povolení mapování sloupců v tabulkách může narušit následné operace, které závisí na kanálu změn Delta. Viz Omezení kanálu změn dat pro tabulky s povoleným mapováním sloupců.

Povolení mapování sloupců u tabulek může přerušit streamované čtení z tabulky Delta jako zdroje, včetně DLT. Viz Streamování s mapováním sloupců a změnami schématu.

Povolení mapování sloupců

Mapování sloupců vyžaduje následující Delta protokoly:

  • Čtenář verze 2 nebo vyšší.
  • Writer verze 5 nebo vyšší.

U tabulky Delta s požadovanými verzemi protokolu můžete povolit mapování sloupců nastavením delta.columnMapping.mode na name.

K povolení mapování sloupců můžete použít následující příkaz:

  ALTER TABLE <table-name> SET TBLPROPERTIES (
    'delta.columnMapping.mode' = 'name'
  )

Viz Zakázání mapování sloupců.

Přejmenování sloupce

Poznámka:

K dispozici v Databricks Runtime 10.4 LTS a vyšších verzích.

Pokud je pro tabulku Delta povolené mapování sloupců, můžete sloupec přejmenovat:

ALTER TABLE <table-name> RENAME COLUMN old_col_name TO new_col_name

Další příklady najdete v tématu Aktualizace schématu tabulky Delta Lake.

Odstranit sloupce

Poznámka:

K dispozici ve službě Databricks Runtime 11.3 LTS a vyšší.

Pokud je pro tabulku Delta povolené mapování sloupců, můžete odstranit jeden nebo více sloupců:

ALTER TABLE table_name DROP COLUMN col_name
ALTER TABLE table_name DROP COLUMNS (col_name_1, col_name_2, ...)

Další podrobnosti najdete v tématu Aktualizace schématu tabulky Delta Lake.

Podporované znaky v názvech sloupců

Pokud je pro tabulku Delta povolené mapování sloupců, můžete do názvů sloupců tabulky zahrnout mezery a libovolný z těchto znaků: ,;{}()\n\t=.

Streamování s mapováním sloupců a změnami schématu

Důležité

Tato funkce je ve verzi "Public Preview" v Databricks Runtime 13.3 LTS a vyšší.

Můžete zadat schéma sledovacího umístění, které povolí streamování z tabulek Delta s povoleným mapováním sloupců. Tím se vyřeší problém, kdy neaditivní změny schématu by mohly vést k přerušení datových proudů.

Každé streamované čtení ze zdroje dat musí mít svůj vlastní schemaTrackingLocation zadaný. Zadané schemaTrackingLocation musí být obsaženo v adresáři určeném pro checkpointLocation cílové tabulky pro streamování zápisu.

Poznámka:

Pro úlohy streamování, které kombinují data z více zdrojových tabulek Delta, je potřeba zadat jedinečné adresáře v rámci checkpointLocation každé zdrojové tabulky.

Tato možnost schemaTrackingLocation slouží k určení cesty pro sledování schématu, jak je znázorněno v následujícím příkladu kódu:

checkpoint_path = "/path/to/checkpointLocation"

(spark.readStream
  .option("schemaTrackingLocation", checkpoint_path)
  .table("delta_source_table")
  .writeStream
  .option("checkpointLocation", checkpoint_path)
  .toTable("output_table")
)

Zakázání mapování sloupců

Ve službě Databricks Runtime 15.3 a vyšší můžete pomocí DROP FEATURE příkazu odebrat mapování sloupců z tabulky a downgradovat protokol tabulky.

Podívejte se na vlastnosti tabulky Drop Delta .