카테고리:

테이블, 뷰 및 시퀀스 DDL

ALTER EXTERNAL TABLE

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

참고 항목:

CREATE EXTERNAL TABLE , DROP EXTERNAL TABLE , SHOW EXTERNAL TABLES , DESCRIBE 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 } ]
  [ TAG <tag_name> = '<tag_value>' [ , <tag_name> = '<tag_value>' ... ] ]

ALTER EXTERNAL TABLE [ IF EXISTS ] <name> UNSET
  TAG <tag_name> [ , <tag_name> ... ]

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

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 FILESREMOVE FILES 매개 변수는 외부 테이블 메타데이터를 수동으로 새로 고치는 데 사용됩니다(즉, AUTO_REFRESH = FALSE 일 때). 파일 참조는 외부 테이블 정의에서 [ WITH ] LOCATION에 상대적인 경로로 표현됩니다. 자세한 내용은 CREATE EXTERNAL TABLE 섹션을 참조하십시오.

각 파일의 경로와 파일 이름을 나열합니다.

지정된 저장소 위치에 있는 경우, ALTER EXTERNAL TABLE 문은 외부 테이블 메타데이터를 자동으로 새로 고치고 파일을 추가합니다.

이 매개 변수는 파티션이 오브젝트 소유자에 의해 수동으로 추가된 경우(즉, PARTITION_TYPE = USER_SPECIFIED 인 경우) 분할된 외부 테이블에서 지원되지 않습니다.

REMOVE FILES

지정된 쉼표로 구분된 파일 목록을 외부 테이블 메타데이터에서 제거합니다. 일반적으로 ADD FILESREMOVE 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에 알리도록 저장소 위치에 대한 이벤트 알림을 구성해야 합니다. 자세한 내용은 클라우드 저장소 서비스의 지침을 참조하십시오.

  • 현재, Google Cloud Storage 스테이지를 참조하는 외부 테이블에 대해 메타데이터를 자동으로 새로 고치는 기능은 사용할 수 없습니다.

    해결 방법으로는, 데이터 파일 스테이징 모범 사례 를 따르고 ALTER EXTERNAL TABLE … REFRESH 문을 주기적으로 실행하여 누락된 파일을 등록하는 방법을 제안합니다. 만족스러운 성능을 위해, ALTER EXTERNAL TABLE과 함께 선택적 경로 접두사를 사용하여 나열하고 이미 등록되었는지 확인해야 하는 파일의 개수를 줄이는 것도 좋습니다(예: 볼륨에 따라 bucket_name/YYYY/MM/DD/ 또는 bucket_name/YYYY/MM/DD/HH/ 까지도 포함).

  • 이 매개 변수는 파티션이 오브젝트 소유자에 의해 수동으로 추가된 경우(즉, PARTITION_TYPE = USER_SPECIFIED 인 경우) 분할된 외부 테이블에서 지원되지 않습니다.

TRUE

Snowflake를 사용하면 외부 테이블 메타데이터의 자동 새로 고침을 트리거할 수 있습니다.

FALSE

Snowflake를 사용하여 외부 테이블 메타데이터의 자동 새로 고침을 트리거할 수 없습니다. 메타데이터를 스테이지 경로의 현재 파일 목록과 동기화하려면 ALTER EXTERNAL TABLE … REFRESH를 사용하여 외부 테이블 메타데이터를 주기적으로 수동으로 새로 고쳐야 합니다.

기본값: TRUE

TAG tag_name = 'tag_value' [ , tag_name = 'tag_value' , ... ]

태그 이름과 태그 문자열 값을 지정합니다.

태그 값은 항상 문자열이며, 태그 값의 최대 문자 수는 256자입니다.

문에서 태그를 지정하는 방법에 대한 자세한 내용은 오브젝트 및 열에 대한 태그 할당량 섹션을 참조하십시오.

UNSET

  • TAG tag_name [ , tag_name ... ]

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

외부 테이블의 파티션 타입이 사용자 지정(즉, 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 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 Snowflake에서의 액세스 제어 섹션을 참조하십시오.

사용법 노트

  • 외부 테이블 소유자(즉, 외부 테이블에 대한 OWNERSHIP 권한을 가진 역할) 이상만이 명령을 실행할 수 있습니다.

  • 다음 명령은 명시적 트랜잭션에서 사용할 수 있습니다(BEGINCOMMIT 사용).

    • 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 명령을 사용하십시오.

  • 메타데이터 관련:

    주의

    고객은 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는 외부 테이블의 메타데이터에서 파티션을 제거합니다. 또한 이 작업은 메타데이터에서 지정된 위치의 모든 데이터 파일을 제거합니다.

맨 위로 이동