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> )
여기서
integer_expression
은 정책의 최소 그룹 크기 로 확인됩니다.함수에 대한 인자로
1
과0
을 전달하는 것은 차이가 있습니다. 둘 다 결과를 집계해야 합니다.또한
1
을 전달하려면 각 집계 그룹에 집계 제한 테이블의 레코드가 하나 이상 포함되어 있어야 합니다. 따라서 외부 조인의 경우 집계 제한 테이블의 레코드가 하나 이상 보호되지 않는 테이블의 레코드와 일치해야 합니다.0
을 전달하면 쿼리가 다른 테이블의 레코드로만 구성된 그룹을 반환할 수 있습니다. 따라서 집계 제한 테이블과 보호되지 않는 테이블 사이에서 외부 조인의 경우 그룹은 집계 제한 테이블의 어떤 레코드와도 일치하지 않는 보호되지 않는 테이블의 레코드로 구성될 수 있습니다.
정책 본문은 사용자 정의 함수, 테이블 또는 뷰를 참조할 수 없습니다.
COMMENT = 'string_literal'
집계 정책에 대한 설명을 추가하거나 기존 설명을 덮어씁니다.
액세스 제어 요구 사항¶
이 SQL 명령을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.
권한 |
오브젝트 |
참고 |
---|---|---|
CREATE AGGREGATION POLICY |
스키마 |
스키마의 모든 오브젝트에 대해 작업하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한도 필요합니다.
지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.
보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.
집계 정책 DDL 및 권한에 대한 추가적인 세부 사항은 권한과 명령 섹션을 참조하십시오.
사용법 노트¶
기존 집계 정책을 업데이트하고 정책의 현재 본문을 확인해야 할 경우 DESCRIBE AGGREGATION POLICY 명령 또는 GET_DDL 함수를 실행하십시오.
메타데이터 관련:
주의
고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.
예¶
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;