ALTER TABLE
Update a table’s definition or schema.
{{< codeheader "Syntax" expand >}}
-- Add Columns
ALTER TABLE <table_name>
ADD COLUMNS ( <column_name1> <data_type>, <column_name2> <data_type>, ... )
-- Drop Columns
ALTER TABLE <table_name>
DROP COLUMN <column_name>
-- Modify Columns
ALTER TABLE <table_name>
{ ALTER | MODIFY } COLUMN <old_column_name> <new_column_name> <data_type>
-- Refresh Metadata
ALTER TABLE <table_name>
REFRESH METADATA
[ FOR PARTITIONS ( <partition_name> = '<value>') ]
[ { AVOID | AUTO } PROMOTION ]
[ { FORCE | LAZY } UPDATE ]
[ { MAINTAIN | DELETE } WHEN MISSING ]
-- Forget Metadata
ALTER TABLE <table_name>
FORGET METADATA
-- Create Aggregate Reflections
ALTER TABLE <table_name>
CREATE AGGREGATE REFLECTION <reflection_name> USING DIMENSIONS ( <column_name1>, <column_name2>, ... ) MEASURES ( <column_name1> ( <aggregation_type>, <column_name2> <aggregation_type> , ... ) )
[ PARTITION BY ( <column_name1>, <column_name2>, ... ) ]
[ LOCALSORT BY ( <column_name1>, <column_name2>, ... ) ]
[ ARROW CACHE ]
-- Create External Reflections
ALTER TABLE <table_name>
CREATE EXTERNAL REFLECTION <reflection_name> USING <table_name>
-- Create Raw Reflections
ALTER TABLE <table_name>
CREATE RAW REFLECTION <reflection_name> USING DISPLAY ( <column_name1>, <column_name2>, ...)
[ PARTITION BY ( <column_name1>, <column_name2>, ... ) ]
[ LOCALSORT BY ( <column_name1>, <column_name2>, ... ) ]
[ ARROW CACHE ]
-- Route Reflections
ALTER TABLE <table_name>
ROUTE REFLECTIONS TO { DEFAULT ENGINE | ENGINE { <engine_name> | <engine_uuid> } }
-- Alter Apache Iceberg Tables
ALTER TABLE <table_name>
{
{ ALTER | MODIFY | CHANGE } COLUMN ( <source_col_name> <new_col_name> <data_type> )
| ADD { COLUMN | COLUMNS } (<column_name1> <data_type> [, <column_name2> <data_type> ... ] ) [ BEFORE <column_name> ]
| DROP COLUMN <column_name>
| { ADD | DROP } PARTITION FIELD { <column_name> | <partition_transform> }
| REFRESH METADATA
}
-- Set a Column-Masking Policy
ALTER TABLE [ IF EXISTS ] <table_name>
MODIFY COLUMN <column_name>
SET MASKING POLICY <function_name> ( <column_name> [, ... ] )
-- Unset a Column-Masking Policy
ALTER TABLE [ IF EXISTS ] <table_name>
MODIFY COLUMN <column_name>
UNSET MASKING POLICY <function_name>
-- Set or Unset a Row-Access Policy
ALTER TABLE [ IF EXISTS ] <table_name>
MODIFY COLUMN <column_name>
{ ADD | DROP } ROW ACCESS POLICY <function_name> ( <column_name> [, ... ] )
Parameters
{{< sql-section file="data/sql/tables.json" data="alteringATable" >}}
{{< sql-section file="data/sql/tables.json" data="alteringATableOptional" >}}
{{< sql-section file="data/sql/tables.json" data="refreshOptions" >}}
{{< sql-section file="data/sql/reflections.json" data="creatingAggReflectionsParameters" >}}
{{< sql-section file="data/sql/reflections.json" data="creatingRawReflectionsParameters" >}}
{{< sql-section file="data/sql/engine-routing-sql.json" data="routingReflectionRefreshJobs" >}}
{{< sql-section file="data/sql/apache-iceberg-tables.json" data="everythingAlter" >}}
{{< sql-section file="data/sql/apache-iceberg-tables.json" data="renamingColumns" >}}
{{< sql-section file="data/sql/row-column-policies.json" data="maskingExistingParameters" >}}
Examples
Add a columnALTER TABLE services
ADD COLUMNS (county varchar)
ALTER TABLE services
MODIFY COLUMN tip_amount tip_amount DECIMAL
ALTER TABLE services
MODIFY COLUMN tip_amount gratuity_amount DECIMAL
ALTER TABLE services
REFRESH METADATA
ALTER TABLE services
REFRESH METADATA
AUTO PROMOTION
LAZY UPDATE
MAINTAIN WHEN MISSING
ALTER TABLE Samples."samples.dremio.com"."zips.json"
REFRESH METADATA FOR PARTITIONS (state = 'TX')
ALTER TABLE Samples."samples.dremio.com"."zips.json"
REFRESH METADATA FOR PARTITIONS (state = 'TX')
AUTO PROMOTION
LAZY UPDATE
MAINTAIN WHEN MISSING
ALTER TABLE Samples."samples.dremio.com"."zips.json"
FORGET METADATA
ALTER TABLE "@user1"."customers"
CREATE RAW REFLECTION customers_by_country USING DISPLAY (id,lastName,firstName,address,country)
PARTITION BY (country)
LOCALSORT BY (lastName)
ALTER TABLE Samples."samples.dremio.com"."zips.json"
CREATE AGGREGATE REFLECTION per_state
USING
DIMENSIONS (state)
MEASURES (city (COUNT))
LOCALSORT BY (state)
ALTER TABLE "Table 1" ROUTE REFLECTIONS TO ENGINE "Engine 1"
ALTER TABLE "View 1" ROUTE REFLECTIONS TO ENGINE "Engine 1"
ALTER TABLE "View 3" ROUTE REFLECTIONS TO ENGINE "Engine 1"
ALTER TABLE myTable ADD COLUMN (address VARCHAR)
ALTER TABLE myTable ALTER COLUMN id id BIGINT
ALTER TABLE e.employees
MODIFY COLUMN ssn_col
SET MASKING POLICY protect_ssn (ssn_col, region)
ALTER TABLE e.employees
MODIFY COLUMN ssn_col
UNSET MASKING POLICY protect_ssn
ALTER TABLE e.employees
ADD ROW ACCESS POLICY state_policy ( state_col )
ALTER TABLE employees
MODIFY COLUMN ssn_col
DROP ROW ACCESS POLICY protect_ssn (ssn_col, region)