VALIDATE

VALIDATE

과거 COPY INTO

명령 실행에서 로드된 파일을 검증하고, 로드 중 발생한 첫 번째 오류만이 아니라 모든 오류를 반환하는 테이블 함수예요. 데이터 로드 실패를 진단할 때 씁니다.

출처: Snowflake SQL Reference

본문

VALIDATE( [<namespace>.]<table_name> , JOB_ID => { '<query_id>' | '_last' } )

[namespace.]table_name — 로드 대상이었던 테이블의 정규화된 이름이에요. 네임스페이스는 database_name.schema_name 또는 schema_name 형태예요. 세션에 데이터베이스와 스키마가 현재 사용 중이면 선택이고, 그렇지 않으면 필수예요.

JOB_ID => query_id | _last — 검증할 COPY INTO

명령의 ID예요.

  • ID는 Snowsight의 Query History 페이지에 있는 Query ID 컬럼에서 얻을 수 있어요. 지정한 쿼리 ID는 지정한 대상 테이블에 대한 것이어야 해요.
  • _last를 지정하면 지정한 대상 테이블과 무관하게 현재 세션에서 마지막으로 실행된 로드를 검증해요.

사용 메모

  • ON_ERROR = ABORT_STATEMENT(기본값)을 지정한 COPY 문장에 대해서는 검증 결과가 없어요.
  • 다음 경우 검증이 실패해요: COPY INTO 중에 SELECT 문장으로 데이터를 변환한 경우, 현재 사용자가 table_name에 접근 권한이 없는 경우, 현재 사용자가 query_id를 실행한 사용자가 아니면서 그 사용자에 대한 접근 제어 권한이 없는 경우, 복사 기록 메타데이터가 만료된 경우.
  • 로드 실행 이후 query_id가 사용한 스테이지에 새 파일이 추가되었다면 그 파일들은 검증 중 무시돼요.
  • 로드 실행 이후 스테이지에서 파일이 제거되었다면 제거된 파일은 누락(missing)으로 보고돼요.

예시 — 마지막으로 실행된 COPY 명령의 오류 반환:

SELECT * FROM TABLE(VALIDATE(t1, JOB_ID => '_last'));

Query History의 쿼리 ID를 지정해 오류를 반환할 수도 있어요.

SELECT * FROM TABLE(VALIDATE(t1, JOB_ID=>'5415fa1e-59c9-4dda-b652-533de02fdcf1'));

같은 쿼리지만 결과를 나중에 참조할 테이블로 저장할 수도 있어요.

CREATE OR REPLACE TABLE save_copy_errors AS SELECT * FROM TABLE(VALIDATE(t1, JOB_ID=>'5415fa1e-59c9-4dda-b652-533de02fdcf1'));

더 알아보기 (Learn more)