Gerenciar dbt Projects on Snowflake usando Snowflake CLI¶
Nota
The dbt Projects on Snowflake features in Snowflake CLI are available only in version 3.13.0 or later.
You can use Snowflake CLI to manage dbt projects with the following operations:
Deploying a dbt project object¶
The snow dbt deploy command uploads local files to a temporary stage and creates a new dbt project object, updates it by making a new version, or completely recreates it. A valid dbt project must contain two files:
dbt_project.yml: A standard dbt configuration file that specifies the profile to use.profiles.yml: A dbt connection profile definition referenced indbt_project.yml.profiles.yamlmust define the database, role, schema, and type.By default, dbt Projects on Snowflake uses your target schema (
target.schema) specified from your dbt environment or profile. Unlike dbt Core behavior, the target schema specified in theprofiles.ymlfile must exist before you create your dbt Project in order for it to compile or execute successfully.
<profile_name>: target: dev outputs: dev: database: <database_name> role: <role_name> schema: <schema_name> type: snowflake
The following examples illustrate how to use the snow dbt deploy command:
Implante um objeto de projeto dbt chamado
jaffle_shop:snow dbt deploy jaffle_shop
Deploy a project named
jaffle_shopfrom a specified directory and create or add a new version depending on whether the dbt project object already exists:snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --force
Deploy a project named
jaffle_shopfrom a specified directory using a custom profiles directory and enabling external access integrations:snow dbt deploy jaffle_shop --source /path/to/dbt/directory --profiles-dir ~/.dbt/ --default-target dev --external-access-integration dbthub-integration --external-access-integration github-integration --force
Listing all available dbt project objects¶
The snow dbt list command lists all available dbt project objects on Snowflake.
The following examples illustrate how to use the snow dbt list command:
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
Executing a dbt project object command¶
The snow dbt execute command executes one of the following dbt commands on a Snowflake dbt project object:
Para obter mais informações sobre o uso dos comandos dbt, consulte a Referência de comandos dbt.
The following examples illustrate how to use the snow dbt execute command:
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
Describing a dbt project object¶
The snow dbt describe command describes a dbt project object on Snowflake.
The following example describes the dbt project object named my_dbt_project on Snowflake:
snow dbt describe my_dbt_project
Dropping a dbt project object¶
The snow dbt drop command deletes a dbt project object on Snowflake.
The following example deletes the dbt project object named my_dbt_project on Snowflake:
snow dbt drop my_dbt_project
Use snow dbt commands in a CI/CD workflow¶
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.ymleprofiles.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.ymlcontiver 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_pipelinecom 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