Skip to content

Table Properties

Snowpack reads snowpack.* table properties from the Iceberg catalog to control per-table behavior. These properties override global defaults set by environment variables or Helm values.

Property reference

PropertyTypeDefaultDescription
snowpack.maintenance_enabledboolunsetThree-state maintenance enrollment. In opt-out mode (the default) a table is maintained unless this is set to false; in opt-in mode only tables set to true are maintained. Unset means “use the orchestrator’s mode default”.
snowpack.maintenance_cadence_hoursint6 (global)Per-table override for the minimum hours between maintenance runs. Takes precedence over SNOWPACK_MAINTENANCE_CADENCE_HOURS.
snowpack.target_file_size_bytesint536870912 (512 MB)Target file size for compaction. Files smaller than this are candidates for rewriting.
snowpack.max_snapshot_age_daysint5Maximum snapshot retention in days. Snapshots older than this are expired during maintenance.
snowpack.min_input_filesint5Minimum number of small files required to trigger compaction. Prevents rewriting when there are only a few small files.
snowpack.delete_file_thresholdint5Trigger delete-file maintenance and data-file rewrite recommendations when total delete files exceed this count.
snowpack.partial_progress_max_commitsint10Maximum partial-progress commits Iceberg can create during one rewrite action.
snowpack.rewrite_data_delete_file_thresholdint2Rewrite data files with at least this many associated delete files. Lower this for tables with broad position-delete pressure.
snowpack.rewrite_data_delete_ratio_thresholdfloat0.10Rewrite data files when deleted rows exceed this fraction of a data file.
snowpack.rewrite_data_rewrite_allboolfalseForce rewrite_data_files to rewrite all selected data files. Use only for one-off remediation, not steady-state automation.
compaction_skipboolfalseExclude this table from all Snowpack maintenance. Overrides snowpack.maintenance_enabled. Useful for tables undergoing migration or manual intervention.

Setting properties

Set properties using Spark SQL ALTER TABLE ... SET TBLPROPERTIES:

-- Opt a table in to automated maintenance
ALTER TABLE lakehouse_dev.my_database.my_table
SET TBLPROPERTIES ('snowpack.maintenance_enabled' = 'true');
-- Override cadence and file size for a high-throughput table
ALTER TABLE lakehouse_dev.my_database.my_table
SET TBLPROPERTIES (
'snowpack.maintenance_cadence_hours' = '3',
'snowpack.target_file_size_bytes' = '268435456'
);
-- Increase data-file rewrites for a table with heavy position-delete pressure
ALTER TABLE lakehouse_dev.my_database.my_table
SET TBLPROPERTIES (
'snowpack.rewrite_data_delete_file_threshold' = '1',
'snowpack.rewrite_data_delete_ratio_threshold' = '0.05',
'snowpack.min_input_files' = '2',
'snowpack.partial_progress_max_commits' = '3'
);
-- Temporarily exclude a table from maintenance
ALTER TABLE lakehouse_dev.my_database.my_table
SET TBLPROPERTIES ('compaction_skip' = 'true');

To remove a property and revert to the global default:

ALTER TABLE lakehouse_dev.my_database.my_table
UNSET TBLPROPERTIES ('snowpack.maintenance_cadence_hours');

Visibility

Table properties are surfaced in two places:

  • Health API — The GET /tables/{database}/{table}/health response includes a snowpack_config field containing all resolved snowpack.* properties for the table. This shows the effective configuration after merging table-level overrides with global defaults.

  • Web UI — The table detail page displays the current snowpack.* properties alongside health metrics, making it easy to verify configuration without running SQL.