Sdílet prostřednictvím


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.

Příkaz DROP FEATURE vyžaduje vyšší verzi protokolu. K upgradu verzí čtečky tabulek a zapisovače můžete použít následující příkaz, který umožňuje převést mapování sloupců a downgradovat protokol:

  ALTER TABLE <table-name> SET TBLPROPERTIES (
    'delta.minReaderVersion' = '3',
    'delta.minWriterVersion' = '7'
  )

Viz Funkce tabulky Drop Delta.