ALTER EXTERNAL TABLE¶
기존 외부 테이블의 속성, 열 또는 제약 조건을 수정합니다.
구문¶
ALTER EXTERNAL TABLE [ IF EXISTS ] <name> REFRESH [ '<relative-path>' ]
ALTER EXTERNAL TABLE [ IF EXISTS ] <name> ADD FILES ( '<path>/[<filename>]' [ , '<path>/[<filename>'] ] )
ALTER EXTERNAL TABLE [ IF EXISTS ] <name> REMOVE FILES ( '<path>/[<filename>]' [ , '<path>/[<filename>]' ] )
ALTER EXTERNAL TABLE [ IF EXISTS ] <name> SET AUTO_REFRESH = { TRUE | FALSE }
수동으로 추가 및 제거된 파티션
ALTER EXTERNAL TABLE <name> [ IF EXISTS ] ADD PARTITION ( <part_col_name> = '<string>' [ , <part_col_name> = '<string>' ] ) LOCATION '<path>' ALTER EXTERNAL TABLE <name> [ IF EXISTS ] DROP PARTITION LOCATION '<path>'
매개 변수¶
name
변경할 외부 테이블의 식별자입니다. 식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.
REFRESH [ 'relative-path' ]
외부 테이블 정의에서 참조하는 스테이지 상태 데이터 파일에 액세스하고 테이블 메타데이터를 업데이트합니다.
경로의 새 파일이 테이블 메타데이터에 추가됩니다.
경로의 파일에 대한 변경 사항은 테이블 메타데이터에서 업데이트됩니다.
경로에 더 이상 없는 파일은 테이블 메타데이터에서 제거됩니다.
선택적으로, 데이터 파일의 특정 서브세트에 대한 메타데이터를 새로 고칠 상대 경로를 지정합니다.
외부 테이블이 생성될 때 이 매개 변수를 한 번만 사용하면 됩니다. 이 단계에서는 외부 테이블 정의의 경로와 스테이지에 있는 최신 관련 파일 세트와 메타데이터를 동기화합니다. 또한, 이 단계에서는 외부 테이블이 지정된 스테이지와 경로의 데이터 파일을 읽을 수 있고 외부 테이블 정의에서 누락된 파일이 없는지 확인합니다.
참고
이 매개 변수는 파티션이 오브젝트 소유자에 의해 수동으로 추가된 경우(즉,
PARTITION_TYPE = USER_SPECIFIED
인 경우) 분할된 외부 테이블에서 지원되지 않습니다.TABLE_FORMAT = DELTA
가 외부 테이블에 설정된 경우REFRESH
는 데이터 파일의 특정 하위 세트에 대한 메타데이터를 새로 고치는 상대 경로를 지원하지 않습니다.
ADD FILES
지정된 쉼표로 구분된 파일 목록을 외부 테이블 메타데이터에 추가합니다. 일반적으로
ADD FILES
및REMOVE FILES
매개 변수는 외부 테이블 메타데이터를 수동으로 새로 고치는 데 사용됩니다(즉,AUTO_REFRESH = FALSE
일 때). 파일 참조는 외부 테이블 정의에서 [ WITH ] LOCATION에 상대적인 경로로 표현됩니다. 자세한 내용은 CREATE EXTERNAL TABLE 섹션을 참조하십시오.각 파일의 경로와 파일 이름을 나열합니다.
지정된 저장소 위치에 있는 경우, ALTER EXTERNAL TABLE 문은 외부 테이블 메타데이터를 자동으로 새로 고치고 파일을 추가합니다.
이 매개 변수는 파티션이 오브젝트 소유자에 의해 수동으로 추가된 경우(즉,
PARTITION_TYPE = USER_SPECIFIED
인 경우) 분할된 외부 테이블에서 지원되지 않습니다.REMOVE FILES
지정된 쉼표로 구분된 파일 목록을 외부 테이블 메타데이터에서 제거합니다. 일반적으로
ADD FILES
및REMOVE FILES
매개 변수는 외부 테이블 메타데이터를 수동으로 새로 고치는 데 사용됩니다(즉,AUTO_REFRESH = FALSE
일 때). 파일 참조는 외부 테이블 정의에서 [ WITH ] LOCATION에 상대적인 경로로 표현됩니다. 자세한 내용은 CREATE EXTERNAL TABLE 섹션을 참조하십시오.각 파일의 경로와 파일 이름을 나열합니다.
ALTER EXTERNAL TABLE 문은 외부 테이블 메타데이터를 자동으로 새로 고치고 파일을 제거합니다.
이 매개 변수는 파티션이 오브젝트 소유자에 의해 수동으로 추가된 경우(즉,
PARTITION_TYPE = USER_SPECIFIED
인 경우) 분할된 외부 테이블에서 지원되지 않습니다.
SET ...
외부 테이블에 대해 설정할 하나 이상의 속성/매개 변수를 지정합니다(공백, 쉼표 또는 새 줄로 구분).
AUTO_REFRESH = TRUE | FALSE
[ WITH ] LOCATION =
설정에 지정된 명명된 외부 스테이지에서 신규 또는 업데이트된 데이터 파일을 사용할 수 있을 때 Snowflake가 외부 테이블 메타데이터의 자동 새로 고침 트리거를 활성화해야 할지 여부를 지정합니다.참고
새 데이터 또는 업데이트된 데이터를 외부 테이블 메타데이터로 읽을 수 있는 경우 Snowflake에 알리도록 저장소 위치에 대한 이벤트 알림을 구성해야 합니다. 자세한 내용은 클라우드 저장소 서비스의 지침을 참조하십시오.
- Amazon S3:
- Google Cloud Storage:
- Microsoft Azure:
이 매개 변수는 파티션이 오브젝트 소유자에 의해 수동으로 추가된 경우(즉,
PARTITION_TYPE = USER_SPECIFIED
인 경우) 분할된 외부 테이블에서 지원되지 않습니다.S3 호환 외부 스테이지 에 저장된 데이터 파일을 참조하는 외부 테이블에 대해 이 매개 변수를 TRUE로 설정할 수 없습니다.
TRUE
Snowflake를 사용하면 외부 테이블 메타데이터의 자동 새로 고침을 트리거할 수 있습니다.
FALSE
Snowflake를 사용하여 외부 테이블 메타데이터의 자동 새로 고침을 트리거할 수 없습니다. 메타데이터를 스테이지 경로의 현재 파일 목록과 동기화하려면 ALTER EXTERNAL TABLE … REFRESH를 사용하여 외부 테이블 메타데이터를 주기적으로 수동으로 새로 고쳐야 합니다.
기본값:
TRUE
수동으로 추가 및 제거된 파티션¶
외부 테이블의 파티션 타입이 사용자 지정(즉, PARTITION_TYPE = USER_SPECIFIED
)인 경우 다음 매개 변수를 사용하여 파티션을 추가하거나 제거합니다.
ADD PARTITION ( <part_col_name> = '<string>' [ , <part_col_name> = '<string>' , ... ] ) LOCATION '<path>'
지정된 위치(즉, 경로)의 외부 테이블에 대해 정의된 하나 이상의 파티션 열에 대한 파티션을 수동으로 추가합니다.
참고
사용자 지정 파티션 열 이름의 최대 길이는 32자입니다.
파티션을 추가하면 해당 위치의 새 파일이나 업데이트된 파일도 외부 테이블 메타데이터에 추가됩니다.
DROP PARTITION LOCATION '<path>'
지정된 위치(즉, 경로)에 있는 모든 파티션을 수동으로 삭제합니다.
파티션을 삭제하면 외부 테이블 메타데이터에서 해당 위치의 모든 파일도 제거됩니다.
액세스 제어 요구 사항¶
이 SQL 명령을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
---|---|---|
OWNERSHIP |
외부 테이블 |
OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege). |
USAGE |
스테이지 |
외부 테이블 메타데이터를 수동으로 새로 고치는 데 필요합니다. |
USAGE |
파일 형식 |
외부 테이블 메타데이터를 수동으로 새로 고치는 데 필요합니다. |
스키마의 모든 오브젝트에 대해 작업하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한도 필요합니다.
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
사용법 노트¶
외부 테이블 소유자(즉, 외부 테이블에 대한 OWNERSHIP 권한을 가진 역할) 이상만이 명령을 실행할 수 있습니다.
다음 명령은 명시적 트랜잭션에서 사용할 수 있습니다(BEGIN … COMMIT 사용).
ALTER EXTERNAL TABLE ... REFRESH
ALTER EXTERNAL TABLE ... ADD FILES
ALTER EXTERNAL TABLE ... REMOVE FILES
외부 테이블 메타데이터에서 업데이트된 파일을 수동으로 바꿀 때 명시적 트랜잭션을 사용하여 일관된 상태를 보장할 수 있습니다.
다음 구문을 사용하여 외부 테이블에서 열을 추가하거나 제거합니다.
- 열 추가:
ALTER TABLE <name> ADD COLUMN ( <col_name> <col_type> AS <expr> ) [, ...]
- 열 이름 바꾸기:
ALTER TABLE <name> RENAME COLUMN <col_name> to <new_col_name>
- 열 삭제:
ALTER TABLE <name> DROP COLUMN <col_name>
참고
기본 VALUE 및 METADATA$FILENAME 열은 삭제할 수 없습니다.
예는 ALTER TABLE 항목을 참조하십시오.
외부 테이블에서 행 액세스 정책을 추가 및 삭제하거나 태그를 설정 또는 설정 해제하려면 ALTER TABLE 명령을 사용하십시오.
그러나 행 액세스 정책과 테이블의 태그로 외부 테이블을 만들 수 있습니다. CREATE EXTERNAL TABLE 섹션을 참조하십시오.
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
예¶
수동으로 메타데이터 새로 고치기¶
참조된 데이터 파일의 변경 사항을 기반으로 전체 외부 테이블 메타데이터 세트를 수동으로 새로 고칩니다.
ALTER EXTERNAL TABLE exttable_json REFRESH;
첫 번째 예와 유사하지만, 외부 테이블의 메타데이터 경로만 수동으로 새로 고칩니다.
CREATE OR REPLACE STAGE mystage
URL='<cloud_platform>://twitter_feed/logs/'
.. ;
-- Create the external table
-- 'daily' path includes paths in </YYYY/MM/DD/> format
CREATE OR REPLACE EXTERNAL TABLE daily_tweets
WITH LOCATION = @twitter_feed/daily/;
-- Refresh the metadata for a single day of data files by date
ALTER EXTERNAL TABLE exttable_part REFRESH '2018/08/05/';
수동으로 파일 추가 또는 제거하기¶
외부 테이블 메타데이터에 명시적 파일 목록을 추가합니다.
ALTER EXTERNAL TABLE exttable1 ADD FILES ('path1/sales4.json.gz', 'path1/sales5.json.gz');
외부 테이블 메타데이터에서 명시적 파일 목록을 제거합니다.
ALTER EXTERNAL TABLE exttable1 REMOVE FILES ('path1/sales4.json.gz', 'path1/sales5.json.gz');
명시적 트랜잭션의 외부 테이블 메타데이터에서 2019년 12월 동안 업데이트된 로그 파일을 바꿉니다.
BEGIN;
ALTER EXTERNAL TABLE extable1 REMOVE FILES ('2019/12/log1.json.gz');
ALTER EXTERNAL TABLE extable1 ADD FILES ('2019/12/log1.json.gz');
COMMIT;
수동으로 파티션 추가 또는 제거하기¶
파티션 열에 대해 지정된 위치에 수동으로 파티션을 추가합니다.
ALTER EXTERNAL TABLE et2 ADD PARTITION(col1='2022-01-24', col2='a', col3='12') LOCATION '2022/01';
Snowflake는 외부 테이블의 메타데이터에 파티션을 추가합니다. 또한 이 작업은 지정된 위치에 있는 모든 새 데이터 파일을 메타데이터에 추가합니다.
지정된 위치에서 수동으로 파티션을 제거합니다.
ALTER EXTERNAL TABLE et2 DROP PARTITION LOCATION '2022/01';
Snowflake는 외부 테이블의 메타데이터에서 파티션을 제거합니다. 또한 이 작업은 메타데이터에서 지정된 위치의 모든 데이터 파일을 제거합니다.