Přejmenování a vyřazení sloupců s mapováním sloupců Delta Lake

Důležité

Tato funkce je ve verzi Public Preview.

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é

Povolení mapování sloupců také umožňuje náhodné předpony souborů, které odeberou možnost zkoumat data pomocí dělení ve stylu Hive. Viz strategie dělení na oddíly Delta Lake a Parquet?.

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 delta živých tabulkách. Viz Streamování s mapováním sloupců a změnami schématu.

Povolení mapování sloupců Delta Lake

Důležité

Povolení mapování sloupců pro tabulku upgraduje verzi tabulky Delta. Tento upgrade protokolu je nevratný. Tabulky s povoleným mapováním sloupců je možné číst pouze v Databricks Runtime 10.4 LTS a vyšší.

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 upgradu verze tabulky a povolení mapování sloupců můžete použít následující příkaz:

  ALTER TABLE <table-name> SET TBLPROPERTIES (
    'delta.minReaderVersion' = '2',
    'delta.minWriterVersion' = '5',
    'delta.columnMapping.mode' = 'name'
  )

Poznámka:

Po povolení není možné mapování sloupců vypnout. Pokud se pokusíte nastavit 'delta.columnMapping.mode' = 'none', zobrazí se chyba.

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")
)