CREATE PROJECTION POLICY

현재/지정된 스키마에서 새 프로젝션 정책 을 생성하거나 기존 프로젝션 정책을 대체합니다.

프로젝션 정책을 생성한 후 ALTER TABLE … ALTER COLUMN 명령을 사용하여 테이블 열에 프로젝션 정책을 적용하거나 ALTER VIEW 명령을 사용하여 뷰 열에 프로젝션 정책을 적용합니다.

참고 항목:

프로젝션 정책 DDL 참조

이 항목의 내용:

구문

CREATE [ OR REPLACE ] PROJECTION POLICY [ IF NOT EXISTS ] <name>
  AS () RETURNS PROJECTION_CONSTRAINT -> <body>
  [ COMMENT = '<string_literal>' ]
Copy

매개 변수

name

프로젝션 정책의 식별자로, 스키마에 고유한 식별자여야 합니다.

식별자 값은 알파벳 문자로 시작해야 하며 전체 식별자 문자열을 큰따옴표(예: "My object")로 묶지 않는 한 공백이나 특수 문자를 포함할 수 없습니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

자세한 내용은 식별자 요구 사항 섹션을 참조하십시오.

body

열을 프로젝션할지 여부를 결정하는 SQL 식입니다.

식에는 CASE 및 기타 논리 문을 포함할 수 있지만 PROJECTION_CONSTRAINT 함수를 호출해야 합니다.

PROJECTION_CONSTRAINT(ALLOW=>{TRUE|FALSE}, ENFORCEMENT=><enforcement_style>)
Copy
  • ALLOW (부울) - TRUE 를 선택하면 열을 투영할 수 있습니다. FALSE 를 선택하면 ENFORCEMENT 로 지정된 동작으로 열이 투영되지 않도록 합니다. FALSE 는 최종 결과 테이블에 표시되는 열에만 영향을 줍니다.

  • ENFORCEMENT (문자열, 선택 사항) - ALLOW = FALSE 인 경우 쿼리에 보호된 열이 포함된 경우 수행해야 할 작업을 지정합니다. 지원되는 값:

    • FAIL - 보호된 열이 가장 바깥쪽 쿼리에 포함되어 있으면 쿼리가 실패합니다.

    • NULLIFY - 보호된 열의 모든 행은 NULL 값을 반환합니다.

    기본값: FAIL

COMMENT = 'string_literal'

프로젝션 정책에 대한 설명을 추가하거나 기존 설명을 덮어씁니다.

액세스 제어 요구 사항

이 작업을 실행하는 데 사용되는 역할 에는 최소한 다음 권한 이 있어야 합니다.

권한

오브젝트

참고

CREATE PROJECTION POLICY

스키마

Operating on an object in a schema requires at least one privilege on the parent database and at least one privilege on the parent schema.

지정된 권한 세트로 사용자 지정 역할을 만드는 방법에 대한 지침은 사용자 지정 역할 만들기 섹션을 참조하십시오.

보안 오브젝트 에 대해 SQL 작업을 수행하기 위한 역할과 권한 부여에 대한 일반적인 정보는 액세스 제어의 개요 섹션을 참조하십시오.

프로젝션 정책 DDL 및 권한에 대한 추가적인 세부 사항은 권한과 명령 섹션을 참조하십시오.

사용법 노트

  • 기존 프로젝션 정책을 업데이트하고 정책의 현재 정의를 확인해야 할 경우 DESCRIBE PROJECTION POLICY 명령 또는 GET_DDL 함수를 실행하십시오.

  • OR REPLACE 및 IF NOT EXISTS 절은 상호 배타적입니다. 두 절을 같은 문에 함께 사용할 수 없습니다.

  • CREATE OR REPLACE <오브젝트> 문은 원자성입니다. 즉, 오브젝트가 바뀔 때 단일 트랜잭션으로 이전 오브젝트가 삭제되고 새 오브젝트가 생성됩니다.

  • 메타데이터 관련:

    주의

    고객은 Snowflake 서비스를 사용할 때 개인 데이터(사용자 오브젝트 제외), 민감한 데이터, 수출 통제 대상 데이터 또는 기타 규제 데이터가 메타데이터로 입력되지 않도록 해야 합니다. 자세한 내용은 Snowflake의 메타데이터 필드 섹션을 참조하십시오.

열 프로젝션을 허용하지 않습니다.

CREATE OR REPLACE PROJECTION POLICY do_not_project AS ()
  RETURNS PROJECTION_CONSTRAINT ->
  PROJECTION_CONSTRAINT(ALLOW => false);
Copy

analyst 사용자 지정 역할에 대한 열을 투영하고, 그렇지 않으면 쿼리를 허용하되 모든 보호된 열 값을 NULL 로 바꿉니다.

CREATE OR REPLACE PROJECTION POLICY project_analyst_only AS ()
  RETURNS PROJECTION_CONSTRAINT ->
    CASE
      WHEN CURRENT_ROLE() = 'ANALYST'
        THEN PROJECTION_CONSTRAINT(ALLOW => true)
      ELSE PROJECTION_CONSTRAINT(ALLOW => false, ENFORCEMENT => 'NULLIFY')
    END;
Copy