외부 테이블 수정

외부 테이블 수정 (ALTER EXTERNAL TABLE)

기존 외부 테이블의 속성, 열 또는 제약 조건을 수정합니다.

참조:

CREATE EXTERNAL TABLE , DROP EXTERNAL TABLE , SHOW EXTERNAL TABLES , DESCRIBE EXTERNAL TABLE

출처: 문서

본문

구문

ALTER EXTERNAL TABLE [ IF EXISTS ]  REFRESH [ '' ]

ALTER EXTERNAL TABLE [ IF EXISTS ]  ADD FILES ( '/[]' [ , '/['] ] )

ALTER EXTERNAL TABLE [ IF EXISTS ]  REMOVE FILES ( '/[]' [ , '/[]' ] )

ALTER EXTERNAL TABLE [ IF EXISTS ]  SET
  [ AUTO_REFRESH = { TRUE | FALSE } ]

수동으로 추가 및 제거된 파티션

ALTER EXTERNAL TABLE  [ IF EXISTS ] ADD PARTITION (  = '' [ ,  = '' ] ) LOCATION ''

ALTER EXTERNAL TABLE  [ IF EXISTS ] DROP PARTITION LOCATION ''

매개변수

name

변경할 외부 테이블의 식별자예요. 식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 해요. 큰따옴표로 묶인 식별자는 대소문자도 구분해요.

REFRESH [ 'relative-path' ]

외부 테이블 정의에 참조된 스테이징된 데이터 파일에 접근하여 테이블 메타데이터를 업데이트해요:

  • 경로에 새 파일이 있으면 테이블 메타데이터에 추가해요.
  • 경로에 있는 파일의 변경 사항은 테이블 메타데이터에 업데이트해요.
  • 경로에 더 이상 없는 파일은 테이블 메타데이터에서 제거해요.

선택적으로 상대 경로를 지정하여 데이터 파일의 특정 하위 집합에 대한 메타데이터만 새로 고칠 수 있어요.

이 매개변수는 외부 테이블을 만들 때 한 번만 수행하면 돼요. 이 단계는 메타데이터를 외부 테이블 정의의 스테이지와 경로에 있는 최신 파일 집합과 동기화해요. 또한 이 단계는 외부 테이블이 지정된 스테이지와 경로의 데이터 파일을 읽을 수 있고, 외부 테이블 정의에서 누락된 파일이 없는지 보장해요.

  • 이 매개변수는 객체 소유자가 파티션을 수동으로 추가하는 파티션된 외부 테이블, 즉 PARTITION_TYPE = USER_SPECIFIED인 경우에는 지원되지 않아요.
  • 외부 테이블에 TABLE_FORMAT = DELTA가 설정된 경우, REFRESH는 데이터 파일의 특정 하위 집합에 대한 메타데이터를 새로 고치기 위해 상대 경로를 지원하지 않아요.

ADD FILES

지정된 쉼표로 구분된 파일 목록을 외부 테이블 메타데이터에 등록하고 테이블을 새로 고쳐요. 각 파일에 대해 외부 테이블 정의의 [ WITH ] LOCATION 기준 상대 경로와 파일 이름을 나열해요. 자세한 내용은 CREATE EXTERNAL TABLE을 참조하세요.

이 매개변수는 객체 소유자가 파티션을 수동으로 추가하는 파티션된 외부 테이블, 즉 PARTITION_TYPE = USER_SPECIFIED인 경우에는 지원되지 않아요.

REMOVE FILES


지정된 쉼표로 구분된 파일 목록을 외부 테이블 메타데이터에서 등록 해제하고 테이블을 새로 고쳐요. 각 파일에 대해 외부 테이블 정의의 [ WITH ] LOCATION 기준 경로와 파일 이름을 나열하세요. 자세한 내용은 CREATE EXTERNAL TABLE을 참조하세요.

이 매개 변수는 객체 소유자가 파티션을 수동으로 추가하는 분할 외부 테이블, 즉 PARTITION_TYPE = USER_SPECIFIED인 경우에는 지원되지 않아요.

SET ...

외부 테이블에 설정할 하나 이상의 속성/매개 변수를 지정하며, 공백, 쉼표 또는 새 줄로 구분해요:

AUTO_REFRESH = { TRUE | FALSE }

Snowflake가 [ WITH ] LOCATION = 설정에 지정된 명명된 외부 스테이지에 새 데이터 파일이나 업데이트된 데이터 파일이 있을 때 외부 테이블 메타데이터의 자동 새로 고침 트리거를 활성화할지 여부를 지정해요.

  • 스토리지 위치에 대한 이벤트 알림을 구성하여 외부 테이블 메타데이터로 읽을 새 데이터나 업데이트된 데이터가 있을 때 Snowflake에 알려야 해요. 자세한 내용은 클라우드 스토리지 서비스별 지침을 참조하세요:

Amazon S3:

  [](/user-guide/tables-external-s3)

Google Cloud Storage:

[Refresh external tables automatically for Google Cloud Storage](/user-guide/tables-external-gcs)

Microsoft Azure:

[Refresh external tables automatically for Azure Blob Storage](/user-guide/tables-external-azure)
  • 이 매개 변수는 객체 소유자가 파티션을 수동으로 추가하는 분할 외부 테이블, 즉 PARTITION_TYPE = USER_SPECIFIED인 경우에는 지원되지 않아요.
  • 이 매개 변수를 TRUE로 설정하는 것은 S3 호환 외부 스테이지에 저장된 데이터 파일을 참조하는 외부 테이블에서는 지원되지 않아요.

