EXECUTE DCM PROJECT

Executa uma das seguintes ações em um projeto DCM:

  • EXECUTE DCM PROJECT <name> PLAN efetua dry run de um DCM project para analisar as alterações que serão aplicadas ao destino durante uma implantação, mas não aplica nenhuma alteração.

  • EXECUTE DCM PROJECT <name> DEPLOY implanta na conta as alterações definidas nos arquivos de definição do projeto.

  • EXECUTE DCM PROJECT <name> REFRESH ALL atualiza tabelas dinâmicas gerenciadas pelo DCM project.

  • EXECUTE DCM PROJECT <name> TEST ALL testa todas as expectativas de funções de métrica de dados anexadas e gerenciadas pelo DCM project.

  • EXECUTE DCM PROJECT <name> PREVIEW retorna uma amostra de dados das definições atuais especificadas no caminho de origem para a tabela, exibição ou tabela dinâmica especificada.

Consulte também:

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

Sintaxe

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>'

Parâmetros obrigatórios

name

Especifica o identificador do projeto DCM a ser executado.

Se o identificador contiver espaços ou caracteres especiais, toda a cadeia de caracteres deverá ser delimitada por aspas duplas. Os identificadores delimitados por aspas duplas também diferenciam letras maiúsculas de minúsculas.

Para obter mais informações, consulte Requisitos para identificadores.

PLAN

Instrui o Snowflake a efetuar dry run do DCM project. Para dry run, o Snowflake analisa as alterações que serão aplicadas ao destino durante uma implantação, mas não aplica nenhuma alteração.

DEPLOY [ AS 'deployment_name_alias' ]

Implanta na conta as alterações definidas nos arquivos de definição do projeto. Opcionalmente, especifica um alias para a implantação.

FROM 'source_files_path'

Especifica o diretório que contém os arquivos de origem para o DCM project. O diretório deve conter um arquivo de manifesto e pelo menos um arquivo de definição em /sources/definitions/. O arquivo de manifesto fornece os valores de modelagem, caso uma configuração tenha sido especificada.

REFRESH ALL

Atualiza todas as tabelas dinâmicas que são gerenciadas pelo DCM project no momento.

TEST ALL

Testa todas as expectativas de qualidade de dados anexadas a tabelas, tabelas dinâmicas ou exibições que são gerenciadas pelo DCM project no momento.

PREVIEW fully_qualified_table_object_name

Retorna uma amostra de dados das definições atuais especificadas no caminho de origem para a tabela, exibição ou tabela dinâmica especificada, seja qual for o estado implantado.

Parâmetros opcionais

USING CONFIGURATION config_name

Especifica a configuração a ser usada. Isso permite que você personalize as implantações de acordo com os diferentes ambientes, como desenvolvimento, preparação ou produção, sem usar arquivos de definição de projeto distintos.

Se o nome da configuração não estiver em letras maiúsculas, coloque-o entre aspas duplas.

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

Opcionalmente, especifica os valores das variáveis de modelo. O uso dessa opção substitui os valores padrão ou de configuração para a variável específica. A expressão única deve ter o seguinte formato: <variable_name> => <variable_value>. Para listas, use o seguinte formato: <variable_name> => [<value1>, <value2>, ...]. Por exemplo: wh_size => 'MEDIUM' ou teams => ['TEAM_A', 'TEAM_B'].

Isso permite que você personalize as implantações de acordo com os diferentes ambientes, como desenvolvimento, preparação ou produção, sem usar arquivos de definição de projeto distintos.

Requisitos de controle de acesso

A função usada para executar essa operação deve ter, no mínimo, os seguintes privilégios:

Privilégio

Objeto

Notas

OWNERSHIP

Projeto 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).

Operar em um objeto em um esquema requer pelo menos um privilégio no banco de dados pai e pelo menos um privilégio no esquema pai.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Saída

Após a execução de DCM project, esse comando retornará a seguinte saída dependendo da variação:

  • PLAN e DEPLOY: até 12,5, Azure: uma única linha contendo um objeto JSON com o log de alterações

  • PREVIEW: um conjunto de resultados

  • REFRESH ALL: uma única linha contendo um objeto JSON com a resposta completa.

  • TEST ALL: uma única linha contendo um objeto JSON com a resposta completa.

Notas de uso

Ao executar um DCM project com EXECUTE DCM PROJECT PLAN, a saída do comando é igual a da implantação real. A diferença é que nenhuma alteração na conta afetada é aplicada. Esse recurso permite verificar se os arquivos de definição renderizados têm uma sintaxe válida, quais alterações serão aplicadas à conta e se a função de proprietário do projeto tem os privilégios necessários para aplicar as alterações.

Para evitar alterações não intencionais e detectar erros, sempre execute EXECUTE DCM PROJECT PLAN antes de implantar um DCM project.

Suporte para variáveis de modelo

As variáveis de modelo permitem que você escolha dinamicamente o conteúdo dos arquivos de definições parametrizados durante a execução do DCM project. Você pode usar variáveis de modelo das seguintes maneiras:

Consulte a seção Exemplos de variáveis de modelo para ver os exemplos.

Exemplos

Exemplos básicos

Executar um DCM project no modo PLAN para validar alterações em um projeto sem aplicá-las:

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

Executar um projeto DCM no modo DEPLOY (para aplicar alterações) para especificar um alias de implantação e uma configuração chamada PROD:

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

Exemplos de variáveis de modelo

Os exemplos a seguir demonstram como você pode especificar o valor das variáveis de modelo em uma instrução EXECUTE DCM PROJECT.

Substituir a variável de modelo definida no arquivo de manifesto do projeto DCM

  1. Defina uma variável de modelo chamada desc no arquivo de manifesto:

    manifest_version: 2
    type: DCM_PROJECT
    default_target: DCM_DEV
    targets:
      DCM_DEV:
        desc: "created by hello world project"
    
  2. Crie um arquivo de definição que use a variável de modelo:

    DEFINE DATABASE NEW_DB;
    DEFINE TABLE NEW_DB.PUBLIC.TBL (ID INT) COMMENT = '{{desc}}';
    
  3. Chame o comando EXECUTE DCM PROJECT no modo DEPLOY e especifique um valor para a variável desc para substituir o valor padrão no manifesto:

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

Fornecer um valor para uma variável de modelo não definida no arquivo de manifesto

  1. Crie um arquivo de definição com os comandos desejados:

    DEFINE DATABASE NEW_DB;
    DEFINE TABLE NEW_DB.PUBLIC.TBL (ID INT) COMMENT = '{{desc_new}}';
    
  2. Chame o comando EXECUTE DCM PROJECT e especifique um valor para a variável desc_new:

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