EXECUTE DCM PROJECT

:doc:`DCM 프로젝트 </user-guide/dcm-projects/dcm-projects-overview>`에서 다음 작업 중 하나를 실행합니다.

  • :code:` EXECUTE DCM PROJECT <name> PLAN`을 수행하여 DCM project 의 테스트 실행을 통해 배포 중에 대상에 적용되는 변경 사항을 분석하지만, 변경 사항을 적용하지는 않습니다.

  • :code:`EXECUTE DCM PROJECT <name> DEPLOY`는 프로젝트의 정의 파일에 정의된 변경 사항을 계정에 배포합니다.

  • :code:`EXECUTE DCM PROJECT <name> REFRESH ALL`은 DCM project 에서 관리하는 동적 테이블을 새로 고칩니다.

  • :code:`EXECUTE DCM PROJECT <name> TEST ALL`은 DCM project 에서 관리하는 연결된 데이터 메트릭 함수의 모든 기대치를 테스트합니다.

  • :code:`EXECUTE DCM PROJECT <name> PREVIEW`는 지정된 테이블, 뷰 또는 동적 테이블의 소스 경로에 지정된 현재 정의의 데이터 샘플을 반환합니다.

참고 항목:

CREATE DCM PROJECT, ALTER DCM PROJECT, DESCRIBE DCM PROJECT, DROP DCM PROJECT, SHOW DCM PROJECTS, SHOW DEPLOYMENTS IN DCM PROJECT

구문

EXECUTE DCM PROJECT <name>
  PLAN
  [ USING [ CONFIGURATION <config_name> ] [ (<expr>, [, <expr>, ...]) ] ]
  FROM '<source-files_path>'

EXECUTE DCM PROJECT <name>
  DEPLOY [ AS '<deployment_name_alias>' ]
  [ USING [ CONFIGURATION <name> ] [ (<expr>, [, <expr>, ...]) ] ]
  FROM '<source-files_path>'

EXECUTE DCM PROJECT <name>
  REFRESH ALL

EXECUTE DCM PROJECT <name>
  TEST ALL

EXECUTE DCM PROJECT <name>
  PREVIEW <fully_qualified_table_object_name>
  USING CONFIGURATION <config_name>
  FROM '<source_files_path>'

필수 매개 변수

name

실행할 DCM 프로젝트의 식별자를 지정합니다.

식별자에 공백이나 특수 문자가 포함된 경우 전체 문자열을 큰따옴표로 묶어야 합니다. 큰따옴표로 묶인 식별자도 대/소문자를 구분합니다.

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

PLAN

Snowflake에 DCM project 의 테스트 실행을 수행하도록 지시합니다. 테스트 실행의 경우 Snowflake는 배포 중에 대상에 적용되는 변경 사항을 분석하지만, 변경 사항을 적용하지는 않습니다.

DEPLOY [ AS 'deployment_name_alias' ]

프로젝트의 정의 파일에 정의된 변경 사항을 계정에 배포하며, 선택적으로 배포의 별칭을 지정합니다.

FROM 'source_files_path'

DCM project 의 소스 파일이 포함된 디렉터리를 지정합니다. 디렉터리에는 매니페스트 파일과 /sources/definitions/ 에 있는 하나 이상의 정의 파일이 포함되어야 합니다. 매니페스트 파일은 구성이 지정된 경우 템플릿 값을 제공합니다.

REFRESH ALL

현재 DCM project 에서 관리하는 모든 동적 테이블을 새로 고칩니다.

TEST ALL

현재 DCM project 에서 관리하는 테이블, 동적 테이블 또는 뷰에 연결된 모든 데이터 품질 기대치를 테스트합니다.

PREVIEW fully_qualified_table_object_name

배포된 상태와 관계없이 지정된 테이블, 뷰 또는 동적 테이블의 소스 경로에 지정된 현재 정의의 데이터 샘플을 반환합니다.

선택적 매개 변수

USING CONFIGURATION config_name

사용할 구성을 지정합니다. 이를 통해 다른 프로젝트 정의 파일을 사용하지 않고도 개발, 스테이징 또는 프로덕션과 같은 다양한 환경에 맞게 배포를 사용자 지정할 수 있습니다.

구성 이름이 모두 대문자가 아닌 경우 큰따옴표로 묶습니다.

USING ( expr [, expr , ... ] )

선택적으로 템플릿 변수 값을 지정합니다. 이 옵션을 사용하여 이 특정 변수에 대한 모든 기본값 또는 구성 값을 재정의합니다. 단일 식은 <variable_name> => <variable_value> 형식이어야 합니다. 목록의 경우 <variable_name> => [<value1>, <value2>, ...] 형식을 사용합니다. 예: wh_size => 'MEDIUM' 또는 teams => ['TEAM_A', 'TEAM_B'].

