CREATE AGGREGATION POLICY¶
현재/지정된 스키마에서 새 집계 정책 을 생성하거나 기존 집계 정책을 대체합니다.
집계 정책을 생성한 후 ALTER TABLE 명령을 사용하여 테이블에 집계 정책을 할당하거나 ALTER VIEW 명령을 사용하여 뷰를 추가합니다.
- 참고 항목:
구문¶
CREATE [ OR REPLACE ] AGGREGATION POLICY [ IF NOT EXISTS ] <name>
AS () RETURNS AGGREGATION_CONSTRAINT -> <body>
[ COMMENT = '<string_literal>' ]
매개 변수¶
name
집계 정책의 식별자로, 스키마에 고유한 식별자여야 합니다.
식별자 값은 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예:
"My object"
)로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.
body
집계 정책의 제한 사항을 결정하는 SQL 식입니다.
집계 정책의 제약 조건을 정의하려면 SQL 식을 사용하여 다음 함수 중 하나 이상을 호출하십시오.
- NO_AGGREGATION_CONSTRAINT
정책 본문이 이 함수에서 값을 반환하면 쿼리는 집계 제한 테이블이나 뷰에서 제한 없이 데이터를 반환할 수 있습니다. 예를 들어, 관리자가 집계 제한 테이블이나 뷰에서 집계되지 않은 결과를 얻어야 할 경우 정책 본문에서 이 함수를 호출할 수 있습니다.
인자 없이 NO_AGGREGATION_CONSTRAINT를 호출합니다.
- AGGREGATION_CONSTRAINT
정책 본문이 이 함수에서 값을 반환하면 쿼리는 데이터를 집계하여 결과를 반환해야 합니다. 각 집계 그룹에 포함해야 하는 레코드 수를 지정하려면 MIN_GROUP_SIZE 인자를 사용하십시오.
AGGREGATION_CONSTRAINT 함수의 구문은 다음과 같습니다.
AGGREGATION_CONSTRAINT ( MIN_GROUP_SIZE => <integer_expression> )
여기서
MIN_GROUP_SIZE => integer_expression
집계 제약이 있는 테이블 또는 뷰에 대한 쿼리에서 반환되는 그룹에 포함해야 하는 행 또는 엔터티 의 수를 지정합니다.
함수에 대한 인자로
1
과0
을 전달하는 것은 차이가 있습니다. 둘 다 결과를 집계해야 합니다.또한
1
을 전달하려면 각 집계 그룹에 집계 제한 테이블의 레코드가 하나 이상 포함되어 있어야 합니다. 따라서 외부 조인의 경우 집계 제한 테이블의 레코드가 하나 이상 보호되지 않는 테이블의 레코드와 일치해야 합니다.0
을 전달하면 쿼리가 다른 테이블의 레코드로만 구성된 그룹을 반환할 수 있습니다. 따라서 집계 제한 테이블과 보호되지 않는 테이블 사이에서 외부 조인의 경우 그룹은 집계 제한 테이블의 어떤 레코드와도 일치하지 않는 보호되지 않는 테이블의 레코드로 구성될 수 있습니다.
정책 본문은 사용자 정의 함수, 테이블 또는 뷰를 참조할 수 없습니다.
COMMENT = 'string_literal'
집계 정책에 대한 설명을 추가하거나 기존 설명을 덮어씁니다.
액세스 제어 요구 사항¶
이 작업을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
---|---|---|
CREATE AGGREGATION POLICY |
스키마 |
스키마의 모든 오브젝트에 대해 작업을 수행하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한.
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
집계 정책 DDL 및 권한에 대한 추가적인 세부 사항은 권한과 명령 섹션을 참조하십시오.
사용법 노트¶
기존 집계 정책을 업데이트하고 정책의 현재 본문을 확인해야 할 경우 DESCRIBE AGGREGATION POLICY 명령 또는 GET_DDL 함수를 실행하십시오.
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
OR REPLACE
및IF NOT EXISTS
절은 상호 배타적입니다. 두 문자를 같은 문에 함께 사용할 수 없습니다.CREATE OR REPLACE <오브젝트> 문은 원자성입니다. 즉, 오브젝트가 바뀔 때 단일 트랜잭션으로 이전 오브젝트가 삭제되고 새 오브젝트가 생성됩니다.
예¶
5개 이상의 행 그룹을 반환하는 쿼리가 필요한 집계 정책을 만듭니다.
CREATE AGGREGATION POLICY my_policy AS () RETURNS AGGREGATION_CONSTRAINT -> AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5);
admin
역할을 가진 사용자가 집계되지 않은 결과를 반환하도록 허용하는 동시에 다른 모든 쿼리에서는 5개 이상의 행 그룹을 반환하도록 요구하는 집계 정책을 만듭니다.
CREATE AGGREGATION POLICY my_policy AS () RETURNS AGGREGATION_CONSTRAINT -> CASE WHEN CURRENT_ROLE() = 'ADMIN' THEN NO_AGGREGATION_CONSTRAINT() ELSE AGGREGATION_CONSTRAINT(MIN_GROUP_SIZE => 5) END;