EXECUTE DCM PROJECT

:doc:`DCMプロジェクト</user-guide/dcm-projects/dcm-projects-overview>`に対して、次のアクションのいずれかを実行します。

  • :code:`EXECUTE DCM PROJECT <name> PLAN`は、|dcm-object|のドライランを実行してデプロイ中にターゲットに適用される変更を分析しますが、変更は適用しません。

  • :code:`EXECUTE DCM PROJECT <name> DEPLOY`は、プロジェクトの定義ファイルで定義された変更をアカウントにデプロイします。

  • :code:`EXECUTE DCM PROJECT <name> REFRESH ALL`は、|dcm-object|が管理する動的テーブルをリフレッシュします。

  • :code:`EXECUTE DCM PROJECT <name> TEST ALL`は、|dcm-object|によって管理される、アタッチされたデータメトリック関数からのすべての期待値をテストします。

  • :code:`EXECUTE DCM PROJECT <name> PREVIEW`は、指定されたテーブル、ビュー、または動的テーブルのソースパスで設定されている現在の定義のデータサンプルを返します。

こちらもご参照ください。

CREATE DCM PROJECTALTER DCM PROJECTDESCRIBE DCM PROJECTDROP DCM PROJECTSHOW DCM PROJECTSSHOW 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-object|のドライランを実行するよう指示します。ドライランの場合、Snowflakeはデプロイ中にターゲットに適用される変更を分析しますが、変更は適用しません。

DEPLOY [ AS 'deployment_name_alias' ]

プロジェクトの定義ファイルで定義された変更をアカウントにデプロイします。オプションでデプロイのエイリアスを指定することもできます。

FROM 'source_files_path'

|dcm-object|のソースファイルを含むディレクトリを指定します。ディレクトリには、マニフェストファイルと:file:`/sources/definitions/`内の少なくとも1つの定義ファイルが含まれている必要があります。マニフェストファイルは、構成が指定されている場合に、テンプレート化の値を提供します。

REFRESH ALL

|dcm-object|によって現在管理されているすべての動的テーブルをリフレッシュします。

TEST ALL

|dcm-object|によって現在管理されているテーブル、動的テーブル、またはビューにアタッチされた、すべてのデータ品質期待値をテストします。

PREVIEW fully_qualified_table_object_name

デプロイ済みの状態とは無関係に、指定されたテーブル、ビュー、または動的テーブルのソースパスに記述されている現在の定義のデータサンプルを返します。

オプションのパラメーター

USING CONFIGURATION config_name

使用する構成を指定します。 これにより、異なるプロジェクト定義ファイルを使用することなく、開発、ステージング、本番などの異なる環境のデプロイをカスタマイズできます。

構成名がすべて大文字でない場合は、二重引用符で囲みます。

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

オプションでテンプレート変数の値を指定します。このオプションを使用すると、この特定の変数のデフォルト値または構成値が上書きされます。単一式は次の形式である必要があります。<variable_name> => <variable_value>。リストの場合は、次の形式を使用します。<variable_name> => [<value1>, <value2>, ...]。例: wh_size => 'MEDIUM'、または:codenowrap: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).

スキーマ内のオブジェクトを操作するには、親データベースの少なくとも1つの権限と、親スキーマの少なくとも1つの権限が必要です。

指定された権限のセットを使用してカスタムロールを作成する手順については、 カスタムロールの作成 をご参照ください。

セキュリティ保護可能なオブジェクト に対して SQL アクションを実行するためのロールと権限付与に関する一般的な情報については、 アクセス制御の概要 をご参照ください。

出力

|dcm-object|の実行後、このコマンドはバリエーションに応じて次の出力を返します。

  • PLAN および DEPLOY:変更ログを持つJSONオブジェクトを含む単一行

  • PREVIEW:結果セット

  • REFRESH ALL:完全な応答を持つJSONオブジェクトを含む単一行。

  • TEST ALL:完全な応答を持つJSONオブジェクトを含む単一行。

使用上の注意

EXECUTE DCM PROJECT PLANを使用して|dcm-object|を実行する場合、コマンドの出力は実際のデプロイと同じになります。違いは、影響を受けるアカウントへの変更が適用されないことです。この機能により、レンダリングされた定義ファイルに有効な構文があるかどうか、アカウントにどのような変更が適用されるか、プロジェクトの所有者ロールにこれらの変更を適用するために必要な権限があるかどうかを確認できます。

意図しない変更を回避し、エラーを検出するために、|dcm-object|をデプロイする前に必ずEXECUTE DCM PROJECT PLANを実行してください。

テンプレート変数のサポート

テンプレート変数を使用すると、|dcm-object|の実行中にパラメーター化された定義ファイルの内容を動的に選択できます。テンプレート変数は、次の方法で使用できます。

例については、:ref:`テンプレート変数の例<label-dcm_projects_template_variable_execute_examples>`セクションを参照してください。

基本的な例

|dcm-object|をPLANモードで実行して、プロジェクトへの変更を適用せずに検証します。

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

DCMプロジェクトをDEPLOYモードで実行(変更を適用)して、デプロイエイリアスと、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. EXECUTE DCM PROJECTコマンドをDEPLOYモードで呼び出し、``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');