이를 통해 다른 프로젝트 정의 파일을 사용하지 않고도 개발, 스테이징 또는 프로덕션과 같은 다양한 환경에 맞게 배포를 사용자 지정할 수 있습니다.

액세스 제어 요구 사항

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

권한

오브젝트

참고

OWNERSHIP

DCM 프로젝트

OWNERSHIP is a special privilege on an object that is automatically granted to the role that created the object, but can also be transferred using the GRANT OWNERSHIP command to a different role by the owning role (or any role with the MANAGE GRANTS privilege).

스키마의 오브젝트에 대한 작업을 수행하려면 상위 데이터베이스에 대한 하나 이상의 권한과 상위 스키마에 대한 하나 이상의 권한이 필요합니다.

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

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

출력

DCM project 가 실행된 후 이 명령은 변형에 따라 다음 출력을 반환합니다.

  • PLAN 및 DEPLOY: 변경 로그가 있는 JSON 오브젝트를 포함하는 단일 행

  • PREVIEW: 결과 세트

  • REFRESH ALL: 전체 응답이 포함된 JSON 오브젝트를 포함하는 단일 행

  • TEST ALL: 전체 응답이 포함된 JSON 오브젝트를 포함하는 단일 행

사용법 노트

EXECUTE DCM PROJECT PLAN으로 DCM project 를 실행하는 경우 명령의 출력은 실제 배포의 경우와 동일합니다. 차이점은 영향을 받는 계정에 대한 변경 사항이 적용되지 않는다는 점입니다. 이 기능을 사용하면 렌더링된 정의 파일에 유효한 구문이 있는지 여부, 계정에 적용되는 변경 사항, 프로젝트 소유자 역할에 이러한 변경 사항을 적용하는 데 필요한 권한이 있는지 여부를 확인할 수 있습니다.

의도하지 않은 변경을 방지하고 오류를 포착하려면 DCM project 를 배포하기 전에 항상 EXECUTE DCM PROJECT PLAN을 실행합니다.

템플릿 변수에 대한 지원

템플릿 변수를 사용하면 DCM project 실행 중에 매개 변수화된 정의 파일의 내용을 동적으로 선택할 수 있습니다. 다음과 같은 방법으로 템플릿 변수를 사용할 수 있습니다.

예제는 :ref:`템플릿 변수 예제 <label-dcm_projects_template_variable_execute_examples>`를 참조하세요.

기본 예제

PLAN 모드에서 DCM project 를 실행하여 프로젝트에 대한 변경 사항을 적용하지 않고 유효성을 검사합니다.

EXECUTE DCM PROJECT my_project
  PLAN
  FROM '@my_database.my_schema.my_stage/my_project';

변경 사항을 적용하기 위해 DEPLOY 모드에서 DCM 프로젝트를 실행하여 배포 별칭 및 PROD라는 구성을 지정합니다.

EXECUTE DCM PROJECT my_project
  DEPLOY AS "my_update"
  USING CONFIGURATION PROD
  FROM '@my_database.my_schema.my_stage/my_project';

템플릿 변수 예제

다음 예제에서는 EXECUTE DCM PROJECT 문에서 템플릿 변수의 값을 지정하는 방법을 보여줍니다.

DCM 프로젝트의 매니페스트 파일에 정의된 템플릿 변수 재정의

  1. 매니페스트 파일에서 ``desc``라는 템플릿 변수를 정의합니다.

    manifest_version: 2
    type: DCM_PROJECT
    default_target: DCM_DEV
    targets:
      DCM_DEV:
        desc: "created by hello world project"
    
  2. 템플릿 변수를 사용하는 정의 파일을 생성합니다.

    DEFINE DATABASE NEW_DB;
    DEFINE TABLE NEW_DB.PUBLIC.TBL (ID INT) COMMENT = '{{desc}}';
    
  3. DEPLOY 모드에서 EXECUTE DCM PROJECT 명령을 호출하고 desc 변수의 값을 지정하여 매니페스트에서 기본값을 재정의합니다.

    EXECUTE DCM PROJECT MY_PROJECT DEPLOY
      USING CONFIGURATION FIRST_CONFIG (desc => 'This object is mine')
      FROM '/my/project/source';
    

매니페스트 파일에 정의되지 않은 템플릿 변수의 값 제공

  1. 원하는 명령으로 정의 파일을 생성합니다.

    DEFINE DATABASE NEW_DB;
    DEFINE TABLE NEW_DB.PUBLIC.TBL (ID INT) COMMENT = '{{desc_new}}';
    
  2. EXECUTE DCM PROJECT 명령을 호출하고 desc_new 변수에 대한 값을 지정합니다.

    EXECUTE DCM PROJECT MY_PROJECT (desc_new => 'This object is mine');