トレースデータの表示¶
トレースデータは、 Snowsight、またはトレースデータが保存されているイベントテーブルをクエリすることで表示することができます。
注釈
トレースデータの使用を開始する前に、 テレメトリデータ収集 を有効にする必要があります。
Snowsight でトレースエントリを表示します。¶
Snowsight を使って、イベント・テーブルに取り込まれたトレース・データを表示することができます。
- Snowsight にサインインします。 
- ナビゲーションメニューで Monitoring » Traces & 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 |                   |
-------------------------------------------------------------------------------------------------------------------------------------------