はじめに:Snowflake Trailって何者?
Snowflakeでパイプラインを組んでいると、「タスクがいつの間にか止まっていた」「Snowparkで書いたUDFがなぜか遅い」など、中身が見えなくて困ること、ありますよね。そんなときに頼れるのが Snowflake Trail です。
Snowflake Trailは、データパイプラインや関数の動きを「見える化」してくれるオブザーバビリティ機能のまとまりです。オブザーバビリティ(可観測性)とは、システム内部で何が起きているかを外から観察できるようにする考え方のこと。Trailを使えば、Snowflake内で動くコードに対してログ・メトリクス・トレースをまるっと収集できます。

Snowflake Trailの3つの柱
Trailで集められるシグナル(信号)は大きく3種類あります。
1. ログ (Logs)
コード内で logger.info(...) のように出力したテキストメッセージのことです。「ここまで処理が進んだ」「想定外の値が来た」など、開発者がデバッグのために残すメモのようなものですね。
2. メトリクス (Metrics)
処理時間、件数、メモリ使用量など、数値で測れる指標です。グラフで時系列に追いかけると、「最近じわじわ遅くなっている」といった傾向が見えてきます。
3. トレース (Traces)
「処理Aの中で処理Bが呼ばれ、その中でクエリCが走った」という処理の親子関係や時間軸を可視化したものです。OpenTelemetry準拠なので、外部ツールとも連携しやすい点がポイントです。
シグナルはどこに溜まる?Event Tableの役割
収集されたシグナルは、すべて Event Table という専用のテーブルに保存されます。まずはイベントテーブルを作って、アカウントに紐付けるところから始めます。
-- イベントテーブルの作成
CREATE EVENT TABLE my_events;
-- アカウント全体のイベント送信先に設定
ALTER ACCOUNT SET EVENT_TABLE = my_db.public.my_events;
-- ログレベルを INFO に設定
ALTER ACCOUNT SET LOG_LEVEL = INFO;
ALTER ACCOUNT SET TRACE_LEVEL = ON_EVENT;
これで、UDFやストアドプロシージャ、タスクから出力されるログ・トレースが my_events に流れ込みます。あとは普通のテーブルと同じようにSQLで分析できるのが便利なところです。
SnowsightのTraces & Logsで眺めてみよう
テーブルを直接SELECTしても良いのですが、Snowsightの「Monitoring → Traces & Logs」画面を使うと、グラフやタイムラインで直感的にチェックできます。失敗したタスク実行をクリックすれば、どのステップでエラーが起きたかをツリー表示で追いかけられます。

Snowparkコードからログを出す例
Snowpark Pythonの中では、Pythonの logging モジュールがそのまま使えます。
import logging
logger = logging.getLogger("my_pipeline")
def transform(session, table_name):
logger.info(f"処理開始: {table_name}")
df = session.table(table_name)
logger.info(f"件数: {df.count()}")
return df
このログは自動的にEvent Tableに送られ、後からSQLでも検索できます。エラー時には logger.error を使えば、Snowsight上で赤く目立つので原因追跡もスムーズです。
こんなシーンで役立ちます
- タスクの失敗調査:「Snowflakeタスクが動かない原因と「Task is suspended」エラー解決ガイド」のような場面でも、Trailのログがあれば原因に最短で辿り着けます。
- Dynamic Tableのリフレッシュ監視:「Snowflake「Dynamic table refresh failed」の原因と解決ガイド」と組み合わせれば、リフレッシュ遅延の傾向が一目瞭然です。
- Openflowなど外部パイプラインの可視化:Snowflake Openflowなどのデータ統合と組み合わせるときも、Trailで一元的に監視できます。
注意点:コストとログレベル
Event Tableはストレージとして課金対象になります。LOG_LEVEL を DEBUG にすると大量のログが流れ込むので、本番では INFO や WARN に絞るのがおすすめです。古いイベントは定期的に削除するか、保持期間を決めて運用しましょう。
まとめ
Snowflake Trailは、パイプラインや関数の「中身の動き」を見えるようにする頼れる相棒です。Event Tableを1つ用意するだけで、ログ・メトリクス・トレースをまとめて収集でき、Snowsightから直感的に確認できます。まずは小さなタスクやSnowpark関数に logger.info を仕込むところから始めて、徐々に観測対象を広げてみてくださいね。
参考リンク
関連記事
- Snowflake Openflowとは?Apache NiFiベースのデータ統合サービスを初心者向けに解説 – パイプラインのデータ取り込み側とセットで監視したい方へ。
- Snowflakeタスクが動かない原因と「Task is suspended」エラー解決ガイド – Trailのログと組み合わせると原因追跡が早まります。
- Snowflake「Dynamic table refresh failed」の原因と解決ガイド – Dynamic Tableの監視にもTrailが活躍します。
- Snowflakeクエリが遅い原因と高速化チェックリスト完全版 – メトリクスで「遅さ」を数値化したいときの参考に。


