비정형 데이터 타입¶
Snowflake는 다음 세 가지 종류의 데이터를 지원합니다.
정형 데이터 (예: CSV 파일)는 엄격한 표 형식 스키마를 따릅니다. 정형 데이터는 SQL 테이블에 쉽게 로딩할 수 있습니다.
반정형 데이터 (예: JSON 또는 XML 파일)에는 유연한 스키마가 있습니다. Snowflake는 특수 함수를 사용하여 반정형 데이터의 필드에 액세스할 수 있지만, 정형 타입 데이터만큼 쉽게 쿼리할 수 있는 데이터는 아닙니다. 반정형 데이터는 VARIANT 열을 사용하여 SQL 테이블에 로딩할 수 있습니다.
비정형 데이터 (예: 문서, 이미지 또는 오디오 파일)에는 고유한 스키마가 없습니다. 비정형 데이터에도 내부 구조가 있을 수 있지만(예: PNG 이미지 파일은 설명서 형식을 따라야 함) 이러한 기술적 세부 사항은 일반적으로 파일에 있는 정보와 관련이 없습니다.
Snowflake는 AI COMPLETE 함수 및 문서 AI 와 같은 비정형 파일에서 데이터로 작업하는 방법을 제공합니다.
Snowflake에서 비정형 데이터를 사용하려면 먼저 내부 또는 외부 스테이지에 데이터를 저장해야 합니다. 비정형 데이터를 처리하는 Snowflake 함수는 거기에서 데이터를 읽습니다. 함수에 따라 다음 중 하나 이상의 방법으로 파일을 지정합니다.
파일을 사용할 함수에 스테이지 이름과 파일의 상대 경로를 두 개의 별도 인자로 전달.
TO_FILE 또는 TRY_TO_FILE 함수를 사용하여 만든 FILE 오브젝트 전달.
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 함수¶
하위 카테고리 |
함수 |
---|---|
생성자 |
|
접근자 |
|
유틸리티 함수 |
|
사용법 노트¶
FILE 값이 기본 스테이징된 파일과 일치하지 않을 수 있습니다. FILE 값은 기본 파일을 수정하거나 삭제할 때 업데이트되지 않습니다. 반대로 테이블에서 FILE 값이 삭제되면 기본 파일은 영향을 받지 않습니다.
기본 파일에 대한 권한은 FILE 을 만들 때 지정한 URL 유형에 따라 관리됩니다. 스테이지 파일 URL 및 스테이지/경로 조합은 관련 스테이지에 액세스할 수 있는 호출자에게 영구적인 권한을 부여합니다. 범위가 URL인 경우 24시간 동안 기본 파일에 대한 임시 사용자 기반 액세스 권한을 부여합니다.
SQL 을 통해 Snowflake에서 비정형 데이터 사용하기¶
FILE 열이 있는 테이블을 만듭니다.
CREATE TABLE images_table(img FILE);
이미지 파일이 포함된 외부 스테이지 my_images
에서 테이블로 데이터 로딩합니다. mpy_images
는 내부 또는 외부 스테이지가 될 수 있습니다.
참고
이 프로세스에는 스테이지에서 디렉터리 테이블 지원이 필요합니다. 필요한 경우 아래 SQL 을 사용하여 활성화합니다.
ALTER STAGE my_images DIRECTORY=(ENABLE=true);
Snowflake 테이블에 데이터를 로딩합니다.
INSERT INTO images_table
SELECT TO_FILE(file_url) FROM DIRECTORY(@my_images);
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';
알려진 제한 사항¶
FILE 데이터 타입은 현재 사용할 수 없습니다.
CLUSTER BY, GROUP BY 및 ORDER BY 절
하이브리드 테이블, Iceberg 테이블 및 외부 테이블
SnowScript
보안 뷰
바인딩
검색 최적화
Snowpark Python을 제외한 클라이언트 및 커넥터