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 to connect to an existing dbt project. Deploying adds a new version to the existing dbt project object (equivalent to 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.

    • Under Select or Create dbt project, select 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: Updates the dbt project object with the current workspace version of the project by using ALTER. This increments the version of the dbt project object by one. For more information, see Versões de 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
  • Deploy a project named jaffle_shop from a specified directory using a custom profiles directory, a specific dbt version, and enabling external access integrations:

    snow dbt deploy jaffle_shop --source /path/to/dbt/directory
    --profiles-dir ~/.dbt/
    --default-target prod
    --dbt-version 1.10.15
    --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'

    The version specifier is required and can be last (as shown in the previous example), first, or the specifier for any existing version in the form version$<num>. For more information, see Versões de 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.

    The version specifier is required and can be last, first, live, or the specifier for any existing version in the form version$<num>. For more information, see Versões de objetos e arquivos de projeto dbt.