Implantação de objetos de projeto dbt

In dbt Projects on Snowflake, deploying a dbt project object means copying your dbt project code into Snowflake to create the object or update it with a new version. You do this with Snowsight, CREATE DBT PROJECT or ALTER DBT PROJECT SQL commands, or the snow dbt deploy command in the Snowflake CLI.

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

Deploying a dbt project object in Snowsight takes the dbt code in your workspace and creates a new or updates an existing dbt project object.

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.

    • Optionally, enter a default target to choose which profile will be used for compilation and subsequent runs (for example, prod). The target of a dbt project object execution can still be overridden with --target in 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 = ();
    
    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 Versions for dbt project objects and files.

    • 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: Provides options for you to create a task that runs the dbt project object on a schedule. For more information, see Schedule execution of dbt project objects on Snowflake.

    • 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. Optionally, confirm your dbt project object exists by running the SHOW DBT PROJECTS command in a worksheet, for example:

    SHOW DBT PROJECTS IN DATABASE mydb;
    

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

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

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
    

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
    
  • 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
    
  • 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
    
  • Deploy a project named jaffle_shop and set a specific version for the dbt project object:

    snow dbt deploy jaffle_shop --dbt-version '1.10.15'
    

Locais dos arquivos de origem

The dbt project object source files can be in any one of the following locations:

  • 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 Versions for dbt project objects and files.

  • 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 Versions for dbt project objects and files.