Přejmenování a vyřazení sloupců s mapováním sloupců 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šší.
Povolení mapování sloupců v tabulkách může narušit podřízené operace, které závisí na datovém kanálu rozdílové změny. 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 streamování čtení z tabulky Delta jako zdroj, včetně v dynamických tabulkách Delta. 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í rozdílové 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 ve službě Databricks Runtime 10.4 LTS a vyšší.
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.
Vyřazení sloupců
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 umístění sledování schématu, které povolí streamování z tabulek Delta s povoleným mapováním sloupců. Tím se vyřeší problém, kdy změny schématu bez sčítání by mohly vést k přerušení datových proudů.
Každý streamovaný čtení proti zdroji dat musí mít svůj vlastní schemaTrackingLocation
zadaný. Zadané schemaTrackingLocation
musí být obsaženy v adresáři určeném pro checkpointLocation
cílovou tabulku pro zápis do streamování.
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.
Viz Funkce tabulky Drop Delta.