Skip to content

눈송이에서 쉽게 단계에서 모든 열을 선택하는 방법

Updated on

데이터 엔지니어링, 데이터 웨어하우스, 데이터 레이크 및 데이터 과학 분야에서 혁신적인 클라우드 데이터 플랫폼인 스노우플레이크는 데이터 엔지니어링, 데이터 웨어하우스, 데이터 레이크 및 데이터 과학 분야의 전경을 변화시키고 있습니다. 스노우플레이크의 주요 기능 중 하나는 단계를 다루는 능력으로, 데이터 웨어하우징 및 분석에 중요한 구성 요소입니다. 이 기사에서는 스노우플레이크의 단계 개념에 대해 심층적으로 설명하고, 무엇보다도 단계에서 모든 열을 선택하는 방법에 대해 알아보겠습니다.

스노우플레이크에서 단계는 데이터 파일이 테이블로 로드되기 전에 저장되는 중간 공간으로서 핵심적인 기능을 수행합니다. 이 기능은 대량의 데이터 작업에 필수적이며, 스노우플레이크와 함께 작업하는 데이터 엔지니어 및 분석가에게 중요한 주제입니다. 그러나 스테이지에서 모든 열을 선택하는 구체적인 내용에 대해 알아보기 전에, 스노우플레이크 단계가 무엇이고 왜 중요한지 먼저 이해해야 합니다.

Snowflake 데이터를 쉽게 시각화하고 싶나요? RATH (opens in a new tab)는 AI 기반 데이터 시각화 및 자동 데이터 분석을 위한 가장 쉬운 솔루션을 제공합니다!

다음 비디오를 시청하여 RATH로 데이터 인사이트를 쉽게 탐색하는 방법에 대해 알아보세요:


지금 Snowflake 데이터베이스를 RATH에 연결하고 싶으신가요? Snowflake 통합 단계별 가이드를 확인해보세요.

Snowflake 외에도, RATH는 다양한 데이터 소스를 지원합니다. RATH에 연결할 수 있는 주요 데이터베이스 솔루션 몇 가지는 다음과 같습니다: 지원되는 데이터베이스

관심이 있으신가요? RATH 웹사이트 (opens in a new tab)에서 지금 바로 RATH를 시도해보세요.

RATH로 Snowflake 데이터 시각화하기 (opens in a new tab)

스노우플레이크의 스테이지 이해

스노우플레이크에서 스테이지는 데이터 파일이 데이터베이스 테이블로 대량 로딩 및 언로딩되는 위치를 지정하는 이름 있는 데이터베이스 개체입니다. 스테이지는 데이터 웨어하우징 및 분석에서 핵심적인 역할을 수행하며, 원본 데이터 파일과 스노우플레이크 테이블 사이의 연결 역할을 합니다.

스노우플레이크에는 다음과 같은 두 가지 종류의 스테이지가 있습니다:

  • 내부 스테이지: 이 스테이지는 데이터를 스노우플레이크 테이블 내부에 저장합니다. 각 테이블과 스키마에 대해 자동으로 생성되며, 명시적으로 생성할 수도 있습니다.
  • 외부 스테이지: 이 스테이지는 Amazon S3 버킷, Google Cloud Storage 버킷 또는 Microsoft Azure Blob 스토리지와 같은 외부 위치에 데이터를 저장합니다. 외부 스테이지는 읽기 전용이므로 DML 작업을 수행할 수 없습니다.

이 두 가지 유형의 스테이지의 차이점을 이해하는 것은 스노우플레이크 작업시 중요합니다. 이는 데이터와 상호작용하는 방식에 영향을 미치기 때문입니다.

스노우플레이크 메타데이터 사용하기

스노우플레이크는 내부 및 외부 스테이지의 파일에 대한 메타데이터를 자동으로 생성합니다. 이 메타데이터에는 파일 이름, 버전 ID 및 해당 속성과 관련된 추가 정보가 포함됩니다. 스노우플레이크의 메타데이터는 데이터 웨어하우스의 내용을 찾는 데 도움을 주는 지도 역할을 하므로, 데이터 쿼리 및 분석의 중요한 측면입니다.

