Cronograma de execuções de projetos dbt no Snowflake

Você pode usar as tarefas do Snowflake para agendar execuções do dbt Projects on Snowflake com o comando EXECUTE DBT PROJECT. Você pode usar um espaço de trabalho para dbt Projects on Snowflake para criar e agendar rapidamente uma tarefa gerenciada pelo usuário. Você também pode usar os comandos SQL para criar uma tarefa. Se um espaço de trabalho estiver conectado a um objeto de projeto dbt, de dentro do espaço de trabalho, você poderá visualizar todas as tarefas que executam o comando EXECUTE DBT PROJECT para esse projeto.

Você deve criar uma tarefa que executa o comando EXECUTE DBT PROJECT no mesmo banco de dados e esquema que o objeto de projeto dbt.

Criação de uma tarefa de dentro de um espaço de trabalho

Quando você cria um cronograma de dentro de um espaço de trabalho para dbt Projects on Snowflake, o Snowflake cria o cronograma gerando uma tarefa gerenciada pelo usuário, que é salva no mesmo banco de dados e esquema que o objeto de projeto dbt. As tarefas são executadas com os privilégios do proprietário da tarefa, mas as execuções não estão associadas a um usuário.

Para criar uma tarefa que agenda a execução de um objeto de projeto dbt de dentro de um espaço de trabalho:

  1. No menu do projeto dbt no canto superior direito do editor do espaço de trabalho, em Scheduled runs, escolha Create schedule.

  2. Na caixa de diálogo Schedule a dbt run, faça o seguinte:

    • Em Schedule name, insira um nome para a tarefa.

    • Em Frequency, escolha uma frequência que varie de Hourly a Monthly, com um qualificador at, ou selecione Custom e insira uma expressão Cron. Para obter mais informações sobre como agendar tarefas, consulte SCHEDULE = ... na referência do comando CREATE TASK.

    • Em dbt properties:

      • Em Operation, selecione o comando do dbt que você quer executar em um cronograma. Para ver a lista dos comandos permitidos, consulte Comandos do dbt permitidos.

      • Em Profile, selecione um dos perfis definidos no arquivo profiles.yml do projeto dbt.

      • Em Additional flags, insira qualquer outra opção de linha de comando para o comando do dbt.

  3. Escolha Create.

    O Snowflake cria uma tarefa que executa o comando EXECUTE DBT PROJECT usando os parâmetros que você especifica.

Visualização de tarefa de dentro de um espaço de trabalho

De dentro do espaço de trabalho para dbt Projects on Snowflake, você pode visualizar todas as tarefas no banco de dados e no esquema que EXECUTE DBT PROJECT no objeto de projeto dbt conectado a um espaço de trabalho. Você pode escolher uma tarefa para visualizar seus detalhes no explorador de objetos, incluindo a definição, o histórico de execuções e o gráfico da tarefa.

Para visualizar tarefas associadas a um objeto de projeto dbt de dentro de um espaço de trabalho:

  • No menu do projeto dbt, selecione View schedules e escolha o cronograma (tarefa) na lista.

    A tela Task Details é aberta no explorador de objetos. Os detalhes da tarefa, a instrução SQL que inclui a definição da tarefa e os privilégios concedidos no objeto da tarefa são mostrados.

    Escolha a guia Run History para visualizar o histórico de execuções da tarefa ou escolha a guia Task Graph para visualizar o relacionamento desta tarefa com outras tarefas em um gráfico de tarefas, se aplicável.

    Para obter mais informações, consulte Visualização de tarefas e gráficos de tarefa no Snowsight.

Criação de tarefa usando SQL

Você pode usar o comando CREATE TASK para criar tarefas que executam o comando EXECUTE DBT PROJECT. O uso do SQL para criar tarefas que executam diferentes comandos do dbt com opções de CLI distintas do dbt é uma maneira poderosa de orquestrar implantações de dbt no Snowflake.

O exemplo de SQL a seguir cria uma tarefa para um destino dbt de produção que executa um comando run do dbt em um intervalo de seis horas.

CREATE OR ALTER TASK my_database.my_schema.run_dbt_project
  WAREHOUSE = my_warehouse
  SCHEDULE = '6 hours'
AS
  EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project args='run --target prod';
Copy

Depois disso, o SQL abaixo cria uma tarefa que executa o comando test do dbt após a conclusão de cada tarefa run_dbt_project anterior.

CREATE OR ALTER TASK change_this.public.test_dbt_project
        WAREHOUSE = my_warehouse
        AFTER run_dbt_project
AS
  EXECUTE DBT PROJECT my_database.my_schema.my_dbt_project args='test --target prod';
Copy