トレースデータの表示¶
トレースデータは、 Snowsight、またはトレースデータが保存されているイベントテーブルをクエリすることで表示することができます。
注釈
トレースデータの使用を開始する前に、 テレメトリデータ収集 を有効にする必要があります。
Snowsight でトレースエントリを表示します。¶
注釈
Snowsight ロギングとトレースのサポートは、すべてのアカウントで利用可能なプレビュー機能です。
Snowsight を使って、イベント・テーブルに取り込まれたトレース・データを表示することができます。
Snowsight にサインインします。
ナビゲーションメニューで Monitoring » Traces and Logs を選択します。
Traces & Logs ページでは、以下の列でトレースエントリを表示することができます。
列
説明
Date
エントリが記録された日付。
期間
トレースの開始から終了までの長さ。
トレース名
イベントを生成する実行可能ファイルの名前。 RESOURCE_ATTRIBUTES 列
snow.executable.name
の値から取得します。ステータス
Error
トレースがエラーを報告した場合、またはSuccess
。スパン
トレース内のスパンの数。
Traces & Logs ページでは、以下を実行できます。
表示された行をフィルタリングするには、ページ上部のドロップダウンメニューを使用します。次の特徴でフィルタリングができます。
エントリが記録された日付範囲
トレースのステータス、例えば
Success
またはError
トレースが実行されたデータベース
行を並べ替えるには、並べ替えたい列の名前を選択します。
エントリの詳細情報を Trace Details ページで表示するには、エントリの行を選択します。
Traces Details ページでは、スパンのリストを表示することができます。
スパン・オブジェクトは、トレース・イベントを含みます。詳細については、 Snowflakeがトレースイベントを表す方法 をご参照ください。
表示された行をフィルタリングするには、ページ上部のドロップダウンメニューを使用します。 Span Type でフィルタリングできます。UDF 手順、Streamlitです。
行に表示されたデータを説明する凡例を表示するには、 Legend ドロップダウンを選択し、表示したい凡例を選択します。
エントリの詳細情報を表示するには、エントリの行を選択します。
このパネルでは、イベント・テーブルに保存されている詳細情報を表示することができます。以下の表は、パネルの値について説明したものです。
詳細タブ
詳細
説明
トレース ID
クエリからの呼び出しに対する一意の識別子。 TRACE 列
trace_id
値から取得します。詳細については、 トレース値 をご参照ください。スパン ID
スレッドモデルに関連付けられた一意の識別子。 TRACE 列
span_id
値から取得します。詳細については、 トレース値 をご参照ください。範囲
イベントを出力するコードの名前空間。 SCOPE 列 から取得。
期間
スパンの開始から終了までの期間。詳細については、 SPAN RECORD_TYPE の場合 をご参照ください。
名前
スパンの名前。 RECORD 列
name
の値から取得します。親のスパン ID
選択されているスパンを含むスパンの一意な ID。
ステータスコード
スパンのステータスコード。 RECORD 列
status
の値から取得します。その他の属性
ユーザーコードによって追加された属性と値。
クエリ ID
トレースを開始したクエリの ID RESOURCE_ATTRIBUTES 列
snow.query.id
の値から取得します。名前
イベントを生成する実行可能ファイルの名前。 RESOURCE_ATTRIBUTES 列
snow.executable.name
の値から取得します。型
イベントを発生させた実行ファイルのタイプ。 RESOURCE_ATTRIBUTES 列
snow.executable.type
の値から取得します。ユーザー
ユーザーが実行する関数の名前。Streamlitアプリの場合、特定のイベントでアプリを表示していたユーザーの名前。 RESOURCE_ATTRIBUTES 列
db.user
の値から取得します。所有者
実行可能ファイルの OWNERSHIP 権限を持つロールの名前。 RESOURCE_ATTRIBUTES 列
snow.owner.name
の値から取得します。ロール
セッション内のプライマリロールの名前。 RESOURCE_ATTRIBUTES 列
snow.session.role.primary.name
の値から取得します。ウェアハウス
イベントを生成するクエリを実行しているウェアハウスの名前。 RESOURCE_ATTRIBUTES 列
snow.warehouse.name
の値から取得します。データベース
実行可能ファイルを含んでいるデータベースの名前。 RESOURCE_ATTRIBUTES 列
snow.database.name
の値から取得します。スキーマ
実行可能ファイルを含んでいるスキーマの名前。 RESOURCE_ATTRIBUTES 列
snow.schema.name
の値から取得します。スパンイベントタブ
トレースイベントに記録されたデータを表示します。詳細については、 記録されたイベントデータ をご参照ください。
関連指標タブ
Snowpark Python ストアドプロシージャおよび UDFs によるリソース消費について、 CPU およびメモリメトリクスのチャートを表示します。UDF に関連するメトリクスは、特定のクエリに対するものです。リストから UDF スパンを選択すると、同じクエリについて 1 つ以上の UDF スパンに関連するメトリックが表示されます。リストからプロシージャーを選択すると、単一スパンのプロシージャ・メトリクスが表示されます。
ログタブ
イベントでログに記録された値を表示します。 VALUE 列 から取得。
トレースデータのイベントテーブルをクエリするには、次を実行します。¶
イベントテーブルには、ログされたメッセージに関する情報をキャプチャする、次のような事前定義された列のセットがあります。
スパンが開始されたときのタイムスタンプ。
イベントが作成されたときのタイムスタンプ。
データがスパン用かスパンイベント用かなど、記録されたデータの型。
スパンまたはイベントの名前。
スパンまたはイベントに関連付けられた属性(存在する場合)。
イベントテーブルの列に関する参照情報については、 イベントテーブル列 をご参照ください。
トレースデータクエリの例¶
次のセクションでは、データ例を使用してイベントテーブルにトレースデータをクエリする方法を説明します。
収集されたデータ¶
次の例の出力は、Pythonで記述された3つの個別のハンドラーに対してトレースデータがキャプチャされた後の、イベントテーブルから選択された列のサブセットの内容を示しています。
トレースデータを収集するイベントテーブル列の参照情報については、 トレースイベントのデータ をご参照ください。
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| TIMESTAMP | START_TIMESTAMP | RESOURCE_ATTRIBUTES | RECORD_TYPE | RECORD | RECORD_ATTRIBUTES |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | 2023-04-20 0:45:49 | **See excerpt below** | SPAN | { "kind": "SPAN_KIND_INTERNAL", "name": "digits_of_number", "status": { "code": "STATUS_CODE_UNSET" } } | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | | | SPAN_EVENT | { "name": "test_udtf_init" } | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | | | SPAN_EVENT | { "name": "test_udtf_process" } | { "input": "42" } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | | | SPAN_EVENT | { "name": "test_udtf_end_partition" } | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 | 2023-04-20 0:46:00 | | SPAN | { "kind": "SPAN_KIND_INTERNAL", "name": "times_two", "status": { "code": "STATUS_CODE_UNSET" } } | { "example.func.times_two": "begin", "example.func.times_two.response": 8 } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 | | | SPAN_EVENT | { "name": "event_without_attributes" } | |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:00 | | | SPAN_EVENT | { "name": "event_with_attributes" } | { "example.key1": "value1", "example.key2": "value2" } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:08 | 2023-04-20 0:46:08 | | SPAN | { "kind": "SPAN_KIND_INTERNAL", "name": "do_tracing", "status": { "code": "STATUS_CODE_UNSET" } } | { "example.proc.do_tracing": "begin" } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:46:08 | | | SPAN_EVENT | { "name": "event_with_attributes" } | { "example.key1": "value1", "example.key2": "value2" } |
-------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
RESOURCE_ATTRIBUTES の抜粋
次の JSON の抜粋には、前の出力にデータが含まれている3つのハンドラーの1つごとに、 RESOURCE_ATTRIBUTES 列に含まれる属性のうちの2つが含まれています。これらの抜粋に続く SELECT クエリコードは、これらの属性から値を選択します。
RESOURCE_ATTRIBUTES 列には、イベントのソースに関するデータが含まれています。参照情報については、 RESOURCE_ATTRIBUTES 列 をご参照ください。
{
...
"snow.executable.name": "DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER)",
"snow.executable.type": "FUNCTION",
...
}
{
...
"snow.executable.name": "TIMES_TWO(X NUMBER):NUMBER(38,0)",
"snow.executable.type": "FUNCTION",
...
}
{
...
"snow.executable.name": "DO_TRACING():VARIANT",
"snow.executable.type": "PROCEDURE",
...
}
SELECT ステートメントを使用したクエリ¶
データのクエリを実行する場合は、次の形式のように、 括弧表記 を使用して列内の属性値を選択できます。
COLUMN_NAME['attribute_name']
以下の例のコードは、 DIGITS_OF_NUMBER
関数に関連するデータを分離することを目的として、前のテーブルをクエリします。
SET EVENT_TABLE_NAME='my_db.public.my_events';
SELECT
TIMESTAMP as time,
RESOURCE_ATTRIBUTES['snow.executable.name'] as handler_name,
RESOURCE_ATTRIBUTES['snow.executable.type'] as handler_type,
RECORD['name'] as event_name,
RECORD_ATTRIBUTES as attributes
FROM
IDENTIFIER($event_table_name)
WHERE
RECORD_TYPE = 'SPAN_EVENT'
AND HANDLER_NAME LIKE 'DIGITS_OF_NUMBER%';
クエリ結果¶
次の例の出力は、クエリの結果を示しています。
-------------------------------------------------------------------------------------------------------------------------------------------
| TIME | HANDLER_NAME | HANDLER_TYPE | EVENT_NAME | ATTRIBUTES |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION | test_udtf_init | |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION | test_udtf_process | { "input": "42" } |
-------------------------------------------------------------------------------------------------------------------------------------------
| 2023-04-20 0:45:49 | DIGITS_OF_NUMBER(INPUT NUMBER):TABLE: (RESULT NUMBER) | FUNCTION | test_udtf_end_partition | |
-------------------------------------------------------------------------------------------------------------------------------------------