Gerenciar dbt Projects on Snowflake usando Snowflake CLI

Instalar Snowflake CLI com recursos dbt Projects on Snowflake

Para instalar a versão de visualização pública de Snowflake CLI que contém os comandos snow dbt, você deve primeiro instalar o Snowflake CLI versão 3.9.0 ou posterior. Para obter mais informações, consulte Instalação do Snowflake CLI.

Ativar o recurso dbt Projects on Snowflake em Snowflake CLI

Durante a versão preliminar, é necessário habilitar os novos comandos snow dbt usando um dos seguintes métodos:

  • Defina a variável de ambiente SNOWFLAKE_CLI_FEATURES_ENABLE_DBT:

    export SNOWFLAKE_CLI_FEATURES_ENABLE_DBT=true
    
    Copy
  • Ative os comandos em seus arquivos de configuração config.toml:

    [cli.features]
    enable_dbt = true
    
    Copy
  • Para verificar se os comandos estão disponíveis, execute o comando :codenowrap:.`snow –help`:

     snow --help
    
    dbt should appear in the list of commands, as shown:
    
    Copy
    Usage: snow [OPTIONS] COMMAND [ARGS]...
    
    Snowflake CLI tool for developers [v3.9.0]
    
    ...
    
    ╭─ Commands ──────────────────────────────────────────
    │ app          Manages a Snowflake Native App        │
    │ connection   Manages connections to Snowflake.     │
    │ cortex       Provides access to Snowflake Cortex   │
    │ dbt          Manages dbt on Snowflake projects     │
    │ ...                                                │
    ╰─────────────────────────────────────────────────────
    

Gerenciamento de conexões

A CLI do Snowflake requer uma conexão funcional para interagir com o Snowflake. Para obter informações sobre como gerenciar conexões, consulte Gerenciando conexões Snowflake.

Comandos Snowflake CLI que oferecem suporte a projetos dbt

Snowflake CLI fornece os seguintes comandos para projetos dbt:

  • snow dbt deploy

  • snow dbt list

  • snow dbt execute

Como implantar um objeto de projeto dbt

O comando snow dbt deploy carrega arquivos locais para um estágio temporário e cria um novo objeto de projeto dbt, atualiza-o criando uma nova versão ou recria-o completamente. Um projeto dbt válido deve conter dois arquivos:

  • dbt_project.yml: Arquivo de configuração padrão do dbt, que deve especificar o perfil a ser usado.

  • 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 warehouse e o esquema. Você pode deixar os valores restantes vazios, como no exemplo a seguir:

    <profile_name>:
    outputs:
      dev:
        account: ''
        database: <database_name>
        role: <role_name>
        schema: <schema_name>
        type: snowflake
        user: ''
        warehouse: <warehouse_name>
    target: dev
    
    Copy

Uso

snow dbt deploy [--source <path>] [--profiles-dir <path>] [--force] NAME
Copy

onde:

  • NAME é o nome do objeto de projeto dbt.

  • [--source path> é o caminho para o arquivo dbt_project.yml do projeto. O padrão é o diretório de trabalho atual.

  • [--profiles-dir path> é o caminho do arquivo profiles.yml. Se não for especificado, o padrão é o caminho resolvido como --source.

  • [--force] Cria um novo objeto de projeto dbt ou atualiza e adiciona uma nova versão a uma existente.

Exemplos

  • Implante um objeto de projeto dbt chamado jaffle_shop:

    snow dbt deploy jaffle_shop
    
    Copy
  • Implemente um projeto chamado jaffle_shop de um diretório especificado e substituir o objeto de projeto dbt se ele já existir:

    snow dbt deploy jaffle_shop --force --source /path/to/dbt/directory --profiles-dir ~/.dbt/
    
    Copy

Listagem de todos os objetos de projeto dbt disponíveis

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

Uso

snow dbt list [--like <string>] [--in <string>]
Copy

onde:

  • [--like string] é um padrão de SQL LIKE para filtrar por nome de objeto.

  • [--in string] especifica o escopo deste comando.

Exemplos

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

    snow dbt list
    
    Copy
  • 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
    
    Copy

Execução de um comando dbt project object

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.

Uso

snow dbt execute [snowflake-cli-options] NAME [dbt-command-and-options]
Copy

onde:

  • NAME é o nome do objeto de projeto dbt.

  • [snowflake-cli-options] é uma lista de opções Snowflake CLI, incluindo o seguinte:

    • --run-async, que executa o comando dbt de forma assíncrona e retorna imediatamente uma consulta que você pode usar para acompanhar seu progresso

    • Qualquer opção Snowflake CLI global, como --help ou --connection

  • [dbt-command-and-options] é o nome de um comando dbt e suas opções, como execute --target dev.

Exemplos

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

    snow dbt execute jaffle_shop test
    
    Copy
  • 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
    
    Copy

Como usar os comandos dbt snow 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
    
    Copy