Implantação de objetos de projeto dbt

Em dbt Projects on Snowflake, a implantação de um objeto de projeto dbt significa copiar o código do projeto dbt no Snowflake para criar ou atualizar o objeto com uma nova versão. Faça isso com o Snowsight ou os comandos CREATE DBT PROJECT ou ALTER DBT PROJECT SQL, ou com o comando snow dbt deploy na Snowflake CLI.

Implantação de objeto de projeto dbt usando o Snowsight

A implantação de um objeto de projeto dbt no Snowsight usa o código dbt em seu espaço de trabalho e cria um novo ou atualiza um projeto dbt existente.

Para implantar um objeto de projeto dbt no Snowsight, execute o comando dbt deps e siga estas etapas:

  1. Faça login no Snowsight.

  2. No menu de navegação, selecione Projects » Workspaces.

  3. No menu Workspaces, selecione o espaço de trabalho com seu projeto dbt.

  4. Confirme se todos os arquivos dbt estão presentes.

    Para verificar se tudo está funcionando, execute o comando dbt compile, dbt run ou dbt build da seguinte maneira:

    1. Abaixo do editor do espaço de trabalho, abra a guia Output para que você possa ver o stdout depois de executar os comandos do dbt no espaço de trabalho.

    2. Na barra de menus acima do editor do espaço de trabalho, confirme se o Project e o Profile corretos estão selecionados.

    3. Na lista de comandos, selecione dbt compile, dbt run ou dbt build e clique no botão de execução. Esta etapa analisa o projeto.

  5. No canto superior direito do espaço de trabalho, selecione Connect e escolha uma das seguintes opções:

    • Deploy dbt project para conectar um novo projeto dbt. Na primeira implantação, essa opção cria um objeto de projeto dbt no nível do esquema.

    • :Existing dbt deployment para conexão com um projeto dbt existente. A implantação adiciona uma nova versão ao objeto de projeto dbt existente (equivalente a ALTER DBT PROJECT ADD VERSION FROM 'snow://workspace/…/versions/last').

  6. Na janela pop-up Deploy dbt project, selecione o seguinte:

    • Em Select location, selecione o banco de dados e o esquema.

    • Em Select or Create dbt projecr, selecione Create dbt project.

    • Insira um nome e uma descrição.

    • Se preferir, insira um destino padrão para escolher o perfil que será usado para compilação e execuções subsequentes (por exemplo, prod). Ainda é possível substituir o destino da execução de um projeto dbt por --target em ARGS.

    • Se preferir, selecione Run dbt deps e escolha a integração de acesso externo para executar dbt deps automaticamente durante a implantação.

  7. Selecione Deploy.

    A guia Output exibe o comando que é executado no Snowflake, muito semelhante ao seguinte exemplo:

    CREATE DBT PROJECT mydb.my_dbt_projects_schema.my_dbt_project
      FROM 'snow://workspace/mydb.my_dbt_projects_schema.sales_model/versions/version$2'
      EXTERNAL_ACCESS_INTEGRATIONS = ();
    
    Copy
    my_dbt_project successfully created.
    

    O menu Connect agora exibe o nome do objeto de projeto dbt que você criou com as seguintes opções:

    • Redeploy dbt project: atualiza o objeto de projeto dbt com a versão atual do espaço de trabalho do projeto usando ALTER. Isso incrementa a versão do objeto de projeto dbt em um. Para obter mais informações, consulte Controle de versão para objetos e arquivos de projeto dbt.

    • Disconnect: desconecta o espaço de trabalho do objeto de projeto dbt, mas não exclui o objeto.

    • Edit project: atualiza o comentário, o destino padrão e a integração de acesso externo no objeto de projeto dbt.

    • View project: abre o objeto de projeto dbt no explorador de objetos, em que é possível visualizar o comando CREATE DBT PROJECT para o objeto de projeto dbt e o histórico de execuções do projeto.

    • Create schedule: mostra opções para você criar uma tarefa que executa o objeto de projeto dbt de acordo com um cronograma. Para obter mais informações, consulte Criação de tarefa para agendar a execução do projeto dbt.

    • View schedules: abre uma lista de cronogramas (tarefas) que executam o objeto de projeto dbt, com a opção de visualizar os detalhes das tarefas no explorador de objetos.

  8. Para confirmar se o projeto dbt existe, execute o comando SHOW DBT PROJECTS em uma planilha, por exemplo:

    SHOW DBT PROJECTS IN DATABASE mydb;
    
    Copy

Implantação de objeto de projeto dbt usando os comandos SQL

Os comandos CREATE DBT PROJECT e ALTER DBT PROJECT copiam os arquivos especificados na cláusula FROM da instrução para criar e adicionar novas versões a um objeto de projeto dbt, respectivamente.

O comando CREATE DBT PROJECT cria um novo objeto com uma única versão inicial (por exemplo, VERSION$1), conforme mostrado abaixo.

