トレースデータへのアクセス

トレースデータは、トレースをサポートするために設定したイベントテーブルに格納されます。イベントテーブルで SELECT コマンドを実行すると、データにアクセスできます。

注釈

トレースデータの出力を開始する前に、イベントテーブルを設定する必要があります。詳細については、 イベントテーブルの設定 をご参照ください。

イベントテーブルには、ログされたメッセージに関する情報をキャプチャする、次のような事前定義された列のセットがあります。

  • スパンが開始されたときのタイムスタンプ。

  • イベントが作成されたときのタイムスタンプ。

  • データがスパン用かスパンイベント用かなど、記録されたデータの型。

  • スパンまたはイベントの名前。

  • スパンまたはイベントに関連付けられた属性(存在する場合)。

イベントテーブルの列に関する参照情報については、 イベントテーブル列 をご参照ください。

トレースデータクエリの例

次のセクションでは、データ例を使用してイベントテーブルにトレースデータをクエリする方法を説明します。

収集されたデータ

次の例の出力は、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": "snow.auto_instrumented", "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": "snow.auto_instrumented", "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": "snow.auto_instrumented", "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",
  ...
}
Copy

SELECT ステートメントを使用したクエリ

データのクエリを実行する場合は、次の形式のように、 括弧表記 を使用して列内の属性値を選択できます。

COLUMN_NAME['attribute_name']
Copy

以下の例のコードは、 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%';
Copy

クエリ結果

次の例の出力は、クエリの結果を示しています。

-------------------------------------------------------------------------------------------------------------------------------------------
| 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 |                   |
-------------------------------------------------------------------------------------------------------------------------------------------