Gerenciar dbt Projects on Snowflake usando Snowflake CLI

Nota

Os recursos de dbt Projects on Snowflake no Snowflake CLI estão disponíveis apenas na versão 3.13.0 ou posterior.

You can use Snowflake CLI to manage dbt project objects with the following operations:

Implantação de um objeto de projeto dbt

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 a ser utilizado.

  • profiles.yml: Uma definição de perfil de conexão dbt referenciada em dbt_project.yml. 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 em seu perfil ou ambiente 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'
    

Listar todos os objetos de projeto dbt disponíveis

O comando snow dbt list lista todos os objetos de projeto dbt disponíveis no Snowflake.

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

  • Listar todos os objetos de projeto dbt disponíveis:

    snow dbt list
    
  • Liste objetos de projeto dbt no banco de dados de ` produtos cujos nomes começam com :codenowrap:`JAFFLE:

    snow dbt list --like JAFFLE% --in database product
    

Execução de um comando de objeto de projeto dbt

O comando snow dbt execute executa um dos seguintes comandos dbt em um objeto de projeto dbt do Snowflake:

Para obter mais informações sobre o uso dos comandos dbt, consulte a Referência de comandos dbt.

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

  • Execute o comando dbt :codenowrap:.`test`:

    snow dbt execute jaffle_shop test
    
  • Execute o comando dbt :codenowrap:.`run` de forma assíncrona:

    snow dbt execute --run-async jaffle_shop run --select @source:snowplow,tag:nightly models/export
    
  • Execute the run dbt command with a specific dbt version:

    snow dbt execute jaffle_shop run --dbt-version '1.9.4'
    

Descrição de um objeto de projeto dbt

O comando snow dbt describe descreve um objeto de projeto dbt no Snowflake.

O exemplo a seguir descreve o objeto de projeto dbt chamado my_dbt_project no Snowflake:

snow dbt describe my_dbt_project

Descarte de um objeto de projeto dbt

O comando snow dbt drop exclui um objeto de projeto dbt no Snowflake.

O exemplo a seguir exclui o objeto de projeto dbt chamado my_dbt_project no Snowflake:

snow dbt drop my_dbt_project

Use os comandos snow dbt em um fluxo de trabalho CI/CD

Nota

Ao criar fluxos de trabalho de CI/CD, você só precisa do seu servidor git, como Github e Snowflake CLI. Um objeto de repositório Git não é necessário.

Você pode executar comandos dbt com Snowflake CLI para construir pipelines CI/CD. Esses pipelines são comumente usados para testar novo código, como novas solicitações de pull, ou para atualizar aplicativos de produção sempre que algo é fundido na ramificação principal.

Para criar um fluxo de trabalho CI/CD com comandos dbt snow, siga estes passos:

  1. Prepare seu projeto dbt:

    1. Baixe seu projeto dbt ou inicie um novo.

      • Certifique-se de que o diretório principal do projeto contenha os arquivos dbt_project.yml e profiles.yml.

      • Verifique se o nome do perfil referenciado em dbt_project.yml é definido em profiles.yml.

        Nota

        Os objetos dbt project do Snowflake não precisam de senhas, portanto, se profiles.yml contiver qualquer uma, a implantação será interrompida até que elas sejam removidas.

  2. Configuração de ação de CLI GitHub do Snowflake

    Siga as orientações para configuração de Ação do GitHub para a CLI do Snowflake e verificação de sua conexão para o Snowflake.

  3. Defina seu fluxo de trabalho.

    Determine quais comandos seu fluxo de trabalho precisa executar com base nas necessidades de sua organização. O exemplo a seguir ilustra um fluxo de trabalho CI que atualiza a versão do objeto de projeto dbt denominado product_pipeline com novos arquivos, executa as transformações e, finalmente, executa testes:

    - name: Execute Snowflake CLI command
      run: |
        snow dbt deploy product_pipeline
        snow dbt execute product_pipeline run
        snow dbt execute product_pipeline test