CREATE DBT PROJECT mydb.my_dbt_projects_schema.my_dbt_project
  FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main'
  DEFAULT_TARGET = 'prod'
  EXTERNAL_ACCESS_INTEGRATIONS = my_dbt_ext_access
  COMMENT = 'Generates sales data models.';
Copy

O comando ALTER DBT PROJECT cria uma nova versão dentro do objeto existente com um número de versão incrementado exclusivo (por exemplo, VERSION$2, VERSION$3 etc.).

-- Update the Git repository object to fetch the latest code
ALTER GIT REPOSITORY sales_db.integrations_schema.sales_dbt_git_stage FETCH;

-- Add a new version to the dbt project object based on the updated Git repository object
ALTER DBT PROJECT mydb.my_dbt_projects_schema.my_dbt_project
  ADD VERSION
  FROM '@sales_db.integrations_schema.sales_dbt_git_stage/branches/main/sales_dbt_project';
Copy

Implantação de objeto de projeto dbt usando o Snowflake CLI

O comando snow dbt deploy carrega arquivos locais para uma área de preparação temporária e cria um novo objeto de projeto dbt, atualiza-o criando uma nova versão ou recria-o por completo. Um projeto dbt válido deve conter dois arquivos:

  • dbt_project.yml: um arquivo de configuração dbt padrão que especifica o perfil que deve ser usado.

  • profiles.yml: uma definição de perfil de conexão dbt referenciada em dbt_project.yml. O profiles.yaml deve definir o banco de dados, a função, o esquema e o tipo.

    • Por padrão, dbt Projects on Snowflake usa o esquema de destino (target.schema) especificado do seu ambiente ou perfil dbt. Ao contrário do comportamento do dbt Core, o esquema de destino especificado no arquivo profiles.yml deve existir antes de você criar o projeto dbt para que ele seja compilado ou executado com sucesso.

    <profile_name>:
    target: dev
    outputs:
      dev:
        database: <database_name>
        role: <role_name>
        schema: <schema_name>
        type: snowflake
    
    Copy

Os exemplos a seguir ilustram como usar o comando snow dbt deploy:

  • Implante um objeto de projeto dbt chamado jaffle_shop:

    snow dbt deploy jaffle_shop
    
    Copy
  • Implante um projeto chamado jaffle_shop de um diretório especificado e crie ou adicione uma nova versão, dependendo se o objeto de projeto dbt já existe ou não:

    snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --force
    
    Copy
  • Implante um projeto chamado jaffle_shop de um diretório especificado usando um diretório de perfis personalizados e habilitando as integrações de acesso externo:

    snow dbt deploy jaffle_shop --source /path/to/dbt/directory
    --profiles-dir ~/.dbt/ --default-target dev
    --external-access-integration dbthub-integration
    --external-access-integration github-integration
    --force
    
    Copy

Locais dos arquivos de origem

Os arquivos de origem do projeto dbt podem estar em qualquer um dos seguintes locais:

  • Uma área de preparação de repositórios Git, por exemplo:

    '@my_db.my_schema.my_git_repository_stage/branches/my_branch/path/to/dbt_project_or_projects_parent'

    Para obter mais informações sobre a criação de um objeto de repositório Git no Snowflake que conecta um repositório Git a um espaço de trabalho para dbt Projects on Snowflake, consulte Criação de espaço de trabalho conectado ao repositório Git. Para obter mais informações sobre como criar e gerenciar um objeto e uma área de preparação do repositório Git sem usar um espaço de trabalho, consulte Uso de um repositório Git no Snowflake e CREATE GIT REPOSITORY.

  • Uma área de preparação de projetos dbt existente, por exemplo:

    'snow://dbt/my_db.my_schema.my_existing_dbt_project_object/versions/last'

    O especificador de versão é obrigatório e pode ser last (como mostrado no exemplo anterior), first, ou o especificador de qualquer versão existente no formato version$<num>. Para obter mais informações, consulte Controle de versão para objetos e arquivos de projeto dbt.

  • Uma área de preparação interna nomeada, por exemplo:

    '@my_db.my_schema.my_internal_named_stage/path/to/dbt_projects_or_projects_parent'

    Não há suporte para áreas de preparação internas de usuários e áreas de preparação de tabelas.

  • Um espaço de trabalho para dbt no Snowflake, por exemplo:

    'snow://workspace/user$.public."my_workspace_name"/versions/live/path/to/dbt_projects_or_projects_parent'

    Recomendamos colocar o nome do espaço de trabalho entre aspas duplas porque os nomes do espaço de trabalho diferenciam maiúsculas de minúsculas e podem conter caracteres especiais.

    O especificador de versão é obrigatório e pode ser last, first, live ou o especificador para qualquer versão existente no formato version$<num>. Para obter mais informações, consulte Controle de versão para objetos e arquivos de projeto dbt.