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.

Você pode usar o Snowflake CLI para gerenciar projetos dbt com as seguintes operações:

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 in dbt_project.yml. profiles.yaml must define the database, role, schema, and type.

    • 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
    
    Copy

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
    
    Copy
  • Deploy a project named jaffle_shop from 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
    
    Copy
  • Implante um projeto chamado jaffle_shop de um diretório especificado usando um diretório de perfis personalizados e habilitando as integrações de acesso externo:

    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
    
    Copy

Listing all available dbt project objects

The snow dbt list command lists all available dbt project objects on 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
    
    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

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.

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

  • 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

Describing a dbt project object

The snow dbt describe command describes a dbt project object on Snowflake.

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

snow dbt describe my_dbt_project
Copy

Dropping a dbt project object

The snow dbt drop command deletes a dbt project object on Snowflake.

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

snow dbt drop my_dbt_project
Copy

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:

  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