Monitoramento de projetos dbt no Snowflake¶
This topic explains the ways you can use monitoring features for dbt Projects on Snowflake to inspect dbt project executions—–manual or task-scheduled–—and how to view logs and artifacts.
Section |
Description |
|---|---|
Capture logging and tracing events for a dbt project object and for any scheduled task that runs it. To enable this feature, you must set logging, tracing, and metrics on the schema where the dbt project object and task are deployed. |
|
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 the DBT_PROJECT_EXECUTION_HISTORY table function and dbt system functions to access dbt artifacts and logs programmatically. |
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 - The dbt command-line arguments (ARGS) specified in the EXECUTE DBT PROJECT command for the last dbt project run.
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 The dbt command-line arguments (ARGS) specified in the EXECUTE DBT PROJECT command for the last dbt project run.
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 the DBT_PROJECT_EXECUTION_HISTORY table function and the following system functions to access dbt artifacts and logs programmatically.
Function |
What it returns |
Typical use |
Notes |
|---|---|---|---|
Text log output (the run’s log tail) |
Quick debugging in SQL. For example, see errors and warnings without downloading files. |
Returns log content; nothing is created or moved. |
|
Folder path (for example, |
Browse or copy specific files with LIST, GET, or COPY FILES. |
Just a locator (a URL); you still run GET/COPY FILES to fetch. |
|
Single ZIP file URL (for example, |
Handy when you want to download one file (for example, with GET). |
Use |
Get logs and download a ZIP file of the latest dbt project query¶
The following example queries Snowflake’s dbt execution history to show the most recent query ID for the dbt Project. It pulls the log output for that execution and returns the location of the zipped dbt artifacts for that execution.
The Snowflake CLI example downloads the artifacts ZIP file or specific files (like manifest.json) to your local folder using GET.
To download the ZIP file from Snowsight, navigate to Monitoring » Query History. Select the query, navigate to Query Details, and select Download Build Artifacts under dbt Output.
You must use a role with the OWNERSHIP, USAGE, or MONITOR privilege on your dbt Projects.
--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
To view the stage path where Snowflake stored the dbt Project run’s artifacts (that is, the results folder for that execution), use the
SYSTEM$LOCATE_DBT_ARTIFACTS function. You can then use that path with GET or COPY FILES with the Snowflake CLI to download
things like manifest.json, compiled SQL, or 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/';
You can also create a fresh internal stage, locate the Snowflake-managed path for the specified dbt Project run’s artifacts, and copy those artifacts into your stage for retrieval, as shown in the following example:
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 |...
+-----------------------------------------------------------------+--------+------------+-----