다음은 스노우플레이크의 주요 메타데이터 열입니다. 이 열들을 쿼리하거나 테이블에로드할 수 있습니다:

  • METADATA$FILENAME: 이 열은 스테이지된 파일 이름, 해당하는 행 및 파일 경로를 반환합니다.
  • METADATA$FILE_ROW_NUMBER: 이 열은 스테이지된 파일의 각 레코드에 대한 행 번호를 반환합니다.

스노우플레이크에서 스테이지 데이터 쿼리하기

이제 스노우플레이크의 스테이지 및 메타데이터에 대한 튼튼한 이해가 되었으므로, 스노우플레이크에서 스테이지 데이터를 쿼리하는 방법에 대해 알아보겠습니다. 이 과정을 설명하기 위해 외부 스테이지와 내부 스테이지에서 메타데이터를 쿼리하는 단계별 가이드를 제공하며, 프로세스를 설명하는 실제 예시를 포함할 것입니다.

외부 스테이지에서 메타데이터 쿼리하기

먼저, 외부 Amazon S3 버킷에 스테이징된 'Cars'라는 CSV 파일이 있는 예제부터 시작해보겠습니다. 이 파일은 id, name 및 location이라는 세 가지 열을 포함하고 있습니다. 다음은 이 스테이징된 파일에서 메타데이터를 쿼리하는 방법입니다:

  1. 스노우플레이크 스테이지 생성하기: 우선, CSV 파일이 저장된 Amazon S3 버킷을 가리키는 스테이지를 생성해야 합니다. CREATE STAGE 명령을 사용하여 이 작업을 수행할 수 있습니다.

  2. 파일 형식 생성하기: 그 다음, CSV 파일의 형식을 설명하는 파일 형식을 생성해야 합니다. CREATE FILE FORMAT 명령을 사용하여 이 작업을 수행할 수 있습니다.

  3. 메타데이터 쿼리하기: 마지막으로, SELECT 문을 사용하여 스테이징된 파일의 메타데이터 및 일반 데이터 열을 쿼리할 수 있습니다. SELECT 문에는 METADATA$FILENAMEMETADATA$FILE_ROW_NUMBER 열뿐만 아니라 일반 데이터 열도 포함되어야 합니다.

다음은 이러한 단계를 설명하는 샘플 코드 스니펫입니다:

-- 스테이지 생성하기
CREATE OR REPLACE STAGE cars_stage URL = 's3://your_bucket/path/';
 
-- 파일 형식 생성하기
CREATE OR REPLACE FILE FORMAT cars_format TYPE = 'CSV' FIELD_DELIMITER = ',';
 
-- 메타데이터 및 데이터 열 쿼리하기
SELECT METADATA$FILENAME, METADATA$FILE_ROW_NUMBER, $1, $2, $3
FROM @cars_stage
(FILE_FORMAT => cars_format);

이 쿼리는 스테이징된 CSV 파일의 각 레코드에 대해 파일 이름, 행 번호 및 각 열의 데이터를 반환합니다.

내부 스테이지에서 메타데이터 쿼리하기

내부 스테이지에서 메타데이터를 쿼리하는 것은 비슷한 프로세스를 따르지만 몇 가지 차이점이 있습니다. 내부 스노우플레이크 스테이지에 스테이징된 'Movies'라는 JSON 파일을 고려해보겠습니다. 이 파일에는 title 및 year라는 두 개의 속성이 포함되어 있습니다. 다음은 이 스테이징된 파일에서 메타데이터를 쿼리하는 방법입니다:

  1. 스노우플레이크 스테이지 생성하기: 외부 스테이지와 마찬가지로, 먼저 스테이지를 생성해야 합니다. 그러나 이는 내부 스테이지이므로 URL을 지정할 필요가 없습니다.

  2. 파일 형식 생성하기: 그 다음, JSON 파일의 형식을 설명하는 파일 형식을 생성해야 합니다. 이는 'JSON'으로 설정된 CREATE FILE FORMAT 명령을 사용하여 수행할 수 있습니다.

  3. JSON 파일 스테이징하기: PUT 명령을 사용하여 로컬 디렉토리에서 JSON 파일을 스노우플레이크 스테이지로 스테이징할 수 있습니다.

  4. 메타데이터 쿼리하기: 마지막으로, SELECT 문을 사용하여 스테이징된 파일의 메타데이터와 객체를 쿼리할 수 있습니다. SELECT 문에는 METADATA$FILENAMEMETADATA$FILE_ROW_NUMBER 열뿐만 아니라 JSON 객체를 파싱하는 PARSE_JSON 함수도 포함되어야 합니다.