TRUE

Snowflake는 외부 테이블 메타데이터의 자동 새로 고침 트리거를 활성화해요.

FALSE


Snowflake는 외부 테이블 메타데이터의 자동 새로고침을 트리거하는 기능을 제공하지 않아요. 스테이지 경로의 현재 파일 목록과 메타데이터를 동기화하려면 ALTER EXTERNAL TABLE ... REFRESH를 사용하여 외부 테이블 메타데이터를 주기적으로 수동으로 새로고침해야 해요.

기본값: TRUE

파티션 수동 추가 및 제거

외부 테이블의 파티션 유형이 사용자 지정, 즉 PARTITION_TYPE = USER_SPECIFIED인 경우 다음 파라미터를 사용하여 파티션을 추가하거나 제거할 수 있어요:

ADD PARTITION ( = '' [ , = '' , ... ] ) LOCATION ''

지정된 위치(즉, 경로)에서 외부 테이블에 대해 정의된 하나 이상의 파티션 열에 대한 파티션을 수동으로 추가해요.

사용자 지정 파티션 열 이름의 최대 길이는 32자예요.

파티션을 추가하면 해당 위치의 새 파일이나 업데이트된 파일도 외부 테이블 메타데이터에 추가돼요.

DROP PARTITION LOCATION ''

지정된 위치(즉, 경로)의 모든 파티션을 수동으로 삭제해요.

파티션을 삭제하면 해당 위치의 모든 파일도 외부 테이블 메타데이터에서 제거돼요.

액세스 제어 요구 사항

이 작업을 실행하는 데 사용되는 역할은 최소한 다음 권한을 보유해야 해요:

권한 개체 설명
OWNERSHIP 외부 테이블 %ac-ownership%
USAGE 스테이지 외부 테이블 메타데이터를 수동으로 새로고침하는 데 필요해요.
USAGE 파일 형식 외부 테이블 메타데이터를 수동으로 새로고침하는 데 필요해요.

스키마의 개체를 운영하려면 상위 데이터베이스에 대한 권한이 하나 이상, 상위 스키마에 대한 권한이 하나 이상 필요해요.

지정된 권한 집합을 가진 사용자 지정 역할을 만드는 방법은 을(를) 참조하세요.


SQL 작업을 securable objects에 대해 수행하기 위한 역할 및 권한 부여에 대한 일반적인 정보는 Overview of Access Control을 참조하세요.

사용 참고 사항

  • 외부 테이블 소유자(외부 테이블에 대한 OWNERSHIP 권한을 가진 역할) 또는 그 이상의 권한을 가진 역할만 이 명령을 실행할 수 있어요.

  • 다음 명령은 명시적 트랜잭션에서 사용할 수 있어요 (BEGIN ... COMMIT 사용):

    • ALTER EXTERNAL TABLE ... REFRESH
    • ALTER EXTERNAL TABLE ... ADD FILES
    • ALTER EXTERNAL TABLE ... REMOVE FILES

    명시적 트랜잭션은 외부 테이블 메타데이터에서 업데이트된 파일을 수동으로 교체할 때 일관된 상태를 보장하는 데 사용할 수 있어요.

  • 다음 구문을 사용하여 외부 테이블에 열을 추가하거나 제거할 수 있어요:

열 추가:

ALTER TABLE  ADD COLUMN (   AS  ) [, ...]

열 이름 바꾸기:

ALTER TABLE  RENAME COLUMN  to 

열 삭제:

ALTER TABLE  DROP COLUMN 

기본 VALUE 및 METADATA$FILENAME 열은 삭제할 수 없어요.

예제는 ALTER TABLE 항목을 참조하세요.

  • 외부 테이블에 행 액세스 정책을 추가하거나 삭제하거나, 태그를 설정하거나 해제하려면 ALTER TABLE 명령을 사용하세요.

    하지만 외부 테이블을 생성할 때 테이블에 행 액세스 정책과 태그를 함께 지정할 수 있어요. 자세한 내용은 CREATE EXTERNAL TABLE을 참조하세요.

  • ALTER TABLE 명령을 실행하여 외부 테이블에서 데이터 메트릭 함수를 사용할 수 있어요. 자세한 내용은 Use SQL to set up data metric functions을 참조하세요.

  • 메타데이터 관련:

고객은 Snowflake 서비스를 사용할 때 메타데이터로 개인 데이터(User 객체에 대한 데이터 제외), 민감한 데이터, 수출 통제 데이터 또는 기타 규제 대상 데이터가 입력되지 않도록 해야 해요. 자세한 내용은 Metadata fields in Snowflake을 참조하세요.

예제

메타데이터 수동 새로 고침

참조된 데이터 파일의 변경 내용에 따라 외부 테이블 메타데이터 전체를 수동으로 새로 고쳐요:



ALTER EXTERNAL TABLE exttable_json REFRESH;

첫 번째 예제와 비슷하지만, 외부 테이블 메타데이터의 특정 경로만 수동으로 새로 고쳐요:

CREATE OR REPLACE STAGE mystage
  URL='://twitter_feed/logs/'
  .. ;

-- Create the external table
-- 'daily' path includes paths in  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는 외부 테이블 메타데이터에서 파티션을 제거해요. 이 작업은 지정된 위치에 있는 데이터 파일도 메타데이터에서 제거해요.

더 알아보기 (Learn more)