디렉터리 테이블 조회

디렉터리 테이블 조회

이 주제는 디렉터리 테이블을 조회해 각 파일에 대한 Snowflake 파일 URL 같은 메타데이터와 함께 스테이지의 모든 파일 목록을 검색하는 방법을 다뤄요.

디렉터리 테이블 조회 문법:

SELECT * FROM DIRECTORY( @<stage_name> )

여기서:

  • *stage_name* — 디렉터리 테이블이 활성화된 스테이지의 이름.

문으로서의 SELECT와 문 안의 다른 절에 대한 자세한 내용은 Snowflake SQL Command Reference의 쿼리 문법을 참고해요.

출처: Documentation

본문

출력

디렉터리 테이블 조회의 출력에는 다음 열이 포함될 수 있어요.

열 데이터 유형 설명
RELATIVE_PATH TEXT 파일 URL을 사용해 접근할 파일의 경로.
SIZE NUMBER 파일의 크기(바이트 단위).
LAST_MODIFIED TIMESTAMP_TZ 파일이 스테이지에서 마지막으로 업데이트된 타임스탬프.
MD5 HEX 파일의 MD5 체크섬.
ETAG HEX 파일의 ETag 헤더.
FILE_URL TEXT 파일에 대한 Snowflake 파일 URL. 파일 URL 형식은 다음과 같아요. https://<account_identifier>/api/files/<db_name>.<schema_name>.<stage_name>/<relative_path>. 여기서 account_identifier는 스테이지의 Snowflake 계정 호스트 이름(계정 로케이터로 시작하고 Snowflake 도메인 snowflakecomputing.com으로 끝남)이고, db_name은 파일이 있는 스테이지를 포함하는 데이터베이스 이름, schema_name은 파일이 있는 스테이지를 포함하는 스키마 이름, stage_name은 파일이 있는 스테이지 이름, relative_path는 파일 URL을 사용해 접근할 파일의 경로예요. Business Critical 계정의 경우 계정에 Snowflake 서비스에 대한 프라이빗 연결이 활성화되어 있지 않아도 snowflakecomputing.com 바로 앞에 privatelink 세그먼트가 URL에 추가돼요(privatelink.snowflakecomputing.com). 자세한 내용은 계정 식별자를 참고해요.

사용 참고 사항

  • 내부 스테이지에서 다운로드한 파일이 손상된 경우, 스테이지 생성자에게 스테이지에 ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE')가 설정되어 있는지 확인해요.

예제

이 예제는 mystage라는 스테이지의 디렉터리 테이블에서 모든 메타데이터 열을 검색해요.

SELECT * FROM DIRECTORY(@mystage);

이 예제는 100KB보다 큰 파일에 대해 디렉터리 테이블에서 FILE_URL 열 값을 검색해요.

SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE SIZE > 100000;

이 예제는 쉼표로 구분된 값 파일에 대해 디렉터리 테이블에서 FILE_URL 열 값을 검색해요.

SELECT FILE_URL FROM DIRECTORY(@mystage) WHERE RELATIVE_PATH LIKE '%.csv';

디렉터리 테이블을 사용해 비정형 데이터용 뷰 만들기

디렉터리 테이블을 다른 Snowflake 테이블과 조인해 파일 URL과 파일에 대한 메타데이터를 결합한 비정형 데이터 뷰를 만들 수 있어요.

예제: PDF 파일과 그 데이터의 뷰 만들기

다음 예제는 file_url 키를 사용해 my_pdf_stage라는 스테이지의 디렉터리 테이블을 report_metadata라는 테이블과 조인해 reports_information이라는 뷰를 만들어요. 스테이지에는 PDF 보고서가 있고, report_metadata 테이블에는 author, publish_date 같은 각 PDF 보고서에 대한 구조화된 정보가 있어요. 결과 뷰는 비정형 PDF와 관련된 구조화된 메타데이터에 대한 정보를 얻는 방법을 제공해요.

CREATE VIEW reports_information AS
  SELECT
    file_url as report_link,
    author,
    publish_date,
    approved_date,
    geography,
    num_of_pages
  FROM directory(@my_pdf_stage) s
  JOIN report_metadata m
  ON s.file_url = m.file_url

더 알아보기