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