Managing regular data loads

Managing regular data loads (정기 데이터 로드 관리)

이 주제는 정기 데이터 로드를 관리하기 위한 모범 사례, 일반 지침, 중요한 고려 사항을 제공해요.

출처: Snowflake Documentation

본문

스테이징된 데이터 파일 파티셔닝

ETL(추출, 변환, 로드) 프로세스나 기계 생성 데이터의 정기 가져오기 같은 정기 데이터 로드를 계획할 때는 논리적·세분화된 경로를 사용해 내부(즉, Snowflake) 스테이지나 외부 위치(S3 버킷 또는 Azure 컨테이너)의 데이터를 파티셔닝하는 것이 중요해요. 애플리케이션 또는 위치 같은 식별 세부 정보와 데이터가 기록된 날짜를 포함하는 파티셔닝 구조를 만들어요. 그런 다음 단일 명령으로 파티셔닝된 데이터의 어떤 부분이든 Snowflake로 복사할 수 있어요. 테이블을 처음 채울 때 시, 일, 월, 심지어 연 단위로 데이터를 Snowflake로 복사할 수 있어요.

경로를 사용한 파티셔닝된 S3 버킷의 몇 가지 예:

s3://*bucket_name*/*application_one*/2016/07/01/11/, s3://*bucket_name*/*application_two*/*location_one*/2016/07/01/14/

여기서:

*application_one*, *application_two*, *location_one* 등

경로의 모든 데이터 소스에 대한 식별 세부 정보. 데이터는 기록된 날짜로 조직할 수 있어요. 선택적인 24시간 디렉터리는 각 디렉터리의 데이터 양을 줄여요.

Note

S3는 Snowflake가 사용하는 각 COPY 문과 함께 디렉터리 목록을 전송하므로 각 디렉터리의 파일 수를 줄이면 COPY 문의 성능이 개선돼요. 매시간 폴더 안에 10~15분 단위의 하위 폴더를 만드는 것도 고려할 수 있어요.

마찬가지로 내부 스테이지에 파일을 스테이징할 때도 경로를 추가할 수 있어요. 예:

PUT file:///tmp/file_20160701.11*.csv @my_stage/<application_one>/<location_one>/2016/07/01/11/;

스테이징된 데이터 로딩

스테이징된 파일의 정확한 경로를 지정해 조직된 데이터 파일을 Snowflake 테이블로 로드해요. 자세한 내용은 경로별 데이터 조직을 참고해요.

로드된 데이터 파일 제거

스테이징된 파일의 데이터가 성공적으로 로드되면, 데이터가 우발적으로 다시 로드(중복)되지 않도록 스테이징된 파일을 제거하는 것을 고려해요.

Note

데이터가 성공적으로 로드될 때까지 스테이징된 파일을 제거하지 마세요. 데이터가 성공적으로 로드되었는지 확인하려면 COPY_HISTORY 명령을 사용해요. STATUS 컬럼을 확인해 파일의 데이터가 로드되었는지 결정해요. 상태가 Load in progress이면 스테이징된 파일을 제거하면 부분 로드와 데이터 손실이 발생할 수 있다는 점에 주의해요.

Snowflake 스테이지(사용자 스테이지, 테이블 스테이지, 명명된 스테이지)에서 스테이징된 파일을 다음 방법으로 삭제할 수 있어요.