Monitoramento de projetos dbt no Snowflake¶
Você pode usar os recursos de monitoramento do dbt Projects on Snowflake para inspecionar a execução de projetos dbt, seja para executar objetos de projeto dbt manualmente ou usar tarefas para executá-los de acordo com um cronograma.
No menu de navegação do lado esquerdo da Snowsight, selecione Monitoring » dbt projects para visualizar o histórico de execuções, os gráficos de tarefas e os detalhes de consultas referentes aos 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.
Você também pode acessar artefatos e logs do 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 painel de navegação, selecione Monitoring » 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,
run
oubuild
), 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¶
Por padrão, quando um objeto de projeto dbt é executado, os arquivos de log e artefatos que o dbt grava no diretório /target
são salvos em um arquivo dbt_results.zip
. O valor OUTPUT_ARCHIVE_URL disponível na saída EXECUTE DBT PROJECT e na guia Query details do histórico de consultas fornece uma referência a esse arquivo. Não é possível usar este OUTPUT_ARCHIVE_URL diretamente. Em vez disso, use o URL para copiar o arquivo para uma área de preparação interna nomeada. Dessa forma, você pode acessar o arquivo da área de preparação nomeada.
O exemplo a seguir mostra comandos SQL que criam uma área de preparação interna nomeada como my_dbt_stage
, copiam o arquivo dbt_results.zip
disponível para a área de preparação nomeada e geram um URL pré-assinado para acessar o arquivo. Substitua output_archive_url
pelo valor real retornado pelo EXECUTE DBT PROJECT.
-- Create a named internal stage using encryption
CREATE OR REPLACE STAGE my_dbt_stage
ENCRYPTION = (TYPE = 'SNOWFLAKE_SSE');
-- Copy the dbt results zip file into the named stage
COPY FILES INTO @my_dbt_stage/results/
FROM (
SELECT '{output_archive_url}', 'dbt_results.zip');
-- Get a presigned URL from which to access the file directly
SELECT get_presigned_url(@my_dbt_stage, 'results/dbt_results.zip');
O exemplo anterior não funciona para comandos EXECUTE DBT PROJECT executados de uma tarefa. Como as tarefas são executadas como usuário do sistema, o acesso aos resultados requer esse usuário.
Para acessar os resultados ao usar uma tarefa, você pode criar um procedimento armazenado que pode ser chamado de uma tarefa para executar o projeto dbt e copiar os resultados.
O exemplo a seguir cria um procedimento armazenado denominado run_dbt_and_copy_results_file
que executa um projeto dbt chamado my_dbt_project
e copia os resultados para a área de preparação interna nomeada my_dbt_stage
, que já existe. O procedimento armazenado usa um carimbo de data/hora para nomear cada arquivo de resultados que ele copia para a área de preparação nomeada.
CREATE OR REPLACE PROCEDURE my_db.public.run_dbt_and_copy_results_file()
RETURNS varchar
LANGUAGE SQL
COMMENT = 'Execute dbt and copy the files in the same sproc call.'
EXECUTE AS CALLER
AS
DECLARE
output_archive_url varchar;
BEGIN
EXECUTE DBT PROJECT my_db.my_schema.my_dbt_project args='run';
output_archive_url := (SELECT output_archive_url FROM TABLE(RESULT_SCAN(last_query_id())));
COPY FILES INTO @my_dbt_stage/results/ FROM (SELECT :output_archive_url, (to_char(current_timestamp(), 'YYYYMMDD_HH24_MI') || '.zip'));
END;
O exemplo a seguir cria uma tarefa chamada run_my_dbt_project
que executa o procedimento armazenado com os comandos executar e copiar a cada seis horas:
CREATE OR REPLACE TASK my_db.my_schema.run_my_dbt_project
WAREHOUSE = my_dbt_warehouse
SCHEDULE = '6 hours'
AS
CALL my_db.public.run_dbt_and_copy_results_file();