Monitoramento de projetos dbt no Snowflake¶
Este tópico explica como você pode usar os recursos de monitoramento do dbt Projects on Snowflake para inspecionar execuções de projetos dbt, manuais ou agendadas por tarefa, e visualizar logs e artefatos.
Seção |
Descrição |
|---|---|
Capture eventos de registro e rastreamento para um objeto de projeto dbt e para qualquer tarefa agendada que o execute. Para habilitar esse recurso, você deve definir o registro em log, o rastreamento e as métricas no esquema em que a tarefa e o objeto de projeto dbt são implantados. |
|
Monitoramento das execuções programadas dos objetos de projeto dbt |
No Snowsight, no menu de navegação, selecione Transformation » dbt Projects para visualizar o histórico de execução, gráficos de tarefas e detalhes de consulta para objetos de projeto dbt. Quando um espaço de trabalho está conectado a um objeto de projeto dbt que é executado de acordo com um cronograma de tarefas, você pode abrir o histórico de execuções e os gráficos das tarefas de dentro do espaço de trabalho. |
Use a função de tabela DBT_PROJECT_EXECUTION_HISTORY e as funções do sistema dbt para acessar artefatos e logs de dbt programaticamente. |
Habilitação de recursos de monitoramento para projetos dbt¶
Para habilitar os recursos de monitoramento para seu objeto de projeto dbt, defina LOG_LEVEL, TRACE_LEVELe METRIC_LEVEL no banco de dados e no esquema em que o objeto de projeto dbt foi criado, conforme mostrado no seguinte exemplo de SQL:
ALTER SCHEMA my_db.my_dbt_project_schema SET LOG_LEVEL = 'INFO';
ALTER SCHEMA my_db.my_dbt_project_schema SET TRACE_LEVEL = 'ALWAYS';
ALTER SCHEMA my_db.my_dbt_project_schema SET METRIC_LEVEL = 'ALL';
Monitoramento das execuções programadas dos objetos de projeto dbt¶
Quando você usa uma tarefa para executar um projeto dbt que segue um cronograma e tem um espaço de trabalho conectado a um objeto de projeto dbt, você pode usar o espaço de trabalho do dbt Projects on Snowflake para acessar rapidamente as informações de monitoramento referentes ao histórico de execuções de tarefas e um gráfico de tarefas, se aplicável.
Nota
Esse recurso está disponível apenas para espaços de trabalho conectados a um objeto de projeto dbt.
Para monitorar a execução programada de um objeto de projeto dbt de um espaço de trabalho:
No menu do projeto dbt no canto superior direito do editor do espaço de trabalho, em Scheduled runs, escolha View schedules.
Na lista, selecione o cronograma (tarefa) que você quer inspecionar e, em seguida, escolha View details.
O painel de informações da tarefa é aberto, no qual você pode visualizar os Task details, a tarefa Graph (se aplicável) e o Run history da tarefa. Para obter mais informações, consulte Visualização de tarefas e gráficos de tarefa no Snowsight.
No Run history de qualquer execução de projeto dbt programada na lista, selecione o botão Open query history na extremidade direita para visualizar os detalhes, o perfil e a telemetria da consulta referentes à execução. Para obter mais informações, consulte Revisão dos detalhes e do perfil de uma consulta específica.
Monitoramento de projetos de dbt na Snowsight¶
Você pode usar Monitoring na Snowsight para visualizar as informações detalhadas de monitoramento sobre as execuções de projetos dbt. É necessário ter privilégios para visualizar as informações de monitoramento para o objeto de projeto dbt.
No menu de navegação, selecione Transformation » dbt Projects. Um histograma mostra a frequência das execuções de projetos dbt e uma lista dos projetos que foram executados.
A lista de projetos dbt inclui colunas com as informações a seguir. É possível filtrar a lista por intervalo de datas, comando e status da execução.
PROJECT: o nome do objeto de projeto dbt e o número de execuções no período selecionado.
LAST COMMAND: o comando dbt executado durante a última execução.
LAST RUN STATUS: o resultado da execução: Succeeded, Executing ou Failed.
LAST RUN: o tempo decorrido desde a última execução. Para inverter a ordem de classificação, selecione o cabeçalho da coluna. A execução mais recente é mostrada primeiro por padrão.
PREVIOUS RUNS: o número de execuções no período selecionado por status.
DATABASE e SCHEMA: o banco de dados e o esquema em que o objeto de projeto dbt foi salvo.
LAST RUN PARAMETERS: os argumentos da linha de comando dbt (ARGS) especificados no comando EXECUTE DBT PROJECT para a última execução do projeto dbt.
Para inspecionar execuções individuais de projetos, selecione um objeto de projeto dbt na lista.
A página de detalhes do projeto dbt no explorador de objetos do banco de dados é aberta para esse objeto de projeto dbt.
A guia Run history está selecionada por padrão, com as seguintes informações para cada execução de trabalho no período selecionado:
COMMAND: o comando dbt executado durante a última execução.
STATUS: o resultado da execução: Succeeded, Executing ou Failed.
RUN TIME: o tempo decorrido desde a última execução. Para inverter a ordem de classificação, selecione o cabeçalho da coluna. A execução mais recente é mostrada primeiro por padrão.
PARAMETERS: os argumentos da linha de comando dbt (ARGS) especificados no comando EXECUTE DBT PROJECT para a última execução do projeto dbt.
Para ver os detalhes do trabalho referentes a uma execução, selecione-o na lista.
O painel de detalhes da execução do dbt é aberto e inclui as seguintes guias:
A guia Job details está selecionada por padrão e exibe as seguintes informações:
Status: o resultado da execução: Succeeded, Executing ou Failed.
Start time, End time e Duration: as horas de início e de término da execução e quanto tempo levou.
Warehouse size: o tamanho do warehouse usado para a execução.
Query ID: o identificador exclusivo da consulta que executou o comando do projeto dbt. Para visualizar os detalhes da consulta no histórico de consultas, selecione o ID dela.
SQL text: o comando EXECUTE DBT PROJECT que foi executado.
<command> dbt: para o comando dbt que foi executado (por exemplo,
runoubuild), mostra o model do dbt, o time taken da execução e o status da execução do modelo.
A guia Output mostra o stdout gerado pelo projeto dbt durante a execução.
A guia Trace mostra as informações de rastreamento geradas pelo projeto dbt durante a execução. Para obter mais informações sobre rastreamentos, consulte Visualização dos dados de rastreamento.
Para ver informações mais detalhadas da consulta, na guia Job details, selecione o Query ID.
A página do histórico de consultas para a consulta de execução do trabalho é aberta com guias para visualizar os Query Details, o Query Profile e a Query Telemetry da execução do dbt que você selecionou.
Para obter mais informações, consulte Revisão dos detalhes e do perfil de uma consulta específica.
Acesso programático a artefatos e logs do dbt¶
Use a função de tabela DBT_PROJECT_EXECUTION_HISTORY e as funções do sistema a seguir para acessar artefatos e logs de dbt programaticamente.
Função |
O que ela retorna |
Uso comum |
Notas |
|---|---|---|---|
Saída de log de texto (a parte final do log de execução) |
Depuração rápida em SQL. Por exemplo, veja os erros e avisos sem baixar os arquivos. |
Retorna o conteúdo do log. Nada é criado ou movido. |
|
Caminho da pasta (por exemplo, |
Navegar ou copiar arquivos específicos com LIST, GET ou COPY FILES. |
Apenas um localizador (URL). Você ainda executa GET/COPY FILES para a busca. |
|
URL do arquivo ZIP único (por exemplo, |
Útil quando você deseja baixar um arquivo (por exemplo, com GET). |
Use |
Obtenção de logs e download de arquivo ZIP da consulta de projeto dbt mais recente¶
O exemplo a seguir consulta o histórico de execução do dbt do Snowflake para mostrar o ID da consulta mais recente para o projeto dbt. Ele extrai a saída do log e retorna o local dos artefatos de dbt compactados para essa execução.
O exemplo da Snowflake CLI baixa o arquivo ZIP dos artefatos ou arquivos específicos (como manifest.json) para sua pasta local usando GET.
Para baixar o arquivo ZIP do Snowsight, navegue até Monitoring » Query History. Selecione a consulta, navegue até Query Details e selecione Download Build Artifacts em dbt Output.
Você deve usar uma função com o privilégio OWNERSHIP, USAGE ou MONITOR em seus projetos dbt.
--Look up the most recent dbt Project execution
SET latest_query_id = (SELECT query_id
FROM TABLE(INFORMATION_SCHEMA.DBT_PROJECT_EXECUTION_HISTORY())
WHERE OBJECT_NAME = 'MY_DBT_PROJECT'
ORDER BY query_end_time DESC LIMIT 1);
--Get the dbt run logs for the most recent dbt Project 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 visualizar o caminho da área de preparação em que o Snowflake armazenou os artefatos da execução do projeto dbt (ou seja, a pasta de resultados dessa execução), use a função SYSTEM$LOCATE_DBT_ARTIFACTS. Depois disso, você poderá usar esse caminho com GET ou COPY FILES com a Snowflake CLI para baixar elementos como manifest.json, SQL compilado ou logs.
--Get the location of the dbt Project archive ZIP file (see all files)
SELECT SYSTEM$LOCATE_DBT_ARTIFACTS($latest_query_id);
+-------------------------------------------------------------------------------------------------+
| SYSTEM$LOCATE_DBT_ARTIFACTS($LATEST_QUERY_ID) |
+-------------------------------------------------------------------------------------------------+
| snow://dbt/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01c01096-010c-0ccb-0000-a99506bd199e/ |
+-------------------------------------------------------------------------------------------------+
--List all the files of a dbt run
ls 'snow://dbt/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf3f5a-010b-4d87-0000-53493abb7cce/';
Você também pode criar uma nova área de preparação interna, localizar o caminho gerenciado pelo Snowflake para os artefatos da execução do projeto dbt especificado e copiar esses artefatos para a sua área de preparação para recuperação, conforme mostrado no exemplo a seguir:
CREATE OR REPLACE STAGE my_dbt_stage ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
SELECT SYSTEM$LOCATE_DBT_ARTIFACTS($latest_query_id);
snow://dbt/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf51c1-010b-5676-0000-53493ae6db02/
COPY FILES INTO @my_dbt_stage/results/ FROM 'snow://dbt/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf51c1-010b-5676-0000-53493ae6db02/';
results/dbt_artifacts.zip
results/logs/dbt.log
results/target/manifest.json
results/target/semantic_manifest.json
snowsql -q "SELECT query_id
FROM TABLE(INFORMATION_SCHEMA.DBT_PROJECT_EXECUTION_HISTORY())
WHERE OBJECT_NAME = 'MY_DBT_PROJECT'
ORDER BY query_end_time DESC LIMIT 1;"
snowsql -q "SELECT SYSTEM\$GET_DBT_LOG('01bf3f89-0300-0001-0000-0000000c1229')"
| ============================== 11:17:39.152234 | 4df65841-7aa3-40e2-81cb-2007c09c2b81
| 11:17:39.152234 [info ] [Dummy-1 ]: Running with dbt=1.9.4
....
snowsql -q "SELECT SYSTEM\$LOCATE_DBT_ARCHIVE('01bf3f89-0300-0001-0000-0000000c1229')"
snow://dbt_project/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf3f89-0300-0001-0000-0000000c1229/dbt_artifacts.zip
snowsql -q "GET 'snow://dbt_project/TESTDBT.PUBLIC.MY_DBT_PROJECT/results/query_id_01bf3f89-0300-0001-0000-0000000c1229/dbt_artifacts.zip' file:///Users/user_name/Code/temp"
Type SQL statements or !help
+-----------------------------------------------------------------+--------+------------+-----
| file | size | status | ....
|-----------------------------------------------------------------+--------+------------+-----
| query_id_01bf3f89-0300-0001-0000-0000000c1229/dbt_artifacts.zip | 137351 | DOWNLOADED |...
+-----------------------------------------------------------------+--------+------------+-----