dbt Projects on Snowflakeに関する監視機能を試してみた

dbt Projects on Snowflakeに関する監視機能を試してみた

Clock Icon2025.07.07

さがらです。

dbt Projects on Snowflakeに関する監視機能を試してみたので、その内容をまとめてみます。

関連する公式ドキュメントは以下となります。

https://docs.snowflake.com/en/user-guide/data-engineering/dbt-projects-on-snowflake-getting-started-tutorial#enable-logging-tracing-and-metrics

https://docs.snowflake.com/en/user-guide/data-engineering/dbt-projects-on-snowflake-monitoring-observability

事前準備

以下の記事に沿って、dbt ProjectsをSAGARA_DBT_DEMO_DBPRODUCTIONスキーマにデプロイしておきます。

https://dev.classmethod.jp/articles/try-dbt-projects-on-snowflake-with-github/

加えて、以下のクエリを実行して、dbt Projectsを実行するタスクをPRODUCTIONスキーマで定義しておきます。

create or replace task sagara_dbt_demo_db.production.dbt_task
      warehouse=sagara_dbt_wh
      schedule = 'using cron 0 9 1 1 * Asia/Tokyo'
    as
  execute dbt project sagara_dbt_demo_db.production.dbt_deployment_prod args='build --target prod';

この状態でも下図のようにdbt Projectsの実行履歴は確認できるのですが、より詳細な情報までは確認ができません。

2025-07-07_09h53_12

2025-07-07_09h53_31

2025-07-07_09h54_11

2025-07-07_09h54_30

イベントテーブルの作成

イベントテーブルは任意のデータベース・スキーマで作成したもので問題ないため、dbt Projects用のイベントテーブルを作成します。

use role sysadmin;
create or replace database sagara_event_db;
create or replace schema sagara_event_db.dbt;
create or replace event table sagara_event_db.dbt.dbt_events;

grant ownership on database sagara_event_db to role sagara_admin_role;
grant ownership on schema sagara_event_db.dbt to role sagara_admin_role;
grant ownership on event table sagara_event_db.dbt.dbt_events to role sagara_admin_role;

イベントテーブルをdbtのデータベースに紐づけ

イベントテーブルをdbt Projectsを管理するデータベースと紐づけます。

use role sagara_admin_role; -- 2025/7/7時点、ACCOUNTADMINでなくてもOWNERSHIP権限があるロールで可能でした
alter database sagara_dbt_demo_db set event_table = sagara_event_db.dbt.dbt_events;
show parameters like 'event_table' in database sagara_dbt_demo_db;

スキーマレベルでLog Level・Trace Level・Metric Levelを設定

公式Docの内容を参考に、dbt Projectsのオブジェクトがあるデータベース・スキーマで各種Levelを設定します。

use role sagara_admin_role;
alter schema sagara_dbt_demo_db.production set log_level = 'INFO';
alter schema sagara_dbt_demo_db.production set trace_level = 'ALWAYS';
alter schema sagara_dbt_demo_db.production set metric_level = 'ALL';

実際にdbt Projectsをタスクで実行して監視機能を確認してみる

上述の設定をした上でdbt Projectsをタスクで実行してどのような情報が監視機能から確認できるかを確認してみます。

※dbt Projectsのタスク実行は、手動で以下のコマンドを実行しました。

execute task sagara_dbt_demo_db.production.dbt_task;

まず、対象のdbt Projectの画面から、監視機能の有効化前と同様にどのdbtコマンドを実行したか確認可能です。この状態で、詳細を確認したいコマンドを押します。

2025-07-07_10h35_40

すると、Monitoringdbt projectsという画面に遷移して対象のdbtコマンドに関する詳細が確認可能です。

Job detailsタブでは、実行したdbtコマンドの所要時間や、どのModelがビルドされたか、などが確認可能です。

2025-07-07_10h38_19

Outputタブでは、監視機能の有効化前と同様にログを確認可能です。

2025-07-07_10h39_18

Traceタブでは、各処理にどれだけの時間がかかっているかをタイムラインの形式で確認でき、各処理をクリックすると右側に詳細が表示されます。

2025-07-07_10h41_55

2025-07-07_10h42_39

最後に

dbt Projects on Snowflakeに関する監視機能を試してみました。

こちらの機能を有効化しておくと、ボトルネックとなっている処理の確認もすぐに行えて、便利だと思います!dbt Projects on Snowflakeをご利用の際は、ぜひお試しください。

Share this article

facebook logohatena logotwitter logo

© Classmethod, Inc. All rights reserved.