Managing regular data loads
Managing regular data loads (정기 데이터 로드 관리)
이 주제는 정기 데이터 로드를 관리하기 위한 모범 사례, 일반 지침, 중요한 고려 사항을 제공해요.
본문
스테이징된 데이터 파일 파티셔닝
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 스테이지(사용자 스테이지, 테이블 스테이지, 명명된 스테이지)에서 스테이징된 파일을 다음 방법으로 삭제할 수 있어요.
- 성공적으로 로드된 파일은 COPY INTO
명령에서 PURGE 복사 옵션을 지정해 로드 중에 스테이지에서 삭제할 수 있어요.
- 로드가 완료된 후 REMOVE 명령을 사용해 스테이지의 파일을 제거해요.
파일을 제거하면 우발적으로 다시 로드되지 않도록 보장해요. 또한 COPY 명령이 스테이지의 기존 파일이 이미 로드되었는지 확인하려고 스캔해야 하는 파일 수가 줄어들어 로드 성능도 개선돼요.
더 알아보기 (Learn more)
- Staging data — 데이터 스테이징
- Data loading considerations — 데이터 로드 고려 사항
- REMOVE — 파일 제거 명령