Stop rewriting terabytes
Column mapping decouples logical column names from physical Parquet files.
See the switch →Delta Lake column mapping turns renames and drops into metadata-only operations. The DDL is instant; the compatibility tax is not. Audit streaming, partition-directory readers, and change data feed consumers before you flip the switch.
This issue: the metadata-only DDL, an idempotent walkthrough with expected shapes, and a rollout checklist that audits the whole fleet—not just the table.
Column mapping decouples logical column names from physical Parquet files.
See the switch →Verify protocol versions, then test streaming, directory readers, and CDF consumers.
Run the walkthrough →A non-additive schema change needs schema tracking and a planned restart sequence.
Read the answer →Last verified against official Databricks documentation: October 9, 2026. Correction history: first publication — no corrections.
Delta Lake column mapping decouples logical column names from physical Parquet files, so renames and drops become metadata-only operations—but the switch bumps the table protocol and has three documented blast radii. Flip it with a checklist, not a whim.
ALTER TABLE demo.events SET TBLPROPERTIES ('delta.columnMapping.mode' = 'name');
-- 'name' mode: the only mode allowed on an EXISTING table ('id' mode must be set at creation).
-- Prereq: reader version 2+ / writer version 5+; every reader needs Databricks Runtime 10.4 LTS+.
ALTER TABLE demo.events RENAME COLUMN full_name TO customer_name; -- metadata-only, no files rewritten
ALTER TABLE demo.events DROP COLUMN signup_ts; -- metadata-only, no files rewritten
Illustrative scenario: a two-row Delta table needs a logical rename and drop. The setup is deliberately rerunnable. Expected results describe shapes only; they are not measured results.
CREATE OR REPLACE TABLE demo.colmap_demo (
user_id BIGINT,
full_name STRING,
signup_ts TIMESTAMP
) USING DELTA;
INSERT INTO demo.colmap_demo VALUES
(1, 'Amara Osei', TIMESTAMP '2026-09-01 10:00:00'),
(2, 'Lena Marsh', TIMESTAMP '2026-09-02 11:30:00');
SHOW TBLPROPERTIES demo.colmap_demo ('delta.columnMapping.mode');
none, the default.name mode, then rename and dropALTER TABLE demo.colmap_demo
SET TBLPROPERTIES ('delta.columnMapping.mode' = 'name');
ALTER TABLE demo.colmap_demo RENAME COLUMN full_name TO customer_name;
ALTER TABLE demo.colmap_demo DROP COLUMN signup_ts;
DESCRIBE demo.colmap_demo;
user_id BIGINT, customer_name STRING. The physical Parquet files are untouched. The official docs confirm physical names are only replaced with logical names if you later remove column mapping—an operation that rewrites every data file.Non-additive schema changes—renames and drops—can break streaming reads. The documented fix is a schemaTrackingLocation for each streaming read, inside the target's checkpointLocation directory, with unique subdirectories per source table.
Partitioned tables with column mapping use random prefixes instead of column names for partition directories. Legacy readers that infer partitions from directory names break.
The documentation lists downstream change data feed operations as a breakage risk. Check the CDF interoperability documentation before flipping the switch; see Issue 019 for CDF mechanics.
SHOW TBLPROPERTIES demo.colmap_demo ('delta.columnMapping.mode');
DESCRIBE DETAIL demo.colmap_demo;
delta.columnMapping.mode must read name. DESCRIBE DETAIL must show minReaderVersion = 2 and minWriterVersion = 5. Every reader and writer on the table must run Databricks Runtime 10.4+. One legacy reader that cannot be upgraded means: do not enable—the way back rewrites everything.
ALTER TABLE demo.colmap_demo
SET TBLPROPERTIES ('delta.columnMapping.mode' = 'none');
Removing mapping rewrites all data files, offers no row-level or physical conflict resolution, and concurrent writes throw ConcurrentModificationException. Prepare exactly as the documentation recommends: pause all concurrent writes—including streaming jobs and ETL—turn off predictive optimization, and schedule a low-activity window.
On Databricks Runtime 15.4 LTS+, DROP FEATURE additionally downgrades the table protocol for readers stuck on Databricks Runtime 10.3 and below. Random partition-directory prefixes are not removed by the reversal.
id on new tables, Databricks' recommended mode; name on existing tables because id cannot be set on an existing table.ALTER, verify with SHOW TBLPROPERTIES, and note minReaderVersion 2 / minWriterVersion 5 in DESCRIBE DETAIL.schemaTrackingLocation per source inside the checkpointLocation directory; restart twice.DROP FEATURE for protocol downgrade.Non-additive schema changes—renames and drops—break streaming reads from the table. That is the documentation's stated limitation, not a bug in your rename.
Give each streaming read its own schemaTrackingLocation inside the target's checkpointLocation directory. Then stop the stream, enable column mapping, restart once to initialize mapping, and restart again to enable schema changes. Every later rename, drop, add, or type change needs another restart. Skip the tracking location and the stream cannot follow the rename—plan it before you flip the switch.
Yes, but the documentation prices it explicitly: setting the mode back to none rewrites all data files to replace physical names with logical names, with no row-level or physical conflict resolution. Concurrent writes throw ConcurrentModificationException.
Pause all writes, including streaming jobs and ETL; turn off predictive optimization; and run it in a low-activity window. On Databricks Runtime 15.4+ you can also DROP FEATURE to downgrade the table protocol for readers stuck on 10.3 and below. Random partition-directory prefixes remain after removal.
Enabling column mapping moves the table to reader version 2+ and writer version 5+. Reading a column-mapped table requires Databricks Runtime 10.4+. Anything older cannot read it—the compatibility tax the Limitations section warns about.
That answer predates the current documentation. The official docs now document a removal path: a mode='none' rewrite plus a DROP FEATURE downgrade on Databricks Runtime 15.4+. The old advice still feels true because the reversal rewrites every data file. Treat the switch as effectively one-way in planning even though the docs give you a way back.
, ; { } ( ), newline, tab, or =—in headers, so you can map them directly instead of renaming on ingest.id mode at creation, Databricks' recommended mode.schemaTrackingLocation and the two-restart sequence.DROP FEATURE protocol downgrade requires Databricks Runtime 15.4 LTS+. The streaming recipe applies to Structured Streaming reads, including Lakeflow pipelines.Strengthen the Databricks fundamentals behind Delta schemas, production pipelines, and safe table evolution.
Practice the platform basics behind Delta Lake, schema evolution, Structured Streaming, and production operations.
Browse DataCamp Databricks courses →Partner links: we may earn a commission if you enroll through these recommendations, at no extra cost to you.