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
| Property | Type | Default | Description |
|---|---|---|---|
snowpack.maintenance_enabled | bool | false | Opt in to automated maintenance. The orchestrator ignores tables where this is not set to true (when running in opt-in mode). |
snowpack.maintenance_cadence_hours | int | 6 (global) | Per-table override for the minimum hours between maintenance runs. Takes precedence over SNOWPACK_MAINTENANCE_CADENCE_HOURS. |
snowpack.target_file_size_bytes | int | 536870912 (512 MB) | Target file size for compaction. Files smaller than this are candidates for rewriting. |
snowpack.max_snapshot_age_days | int | 5 | Maximum snapshot retention in days. Snapshots older than this are expired during maintenance. |
snowpack.min_input_files | int | 5 | Minimum number of small files required to trigger compaction. Prevents rewriting when there are only a few small files. |
compaction_skip | bool | false | Exclude 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 maintenanceALTER TABLE lakehouse_dev.my_database.my_table SET TBLPROPERTIES ('snowpack.maintenance_enabled' = 'true');-- Override cadence and file size for a high-throughput tableALTER TABLE lakehouse_dev.my_database.my_table SET TBLPROPERTIES ( 'snowpack.maintenance_cadence_hours' = '3', 'snowpack.target_file_size_bytes' = '268435456' );-- Temporarily exclude a table from maintenanceALTER 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}/healthresponse includes asnowpack_configfield containing all resolvedsnowpack.*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.