Categorias:

Funções do sistema (Informações do sistema)

SYSTEM$GET_DBT_LOG

Retorna os logs da execução especificada para um dbt Projects on Snowflake.

Use essa função com a função DBT_PROJECT_EXECUTION_HISTORY para acessar artefatos e logs dbt programaticamente.

Sintaxe

SYSTEM$GET_DBT_LOG ( '<query_id>' )

Argumentos

query_id

ID da consulta da execução para a qual você deseja os logs.

Retornos

A função retorna as últimas mil linhas do arquivo dbt.log. Para obter os logs completos, baixe o arquivo compactado ZIP.

Para obter mais informações e exemplos, consulte Acesso programático a artefatos e logs do dbt.

Requisitos de controle de acesso

Esta função inclui apenas execuções de espaços de trabalho e projetos dbt nos quais você tem os seguintes privilégios:

  • OWNERSHIP, READ, or WRITE on workspaces

  • OWNERSHIP, USAGE ou MONITOR em projetos dbt

A operação em um objeto de esquema requer pelo menos um privilégio no banco de dados pai e um privilégio no esquema pai.

Para instruções sobre como criar uma função personalizada com um conjunto específico de privilégios, consulte Criação de funções personalizadas.

Para informações gerais sobre concessões de funções e privilégios para executar ações de SQL em objetos protegíveis, consulte Visão geral do controle de acesso.

Notas de uso

  • Esta função do sistema funciona apenas em objetos de projeto dbt; ela não está disponível para espaços de trabalho.

  • IDs de consulta gerados a partir de CREATE DBT PROJECT ou ALTER DBT PROJECT … ADD VERSION não são compatíveis com esta função do sistema.

  • Consultas diretas do conteúdo do arquivo (por exemplo, Query examples) não são compatíveis.

  • Se query_id for NULL ou não for uma execução dbt, você receberá um erro.

  • Os resultados do projeto dbt ficam disponíveis por até 14 dias.

  • Os logs poderão não estar disponíveis se uma execução expirar, for cancelada ou falhar antes do upload dos arquivos. Nesses casos, as execuções aparecem como UNHANDLED ERROR no histórico do dbt, e essas entradas podem não incluir logs.

  • Você não pode usar essa função para obter logs de execuções em andamento, pois o arquivo de logs só fica disponível após a conclusão da execução.

Exemplos

The following example looks up the most recent dbt project object execution using DBT_PROJECT_EXECUTION_HISTORY and then fetches the logs for that execution using SYSTEM$GET_DBT_LOG, so you can inspect what happened during the execution.

Dica

Use function arguments such as DATABASE, SCHEMA, and OBJECT_NAME to filter results whenever possible. These filters are applied before the RESULT_LIMIT (default: 100 rows), so using them ensures you get the most relevant results rather than filtering a potentially truncated result set with a WHERE clause.

--Look up the most recent dbt project object execution
SET latest_query_id = (SELECT query_id
  FROM TABLE(SNOWFLAKE.INFORMATION_SCHEMA.DBT_PROJECT_EXECUTION_HISTORY(
    DATABASE => 'ANALYTICS_DB',
    SCHEMA => 'DBT_PROD',
    OBJECT_NAME => 'FINANCE_ANALYTICS'
  ))
  ORDER BY query_end_time DESC LIMIT 1);

--Get the dbt run logs for the most recent dbt project object execution
SELECT SYSTEM$GET_DBT_LOG($latest_query_id);
============================== 15:14:53.100781 | 46d19186-61b8-4442-8339-53c771083f16 ==============================
[0m15:14:53.100781 [info ] [Dummy-1   ]: Running with dbt=1.9.4
...
[0m15:14:58.198545 [debug] [Dummy-1   ]: Command `cli run` succeeded at 15:14:58.198121 after 5.19 seconds

Para obter mais informações, consulte Acesso programático a artefatos e logs do dbt.