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
Ative os comandos em seus arquivos de configuração
config.toml
:[cli.features] enable_dbt = true
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:
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 emdbt_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
Uso¶
snow dbt deploy [--source <path>] [--profiles-dir <path>] [--force] NAME
onde:
NAME
é o nome do objeto de projeto dbt.[--source path>
é o caminho para o arquivodbt_project.yml
do projeto. O padrão é o diretório de trabalho atual.[--profiles-dir path>
é o caminho do arquivoprofiles.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
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/
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>]
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
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 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]
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 progressoQualquer opção Snowflake CLI global, como
--help
ou--connection
[dbt-command-and-options]
é o nome de um comando dbt e suas opções, comoexecute --target dev
.
Exemplos¶
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
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:
Prepare seu projeto dbt:
Baixe seu projeto dbt ou inicie um novo.
Certifique-se de que o diretório principal do projeto contenha os arquivos
dbt_project.yml
eprofiles.yml
.Verifique se o nome do perfil referenciado em
dbt_project.yml
é definido emprofiles.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.
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.
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