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.