비정형 데이터 타입

Snowflake는 다음 세 가지 종류의 데이터를 지원합니다.

  • 정형 데이터 (예: CSV 파일)는 엄격한 표 형식 스키마를 따릅니다. 정형 데이터는 SQL 테이블에 쉽게 로딩할 수 있습니다.

  • 반정형 데이터 (예: JSON 또는 XML 파일)에는 유연한 스키마가 있습니다. Snowflake는 특수 함수를 사용하여 반정형 데이터의 필드에 액세스할 수 있지만, 정형 타입 데이터만큼 쉽게 쿼리할 수 있는 데이터는 아닙니다. 반정형 데이터는 VARIANT 열을 사용하여 SQL 테이블에 로딩할 수 있습니다.

  • 비정형 데이터 (예: 문서, 이미지 또는 오디오 파일)에는 고유한 스키마가 없습니다. 비정형 데이터에도 내부 구조가 있을 수 있지만(예: PNG 이미지 파일은 설명서 형식을 따라야 함) 이러한 기술적 세부 사항은 일반적으로 파일에 있는 정보와 관련이 없습니다.

Snowflake는 AI COMPLETE 함수문서 AI 와 같은 비정형 파일에서 데이터로 작업하는 방법을 제공합니다.

Snowflake에서 비정형 데이터를 사용하려면 먼저 내부 또는 외부 스테이지에 데이터를 저장해야 합니다. 비정형 데이터를 처리하는 Snowflake 함수는 거기에서 데이터를 읽습니다. 함수에 따라 다음 중 하나 이상의 방법으로 파일을 지정합니다.

FILE 데이터 타입

Snowflake는 비정형 데이터를 위한 FILE 데이터 타입을 제공합니다. FILE 값은 내부 스테이지 또는 외부 스테이지에 저장된 파일을 나타내지만 파일의 데이터는 저장하지 않고 파일에 대한 참조만 저장합니다. 여기에는 다음과 같은 메타데이터가 포함됩니다.

  • STAGE: 파일이 있는 스테이지의 이름입니다.

  • RELATIVE_PATH: 해당 스테이지에서 파일의 상대 경로입니다.

  • STAGE_FILE_URL: 스테이지 파일 URL 입니다.

  • SCOPED_FILE_URL: 범위가 지정된 파일 URL 입니다.

  • CONTENT_TYPE: MIME 유형의 파일입니다.

  • SIZE: 파일의 크기(바이트 단위)입니다.

  • ETAG: 파일 내용의 고유 해시입니다.

  • LAST_MODIFIED: 파일이 마지막으로 수정된 타임스탬프입니다.

이러한 필드가 모두 필수 사항은 아닙니다. FILE 에는 CONTENT_TYPE, SIZE, ETAG 및 LAST_MODIFIED 필드가 있어야 하며 STAGE 와 RELATIVE_PATH, STAGE_FILE_URL 또는 SCOPED_FILE_URL 로 지정된 파일 위치도 있어야 합니다.

범위가 지정된 파일 URL, 스테이지 및 경로 또는 메타데이터 오브젝트를 TO_FILE 또는 TRY_TO_FILE 함수에 전달하여 파일을 생성할 수 있습니다.

FILE 함수

하위 카테고리

함수

생성자

TO_FILE

TRY_TO_FILE

접근자

FL_GET_CONTENT_TYPE

FL_GET_ETAG

FL_GET_FILE_TYPE

FL_GET_LAST_MODIFIED

FL_GET_RELATIVE_PATH

FL_GET_SCOPED_FILE_URL

FL_GET_SIZE

FL_GET_STAGE

FL_GET_STAGE_FILE_URL

유틸리티 함수

FL_IS_AUDIO

FL_IS_COMPRESSED

FL_IS_DOCUMENT

FL_IS_IMAGE

FL_IS_VIDEO

사용법 노트

  • FILE 값이 기본 스테이징된 파일과 일치하지 않을 수 있습니다. FILE 값은 기본 파일을 수정하거나 삭제할 때 업데이트되지 않습니다. 반대로 테이블에서 FILE 값이 삭제되면 기본 파일은 영향을 받지 않습니다.

  • 기본 파일에 대한 권한은 FILE 을 만들 때 지정한 URL 유형에 따라 관리됩니다. 스테이지 파일 URL 및 스테이지/경로 조합은 관련 스테이지에 액세스할 수 있는 호출자에게 영구적인 권한을 부여합니다. 범위가 URL인 경우 24시간 동안 기본 파일에 대한 임시 사용자 기반 액세스 권한을 부여합니다.

SQL 을 통해 Snowflake에서 비정형 데이터 사용하기

FILE 열이 있는 테이블을 만듭니다.

CREATE TABLE images_table(img FILE);
Copy

이미지 파일이 포함된 외부 스테이지 my_images 에서 테이블로 데이터 로딩합니다. mpy_images 는 내부 또는 외부 스테이지가 될 수 있습니다.

참고

이 프로세스에는 스테이지에서 디렉터리 테이블 지원이 필요합니다. 필요한 경우 아래 SQL 을 사용하여 활성화합니다.

ALTER STAGE my_images DIRECTORY=(ENABLE=true);
Copy

Snowflake 테이블에 데이터를 로딩합니다.

INSERT INTO images_table
    SELECT TO_FILE(file_url) FROM DIRECTORY(@my_images);
Copy

images_table 에 대해 SQL 문을 실행합니다. 예를 들어, 다음 쿼리는 2021년 1월 1일에서 2023년 1월 1일 사이에 마지막으로 수정된 테이블 내 각 파일의 상대 경로를 반환합니다.

SELECT FL_GET_RELATIVE_PATH(f)
    FROM images_table
    WHERE FL_GET_LAST_MODIFIED(f) BETWEEN '2021-01-01' and '2023-01-01';
Copy

알려진 제한 사항

FILE 데이터 타입은 현재 사용할 수 없습니다.

  • CLUSTER BY, GROUP BY 및 ORDER BY 절

  • 하이브리드 테이블, Iceberg 테이블 및 외부 테이블

  • SnowScript

  • 보안 뷰

  • 바인딩

  • 검색 최적화

  • Snowpark Python을 제외한 클라이언트 및 커넥터