다음은 이러한 단계를 설명하는 샘플 코드 스니펫입니다:

-- 스테이지 생성
CREATE OR REPLACE STAGE movies_stage;
 
-- 파일 포맷 생성
CREATE OR REPLACE FILE FORMAT movies_format TYPE = 'JSON';
 
-- JSON 파일을 스테이지에 업로드
PUT file://path_to_your_file/movies.json @movies_stage;
 
-- 메타데이터 및 데이터 열 조회
SELECT METADATA$FILENAME, METADATA$FILE_ROW_NUMBER, PARSE_JSON($1)
FROM @movies_stage
(FILE_FORMAT => movies_format);
 

이 쿼리는 스테이지된 JSON 파일의 각 레코드에 대해 파일 이름, 행 번호 및 구문 분석된 JSON 객체를 반환합니다.

스테이지된 데이터 쿼리의 고급 기술

Snowflake에서 스테이지된 데이터를 쿼리하는 데 익숙해지면 더욱 고급 기술을 탐색할 수 있습니다. 예를 들어, COPY INTO 명령을 사용하여 스테이지된 파일에서 데이터를 Snowflake 테이블로 로드할 수 있습니다. 이 명령을 사용하면 데이터를 행별로 삽입하는 것보다 훨씬 빠른 대량 데이터 작업을 수행할 수 있습니다.

다음은 Amazon S3 버킷에 스테이지된 CSV 파일에서 데이터를 Snowflake 테이블로 로드하는 방법의 예입니다:

-- 테이블 생성
CREATE OR REPLACE TABLE cars (id INTEGER, name STRING, location STRING);
 
-- 스테이지된 파일에서 데이터를 테이블로 로드
COPY INTO cars
FROM @cars_stage
FILE_FORMAT => cars_format;

이 명령은 스테이지된 CSV 파일의 모든 데이터를 'cars' 테이블로 로드합니다. 그런 다음 테이블에서 일반적인 SQL 명령을 사용하여 데이터를 쿼리할 수 있습니다.

자주 묻는 질문

1. 테이블로 로드하지 않고 Snowflake에서 스테이지된 데이터를 쿼리할 수 있나요?

네, 스테이지된 데이터를 테이블로 로드하지 않고도 Snowflake에서 직접 쿼리할 수 있습니다. 앞에서 보여준 예시와 같이 SELECT 문을 사용하여 이 작업을 수행할 수 있습니다. 그러나 대량의 스테이지된 데이터를 직접 쿼리하는 것은 테이블로 로드된 데이터를 쿼리하는 것보다 느릴 수 있습니다.

2. Snowflake에서 어떤 유형의 파일을 스테이지할 수 있나요?

Snowflake는 CSV, JSON, Avro, Parquet 및 ORC를 포함한 여러 유형의 파일을 스테이징할 수 있습니다. 파일 형식을 생성할 때 파일 유형을 지정할 수 있습니다.

3. 로컬 파일에서 Snowflake에 데이터를 스테이징할 수 있나요?

네, PUT 명령을 사용하여 로컬 파일을 Snowflake에 스테이징할 수 있습니다. 이 명령은 로컬 파일을 내부 Snowflake 스테이지에 업로드하고 데이터를 쿼리하거나 테이블로 로드할 수 있도록 합니다.

결론

Snowflake에서 스테이지에서 모든 열을 선택하는 것은 대량의 데이터를 효율적으로 쿼리하고 분석할 수 있는 강력한 작업입니다. Snowflake의 스테이지와 메타데이터 개념을 이해하고 스테이지된 데이터를 쿼리하는 기술을 숙달함으로써 데이터의 전체 잠재력을 발휘하고 더 깊은 통찰력을 얻을 수 있습니다. 데이터 엔지니어, 데이터 분석가 또는 데이터 과학에 관심 있는 개인이든 누구든 이러한 기술을 숙달하는 것은 분명히 유용한 도구 상자에 추가될 것입니다.