ALTER TABLE
적용 대상: Databricks SQL Databricks Runtime
schema 또는 table의 속성을 변경합니다.
Delta Lake에서 형식을 변경하거나
table 또는 column주석을 변경하려면 COMMENT ON사용할 수도 있습니다.
STREAMING TABLE
변경하려면 ALTER STREAMING TABLE사용합니다.
table 캐시된 경우 명령은 table 캐시된 데이터와 해당 데이터를 참조하는 모든 종속 데이터를 지웁니다. 다음에 table 또는 종속 항목에 액세스할 때 캐시가 느리게 채워집니다.
참고 항목
기존 Delta table에 column를 추가하는 경우, DEFAULT
값을 정의할 수 없습니다. Delta tables에 추가된 모든 columns는 기존 행에 대해 NULL
로 처리됩니다.
column추가한 후에는 필요에 따라 column기본값을 정의할 수 있지만 table삽입된 새 행에만 적용됩니다. 다음 구문을 사용합니다.
ALTER TABLE table_name ALTER COLUMN column_name SET DEFAULT default_expression
외부 tables에서는 ALTER TABLE SET OWNER
및 ALTER TABLE RENAME TO
만 수행할 수 있습니다.
필요한 사용 권한
Unity Catalog 사용하는 경우 다음을 수행할 MODIFY
권한이 있어야 합니다.
- ALTER COLUMN
- 추가 COLUMN
- DROP COLUMN
- SET TBLPROPERTIES
- UNSET TBLPROPERTIES
- PREDICTIVE OPTIMIZATION 수정
Unity Catalog을 사용하려면, 반드시 MANAGE
권한이나 소유권을 가지고 있어야 합니다.
- SET 소유자에게
다른 모든 작업에는 table소유권이 필요합니다.
구문
ALTER TABLE table_name
{ RENAME TO clause |
ADD COLUMN clause |
ALTER COLUMN clause |
DROP COLUMN clause |
RENAME COLUMN clause |
ADD CONSTRAINT clause |
DROP CONSTRAINT clause |
DROP FEATURE clause |
ADD PARTITION clause |
DROP PARTITION clause |
PARTITION SET LOCATION clause |
RENAME PARTITION clause |
RECOVER PARTITIONS clause |
SET { ROW FILTER clause } |
DROP ROW FILTER |
SET TBLPROPERTIES clause |
UNSET TBLPROPERTIES clause |
SET SERDE clause |
SET LOCATION clause |
SET OWNER TO clause |
SET SERDE clause |
SET TAGS clause |
UNSET TAGS clause |
CLUSTER BY clause }
PREDICTIVE OPTIMIZATION clause}
Parameters
-
변경되는 table을 식별합니다. 이름에는 임시 사양 또는 옵션 사양이 포함되어서는 안됩니다. table을(를) 찾을 수 없는 상황에서 Azure Databricks는 TABLE_OR_VIEW_NOT_FOUND 오류를 발생시킵니다.
RENAME TO
to_table_name동일한 schema내의 table 이름을 바꿉니다.
-
새 table 이름을 식별합니다. 이름에는 임시 사양 또는 옵션 사양이 포함되어서는 안됩니다.
-
-
table에 하나 이상의 columns을 추가합니다.
-
속성이나 column의 위치를 변경합니다.
-
Delta Lake table에서 하나 이상의 columns 또는 필드를 삭제합니다.
-
Delta Lake table의 column 또는 필드의 이름을 바꿉니다.
-
검사 constraint, 정보 외래 키 constraint, 정보 기본 키 constraint를 table에 추가합니다.
외래 키와 기본 키는 Unity Catalog의 tables에서는 지원되지만,
hive_metastore
catalog에서는 지원되지 않습니다. -
기본 키, 외래 키를 삭제하거나 tableconstraint 확인합니다.
DROP FEATURE feature_name [ TRUNCATE HISTORY ]
적용 대상: Databricks SQL Databricks Runtime 14.1 이상
Delta Lake table기능을 제거합니다.
판독기와 작성기 모두에 영향을 미치는 기능을 제거하려면 다음 두 단계 프로세스가 필요합니다.
첫 번째 호출은 기능의 추적을 지우고 부분적인 성공을 알려줍니다.
그런 다음 보존 기간이 끝날 때까지 기다렸다가 문을 다시 실행하여 제거를 완료해야 합니다.
두 번째 호출을 너무 일찍 시작하는 경우 Azure Databricks는 DELTA_FEATURE_DROP_WAIT_FOR_RETENTION_PERIOD 또는 DELTA_FEATURE_DROP_HISTORICAL_VERSIONS_EXIST를 발생시킵니다.
table 기능이란 무엇인지 확인하세요. 자세한 내용은.
feature_name
Azure Databricks에서 인식되고 table에서 지원되어야 하는,
STRING
리터럴 또는 identifier형식으로 된 기능의 이름입니다.지원되는
feature_names
는 다음과 같습니다.- 'deletionVectors' 또는
deletionvectors
- 'v2Checkpoint' 또는
v2checkpoint
- 'v2Checkpoint' 또는
기능이 table에 존재하지 않는 경우, Azure Databricks는 DELTA_FEATURE_DROP_FEATURE_NOT_PRESENT를 발생시킵니다.
- 'deletionVectors' 또는
기록 자르기
선택적으로 호출 명령이 실행된 시점까지 table 기록을 트렁케이트하여, 24시간 후에 읽기-쓰기 기능을 삭제하는 두 번째 단계를 시작할 수 있습니다.
table 기록을 잘리면 DESCRIBE HISTORY 수행하고 시간 이동 쿼리를 실행하는 기능이 제한됩니다.
-
하나 이상의 파티션을 table에 추가합니다.
-
table에서 하나 이상의 파티션을 삭제합니다.
-
partition위치를 설정합니다.
-
partition키를 바꿉니다.
-
Azure Databricks에 table위치를 스캔하여, 파일 시스템에 직접 추가된 파일을 table에 추가하라고 명령합니다.
SET
ROW FILTER 절적용 대상: Databricks SQL Databricks Runtime 12.2 LTS 및 이상 Unity Catalog만
table에 행 필터 함수를 추가합니다. table에 대한 모든 후속 쿼리는 함수가 부울 TRUE로 평가된 where 행의 하위 집합을 얻게 됩니다. 이는 함수가 호출하는 사용자의 ID 또는 그룹 멤버 자격을 검사하여 특정 행을 필터링할지 여부를 결정할 수 where 세분화된 액세스 제어 용도에 유용할 수 있습니다.
DROP ROW FILTER
적용 대상: Unity만 Catalog
table행 필터(있는 경우)를 삭제합니다. 이후 쿼리는 자동 필터링 없이 table 모든 행을 반환합니다.
-
하나 이상의 사용자 정의 속성을 설정 또는 다시 설정합니다.
-
사용자 정의 속성을 하나 이상 제거합니다.
SET LOCATION
table의 위치를 이동합니다.
SET LOCATION path
LOCATION path
path
는STRING
리터럴이어야 합니다. table의 새 위치를 지정합니다.원래 위치의 파일은 새 위치로 이동되지 않습니다.
[ SET ] OWNER TO
principaltable의 소유권을
principal
로 이전합니다.적용 대상: Databricks SQL Databricks Runtime 11.3 LTS 이상
SET
는 선택적 키워드로 허용됩니다.SET TAGS ( { tag_name = tag_value } [, ...] )
적용 대상: Databricks SQL Databricks Runtime 13.3 LTS 이상
table태그를 적용합니다. table태그를 추가하려면
APPLY TAG
권한이 있어야 합니다.tag_name
리터럴
STRING
입니다.tag_name
table 또는 column내에서 고유해야 합니다.tag_value
리터럴
STRING
입니다.
UNSET TAGS ( tag_name [, ...] )
적용 대상: Databricks SQL Databricks Runtime 13.3 LTS 이상
table태그를 Remove로 이동.
APPLY TAG
권한이 있어야 table에서 remove 태그를 할 수 있습니다.tag_name
리터럴
STRING
입니다.tag_name
table 또는 column내에서 고유해야 합니다.
-
적용 대상: Databricks SQL Databricks Runtime 13.3 LTS 이상
Delta Lake table대한 클러스터링 전략을 추가, 변경 또는 삭제합니다.
{ ENABLE | DISABLE | INHERIT } PREDICTIVE OPTIMIZATION
적용 대상: Databricks SQL Databricks Runtime 12.2 LTS 이상 Unity Catalog만 표시됩니다.
Important
이 기능은 공개 미리 보기 상태입니다.
관리형 Delta Lake table을 원하는 예측 최적화 설정으로 변경합니다.
기본적으로 tables을 만들 때는 schema에서
INHERIT
하는 것이 기본 동작입니다.예측 최적화가 명시적으로 활성화되거나 OPTIMIZE으로 활성화가 상속된 경우, Azure Databricks에서 적절하다고 판단하면 VACUUM과 table가 자동으로 호출됩니다. 자세한 내용은 Unity의 예측 최적화와 관련된 Catalog 관리 tables를 참조하세요.
예제
Delta Lake에서 제약 조건을 추가하고 column 예제들을 변경 및 수정하려면
-- RENAME table
> DESCRIBE student;
col_name data_type comment
----------------------- --------- -------
name string NULL
rollno int NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
> ALTER TABLE Student RENAME TO StudentInfo;
-- After Renaming the table
> DESCRIBE StudentInfo;
col_name data_type comment
----------------------- --------- -------
name string NULL
rollno int NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
-- RENAME partition
> SHOW PARTITIONS StudentInfo;
partition
---------
age=10
age=11
age=12
> ALTER TABLE default.StudentInfo PARTITION (age='10') RENAME TO PARTITION (age='15');
-- After renaming Partition
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
-- Add new columns to a table
> DESCRIBE StudentInfo;
col_name data_type comment
----------------------- --------- -------
name string NULL
rollno int NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
> ALTER TABLE StudentInfo ADD columns (LastName string, DOB timestamp);
-- After Adding New columns to the table
> DESCRIBE StudentInfo;
col_name data_type comment
----------------------- --------- -------
name string NULL
rollno int NULL
LastName string NULL
DOB timestamp NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
-- Add a new partition to a table
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
> ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18);
-- After adding a new partition to the table
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
age=18
-- Drop a partition from the table
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
age=18
> ALTER TABLE StudentInfo DROP IF EXISTS PARTITION (age=18);
-- After dropping the partition of the table
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
-- Adding multiple partitions to the table
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
> ALTER TABLE StudentInfo ADD IF NOT EXISTS PARTITION (age=18) PARTITION (age=20);
-- After adding multiple partitions to the table
> SHOW PARTITIONS StudentInfo;
partition
---------
age=11
age=12
age=15
age=18
age=20
-- ALTER or CHANGE COLUMNS
> DESCRIBE StudentInfo;
col_name data_type comment
+-----------------------+---------+-------
name string NULL
rollno int NULL
LastName string NULL
DOB timestamp NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
ALTER TABLE StudentInfo ALTER COLUMN name COMMENT "new comment";
--After ALTER or CHANGE COLUMNS
> DESCRIBE StudentInfo;
col_name data_type comment
----------------------- --------- -----------
name string new comment
rollno int NULL
LastName string NULL
DOB timestamp NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
-- RENAME COLUMN
> ALTER TABLE StudentInfo RENAME COLUMN name TO FirstName;
--After RENAME COLUMN
> DESCRIBE StudentInfo;
col_name data_type comment
----------------------- --------- -----------
FirstName string new comment
rollno int NULL
LastName string NULL
DOB timestamp NULL
age int NULL
# Partition Information
# col_name data_type comment
age int NULL
-- Change the file Location
> ALTER TABLE dbx.tab1 PARTITION (a='1', b='2') SET LOCATION '/path/to/part/ways';
-- SET SERDE/ SERDE Properties (DBR only)
> ALTER TABLE test_tab SET SERDE 'org.apache.hadoop.hive.serde2.columnar.LazyBinaryColumnarSerDe';
> ALTER TABLE dbx.tab1 SET SERDE 'org.apache.hadoop' WITH SERDEPROPERTIES ('k' = 'v', 'kay' = 'vee');
-- SET TABLE PROPERTIES
> ALTER TABLE dbx.tab1 SET TBLPROPERTIES ('winner' = 'loser');
-- DROP TABLE PROPERTIES
> ALTER TABLE dbx.tab1 UNSET TBLPROPERTIES ('winner');
-- Drop the "deletion vectors" from a Delta table
> ALTER TABLE my_table DROP FEATURE deletionVectors;
-- 24 hours later
> ALTER TABLE my_table DROP FEATURE deletionVectors TRUNCATE HISTORY;
-- Applies three tags to the table named `test`.
> ALTER TABLE test SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3');
-- Removes three tags from the table named `test`.
> ALTER TABLE test UNSET TAGS ('tag1', 'tag2', 'tag3');
-- Applies three tags to table `main.schema1.test` column `col1`.
> ALTER TABLE main.schema1.test ALTER COLUMN col1 SET TAGS ('tag1' = 'val1', 'tag2' = 'val2', 'tag3' = 'val3');
-- Removes three tags from table `main.schema1.test` column `col1`.
> ALTER TABLE main.schema1.test ALTER COLUMN col1 UNSET TAGS ('tag1', 'tag2', 'tag3');
-- Enables predictive optimization for my_table
> ALTER TABLE my_table ENABLE PREDICTIVE OPTIMIZATION;