CREATE DATA MOVEMENT RULE
CREATE DATA MOVEMENT RULE
현재/지정한 스키마에 새 데이터 이동 규칙(data movement rule)을 만들거나 기존 규칙을 교체하는 명령이에요. 데이터 이동 규칙은 단일 이동 유형을 제어하고 해당 유형이 이동할 수 있는 최대 행 수를 반환해요.
출처: 문서
본문
현재/지정한 스키마에 새 데이터 이동 규칙을 만들거나 기존 규칙을 교체해요.
데이터 이동 규칙은 단일 이동 유형을 제어하고 이동 유형이 이동할 수 있는 최대 행 수를 반환해요. 데이터 이동 규칙을 만든 뒤에는 데이터 이동 정책에 추가해 Snowflake가 이를 강제하거나 보고하게 해요.
함께 보기: ALTER DATA MOVEMENT RULE, DROP DATA MOVEMENT RULE, SHOW DATA MOVEMENT RULES, DESCRIBE DATA MOVEMENT RULE
CREATE DATA MOVEMENT POLICY, ALTER DATA MOVEMENT POLICY, DROP DATA MOVEMENT POLICY
구문 (Syntax)
CREATE [ OR REPLACE ] DATA MOVEMENT RULE [ IF NOT EXISTS ] <name>
TYPE = '<movement_type>'
MAX_ROWS AS () RETURNS INTEGER
-> ( <expression> )
[ COMMENT = '<string_literal>' ]
필수 매개변수 (Required parameters)
name
데이터 이동 규칙의 식별자(즉 이름)를 지정하는 문자열로, 규칙이 만들어지는 스키마 안에서 고유해야 해요.
또한 식별자는 반드시 알파벳 문자로 시작해야 하며, 전체 식별자 문자열이 큰따옴표로 묶이지 않는 한 공백이나 특수 문자를 포함할 수 없어요 (예: "My object"). 큰따옴표로 묶인 식별자는 대소문자를 구분해요.
자세한 내용은 식별자 요구 사항(Identifier requirements)을 참고해요.
TYPE = 'movement_type'
규칙이 제어하는 이동 유형을 지정해요. 규칙은 정확히 하나의 이동 유형을 제어해요.
지원되는 값:
COPY_INTO_EXTERNAL_STAGE— COPY INTO <location>으로 외부 스테이지에 언로드되는 행.COPY_INTO_INTERNAL_STAGE— COPY INTO <location>으로 내부 스테이지에 언로드되는 행.SNOWSIGHT_UI— Snowsight 워크시트 결과 그리드로 반환되는 행.AGENT_ACCESS— 에이전트가 접근한 행.UI_DOWNLOAD— Snowsight의 Download 버튼(워크스페이스 결과 창, 노트북 셀, 쿼리 기록)을 통해 다운로드되는 행. 모든 다운로드 표면에 적용되지는 않아요. 예를 들어 Streamlit 앱, Visual Studio Code 확장의 노트북, 워크스페이스의 Export as HTML 옵션, CoWork에서의 다운로드는 포함되지 않아요.PROGRAMMATIC_FETCH— 드라이버나 커넥터를 통해 프로그래밍 방식으로 가져오는 행.
MAX_ROWS AS () RETURNS INTEGER -> ( expression )
INTEGER를 반환하는 SQL 표현식 본문으로, 이동 유형이 이동할 수 있는 최대 행 수를 설정해요.
반환 값에 따라 동작이 결정돼요.
NULL— 행 수에 제한이 없어요.0— 이동을 차단해요.- 양의 정수 — 이동 유형이 이동할 수 있는 최대 행 수.
표현식은 CASE 및 기타 로직 문을 포함할 수 있어요. SYS_CONTEXT를 호출해 세션과 이동 컨텍스트를 읽고 반환된 제한을 조정할 수 있어요.
선택 매개변수 (Optional parameters)
COMMENT = 'string_literal'
데이터 이동 규칙에 대한 설명(comment)을 지정해요.
- 기본값: 값 없음
접근 제어 요구 사항 (Access control requirements)
이 작업을 실행하는 데 사용하는 역할(role)은 최소한 다음 권한을 가져야 해요.
| 권한 (Privilege) | 객체 (Object) | 비고 |
|---|---|---|
| CREATE DATA MOVEMENT RULE | Schema |
스키마 안의 객체를 작업하려면 상위 데이터베이스에 대한 권한이 최소 하나, 상위 스키마에 대한 권한이 최소 하나 필요해요.
지정된 권한 집합으로 사용자 지정 역할을 만드는 방법은 사용자 지정 역할 만들기(Creating custom roles)를 참고해요. 보호 가능한 객체에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여의 일반적인 내용은 접근 제어 개요(Overview of Access Control)를 참고해요.
사용 메모 (Usage notes)
규칙은 데이터 이동 정책의 ENFORCE_RULES와 ALERT_RULES에 동시에 나타날 수 없어요.
데이터 이동 정책은 ENFORCE_RULES와 ALERT_RULES 각각에 이동 유형당 최대 하나의 규칙을 가질 수 있어요.
UI_DOWNLOAD 규칙은 ALERT_RULES가 아닌 ENFORCE_RULES에서만 사용할 수 있어요.
MAX_ROWS 표현식 본문은 SYS_CONTEXT를 사용해 세션과 이동 컨텍스트를 읽을 수 있어요.
GET_DDL은 이 객체 유형을 지원해요. 기존 데이터 이동 규칙을 수정해야 하고 현재 정의를 확인해야 한다면 GET_DDL 함수를 실행해요.
OR REPLACE와 IF NOT EXISTS 절은 서로 배타적이에요. 같은 문에서 둘 다 사용할 수 없어요.
CREATE OR REPLACE <object> 문은 원자적(atomic)으로 동작해요. 즉, 객체를 교체할 때 기존 객체는 삭제되고 새 객체는 단일 트랜잭션 안에서 생성돼요.
메타데이터에 관해서는 다음 사항에 주의해요.
⚠️ 주의: 고객은 Snowflake 서비스를 사용할 때 (User 객체를 제외하고) 개인 데이터·민감 데이터·수출 통제 데이터·기타 규제 데이터를 메타데이터로 입력하지 않도록 해야 해요. 자세한 내용은 Snowflake의 메타데이터 필드를 참고해요.
예시 (Examples)
COMP_TEAM_ROLE 역할이 외부 스테이지에 원하는 만큼의 행을 언로드할 수 있게 하고, 그 외 모든 역할은 차단하는 규칙을 만들어요.
CREATE OR REPLACE DATA MOVEMENT RULE hr_pii_copy_guard
TYPE = 'COPY_INTO_EXTERNAL_STAGE'
MAX_ROWS AS () RETURNS INTEGER
-> (
CASE
WHEN SYS_CONTEXT('SNOWFLAKE$SESSION', 'ROLE') = 'COMP_TEAM_ROLE' THEN NULL
ELSE 0
END
);
외부 스테이지로의 언로드를 1000행으로 제한하는 규칙을 만들어요.
CREATE OR REPLACE DATA MOVEMENT RULE hr_pii_copy_limit
TYPE = 'COPY_INTO_EXTERNAL_STAGE'
MAX_ROWS AS () RETURNS INTEGER
-> (1000);
더 알아보기 (Learn more)
- CREATE DATA MOVEMENT POLICY — 데이터 이동 정책 생성
- ALTER DATA MOVEMENT RULE — 데이터 이동 규칙 수정
- DROP DATA MOVEMENT RULE — 데이터 이동 규칙 삭제