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

스키마

스키마의 모든 오브젝트에 대해 작업을 수행하려면 상위 데이터베이스 및 스키마에 대한 USAGE 권한.

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

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

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

사용법 노트

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

  • OR REPLACEIF 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