イベントテーブル列

イベント・テーブル は、あらかじめ定義された列セットを持つ、特別な種類のデータベーステーブルです。テーブルの構造は、遠隔測定データを扱うためのフレームワークである OpenTelemetry のデータモデルをサポートするように設計されています。

イベントテーブルの操作の詳細については、 イベントテーブルの操作 をご参照ください。

イベントテーブル列

イベントテーブルには次の列があります。

データ型

説明

TIMESTAMP

TIMESTAMP_NTZ

イベント作成時の UTC タイムスタンプ。ある期間を表すイベントの場合、これはその期間の終わりです。

START_TIMESTAMP

TIMESTAMP_NTZ

トレースイベントなど、一定の期間を表すイベントの場合は、 UTC タイムスタンプとしての期間の開始時刻。

OBSERVED_TIMESTAMP

TIMESTAMP_NTZ

ログに使用される時間は UTC です。現在、 TIMESTAMP と同じ値です。

TRACE

OBJECT

すべてのシグナル型のコンテキストをトレースします。文字列値 trace_idspan_id が含まれます。

RESOURCE

OBJECT

今後の使用のために予約されています。

RESOURCE_ATTRIBUTES

OBJECT

データベース、スキーマ、ユーザー、ウェアハウスなどのイベントのソースを識別する属性。

SCOPE

OBJECT

イベントのスコープ。たとえば、ログのクラス名などです。

SCOPE_ATTRIBUTES

OBJECT

今後の使用のために予約されています。

RECORD_TYPE

STRING

イベント型。次のいずれかを使用します。

  • ログメッセージの場合は LOG

  • 同じスレッド上で連続して実行されるユーザー定義関数呼び出しの SPAN。詳細については、 RECORD_TYPE 列 をご参照ください。

  • 単一のトレースイベントの場合は SPAN_EVENT。1つのクエリで複数の SPAN_EVENT を出力できます。

RECORD

OBJECT

RECORD 列 で説明されている、各記録の型の固定値。

RECORD_ATTRIBUTES

OBJECT

RECORD_ATTRIBUTES 列 で説明されている、各記録の型の変数属性。

VALUE

VARIANT

プライマリイベントの値。

EXEMPLARS

ARRAY

今後の使用のために予約されています。

イベント型ごとにキャプチャされたデータ

ログのデータ

属性

説明

OBSERVED_TIMESTAMP

現在、 TIMESTAMP と同じ値です。

RECORD

ログイベント によって記録された重大度レベル。

RECORD_ATTRIBUTES

ログイベントが出力されたコード内の場所。値は言語によって異なりますが、コードファイルのパス、関数名、行番号などが含まれる場合があります。

RECORD_TYPE

イベント型: ログメッセージの場合は LOG

RESOURCE_ATTRIBUTES

データベース、スキーマ、ユーザー、ウェアハウスなど、イベントのソースを識別する属性。

SCOPE

ログイベントが作成されたクラスの名前など、イベントが発生したスコープ。

TIMESTAMP

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

VALUE

ログメッセージ。

メトリックのためのデータ

注釈

メトリックのデータ収集は、すべてのアカウントで利用可能なプレビュー機能です。

属性

説明

RECORD

メトリックイベントの場合、メトリックの名前と単位を含むオブジェクト。

RECORD_TYPE

イベントタイプ: メトリックデータポイント用の METRIC

RESOURCE_ATTRIBUTES

データベース、スキーマ、ユーザー、ウェアハウスなど、イベントのソースを識別する属性。

START_TIMESTAMP

RECORD 列 metric_type 値が sum の場合、これはメトリックが収集された時間です。 metric_type の値が gauge の場合は使用されません。

TIMESTAMP

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

VALUE

メトリックの数値。

トレースイベントのデータ

属性

説明

RECORD

スパン の場合、スパンの名前と種類を含むオブジェクト。 スパンイベント の場合、オブジェクトにはスパンの名前が含まれます。

RECORD_ATTRIBUTES

スパン または スパンイベント に関連付けられた属性データ。

RECORD_TYPE

イベント型: スパンの場合は SPAN、スパンイベントの場合は SPAN_EVENT

RESOURCE_ATTRIBUTES

データベース、スキーマ、ユーザー、ウェアハウスなど、イベントのソースを識別する属性。

START_TIMESTAMP

スパンの場合は、そのスパンが開始された時刻。スパンイベントには使用されません。

TIMESTAMP

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

TRACE

スパンとその中のスパンイベントの識別子 trace_idspan_id

EXEMPLARS 列

今後の使用のために予約されています。

OBSERVED_TIMESTAMP 列

ログの UTC タイムスタンプ。トレースイベントには使用されません。

RECORD 列

ログイベントのログレベルやトレースイベント(スパンまたはスパンイベント記録)の名前など、イベントに関するコア情報を提供します。

記録の属性がある場合は、 RECORD_ATTRIBUTES 列 に記録されます。

この列に含まれる値は、次のセクションで説明するように、 RECORD_TYPE 列LOGSPAN、または SPAN_EVENT)の値に応じて異なります。

LOG RECORD_TYPE の場合

RECORD_TYPE 列の値が LOG の場合、 RECORD 列の値にはログメッセージの重大度が含まれます。列の値には次のキーが含まれる場合があります。

キー

説明

severity_text

STRING

ログの重大度のテキスト。次のいずれかを使用します。

  • TRACE

  • DEBUG

  • INFO

  • WARN

  • ERROR

  • FATAL

ログエントリが 未処理の例外 の場合、この値は現在の言語ランタイムについて最も重大度が高いエラーレベルとなります。たとえば、Pythonで記述されたコードの場合、値は FATAL になります。

{
  "severity_text": "INFO"
}
Copy

METRIC RECORD_TYPE の場合

注釈

メトリックのデータ収集は、すべてのアカウントで利用可能なプレビュー機能です。

メトリックは、Snowflakeによって生成された CPU 、メモリデータである。このデータを使ってリソースの消費を分析することができます。

実行ハンドラ言語とその環境は、メトリック・データの意味に大きく影響します。詳細については、 ハンドラー・コードからメトリクス・データを出力する をご参照ください。

キー

説明

metric.name

文字列

その行が記録するメトリックの名前。次のいずれかを使用します。

  • process.memory.usage: 実行中に消費されたメモリの量(バイト)。

  • process.cpu.utilization: ( CPU を使用)ハンドラーの言語によって測定方法が異なります。

詳細については、 ハンドラー・コードからメトリクス・データを出力する をご参照ください。

metric.unit

文字列

メートル法の単位。例えば、 bytes です。

metric_type

文字列

OpenTelemetry メトリックデータのメトリックポイントのタイプ。例えば、 sum または gauge

value_type

文字列

VALUE 列の値のデータ型。例えば、 DOUBLE または INT

{
  "metric": {
    "name": "process.memory.usage",
    "unit": "bytes"
  },
  "metric_type": "sum",
  "value_type": "INT"
}
Copy

SPAN RECORD_TYPE の場合

スパンは、関数とプロシージャの個々の実行を表します。ストアドプロシージャの場合は、単一のスパンが存在します。ユーザー定義関数の場合は、Snowflakeが実行スケジュールをどのように決定したかに応じて、1つの関数呼び出しに複数のスパンが存在する場合があります。

特定のクエリのスパンすべては、 TRACE 列の trace_id キーに同じ値を持ちます。

スパンの継続時間は、 start_timestamp 列と timestamp 列の値の差であり、それぞれスパン実行の開始時刻と終了時刻を示します。

スパンの ID とクエリトレースは、 TRACE 列の値で表されます。

Snowflakeは、以下に示すキーを使用して実行ごとに1つのスパンを作成します。

キー

説明

dropped_attributes_count

int

記録が最大値に達した後に無視される属性の数。

name

文字列

実行ファイルのハンドラがPythonで書かれている場合、これはデータを発行した関数やプロシージャのハンドラーを識別します。これは実行ファイルの種類によって以下のように異なります:

  • 手続き: ハンドラ関数名

  • ユーザー定義関数 (UDF): ハンドラー関数名

  • ユーザー定義テーブル関数 (UDTF): ハンドラー・クラス名

  • クライアントコード: スパンを開始したクライアントサイド API 名。

実行ファイルのハンドーがPython以外の言語で書かれている場合、これは snow.auto_instrumented のような固定値になります。

kind

文字列

固定値 SPAN_KIND_INTERNAL

parent_span_id

16進数文字列

現在のトレースが通過したプロシージャまたは UDF のスパンを識別します。この値が存在する場合、現在のプロシージャまたは UDF の呼び出しが、呼び出し連鎖の関係にある別のプロシージャによって行われたことを意味します。その「親」プロシージャの span_id の値は、この parent_span_id と同じです。

snow.process.memory.usage.max

文字列

任意。存在する場合、このスパンの実行中に使用されるメモリの最大量をバイト単位で指定します。

status

文字列

スパンが 未処理の例外 に対応する場合は、 STATUS_CODE_ERROR。それ以外の場合は、 STATUS_CODE_UNSET

ユーザー定義関数の場合、Snowflakeはスパンの属性を追加して、関数によって処理および出力された行数を示すことがあります。

SPAN_EVENT RECORD_TYPE の場合

スパンイベントは、上で説明したように、特定のスパン実行に関連付けられたイベント記録です。アプリケーションのニーズに合わせてイベントを作成できます。スパンイベントの数は128に制限されています。

TRACE 列の値は、イベントが作成されたスパンを識別します。

スパンイベントには単一のキー name があり、 RECORD_ATTRIBUTES 列に任意の属性を追加できます。

キー

説明

name

文字列

スパンイベントの名前。

RECORD_ATTRIBUTES 列

Snowflakeまたはーコードによって設定されたメタデータを使用してイベントを説明します。次のセクションで説明するように、値は行に含まれる記録の型によって異なります。

LOG RECORD_TYPE の場合

ログイベントが出力されたコード内の場所。コードファイルのパス、関数名、行番号などが含まれます。

以下の属性に加えて、 RECORD_ATTRIBUTES の値に含める独自の属性を追加することができます。

属性

説明

code.filepath

int

メッセージを生成したコードを含むファイル。

code.function

文字列

メッセージを生成した関数の名前。

code.lineno

int

メッセージを生成したコードの行番号。

code.namespace

int

メッセージを生成したコードの名前空間。

exception.message

文字列

未処理の例外 からのエラーメッセージ。

exception.type

文字列

未処理の例外 のクラス名。

exception.stacktrace

文字列

言語ランタイムによってフォーマットされた 未処理の例外 のスタックトレース。

exception.escaped

boolean

このエントリが 未処理の例外 からのものである場合は、 true

thread.id

int

ログイベントが作成されたスレッド。

thread.name

文字列

ログイベントが作成されたスレッド。

以下の例では、カスタム属性によって追加された employee.id を除き、すべての属性が Snowflake によって追加されています。

{
  "code.filepath": "main.scala",
  "code.function": "$anonfun$new$10",
  "code.lineno": 149,
  "code.namespace": "main.main$",
  "thread.id": 1,
  "thread.name": "main"
  "employee.id": "52307953446424"
}
Copy

SPAN RECORD_TYPE の場合

記録時にスパンに割り当てられる属性(存在する場合)。属性の名前と値は、コードまたはSnowflakeによって設定されます。

次のテーブルに、Snowflakeによって設定される可能性のある属性をリストします。

属性

説明

snow.input.rows

int

関数のスパンによって処理される入力行の数。

snow.output.rows

int

関数のスパンによって処理される出力行の数。

次の例のコードには、Snowflakeによって設定される属性が含まれています。

{
  "snow.input.rows": 12
  "snow.output.rows": 12
}
Copy

次の例のコードには、ハンドラーコードによって設定される属性が含まれています。

{
  "MyFunctionVersion": "1.1.0"
}
Copy

SPAN_EVENT RECORD_TYPE の場合

記録時にスパンイベントに割り当てられる属性(存在する場合)。属性の名前と値は、Snowflakeまたはユーザーコードによって設定されます。

次の例のコードには、ハンドラーコードによって設定される属性が含まれています。

{
  "mykey1": "value1",
  "mykey2": "value2"
}
Copy

RECORD_TYPE 列

イベントテーブルの行で記述される記録の種類を指定します。この列の値は、イベントテーブルにデータを含めることができる3種類の記録のどれであるかを識別します。

RECORD 列には、この記録のデータが含まれています。 RECORD_ATTRIBUTES 列には、この記録のメタデータが含まれます(存在する場合)。

次のテーブルに、この列に指定できる値をリストします。

列の値

説明

LOG

この行は、ハンドラーコードによって生成されたログエントリを表します。

SPAN

行はスパンを表します。

ストアドプロシージャの場合は、単一のスパンが存在します。並列化できるユーザー定義関数の場合は、関数が実行されるスレッドごとにスパンが存在します。スレッドの数は、関数が実行されるSnowflakeウェアハウスのサイズなど、複数の要因によって異なります。

スパンには複数のスパンイベントが含まれる場合があります。詳細については、 記録されたスパンデータ をご参照ください。

SPAN_EVENT

行はスパンイベントを表します。特定のスパンに関連付けられた複数のスパンイベント記録である場合があります。ハンドラーコードでは、ニーズに合わせてイベントを作成できます。スパンイベントの数は128に制限されています。

METRIC [1]

行はメトリックの観測値を表します。複数のメトリックの複数のオブザベーションを、特定のスパンに関連付けることがでまする。

RESOURCE 列

今後の使用のために予約されています。

RESOURCE_ATTRIBUTES 列

Snowflakeオブジェクトの観点からイベントのソースを説明します。

この列の値を構成する属性はSnowflakeによって設定され、変更できません。

イベントソースのリソース属性

属性名

属性の型

説明

snow.database.id

int

実行可能ファイルを含んでいるデータベースの内部/システム生成の識別子。

12345

snow.database.name

文字列

実行可能ファイルを含んでいるデータベースの名前。

MY_DATABASE

snow.executable.id

int

イベントを生成する実行可能ファイル(プロシージャ、関数、 SnowService など)の内部/システム生成の識別子。

12345

snow.executable.name

文字列

イベントを生成する実行可能ファイルの名前。たとえば、プロシージャ名、関数名、Streamlitアプリ名などです。

MY_UDF

snow.executable.runtime.version

文字列

実行言語のランタイムバージョン。これは、後述するように、その言語に固有の値となります:

  • Java: 11 または 17

  • JavaScript: 値なし

  • Python: 3.9 から 3.12

  • Scala: 2.12

  • SQL: 値なし

procedure

snow.executable.type

文字列

次のいずれかを使用します。

  • ストアドプロシージャの場合は procedure

  • ユーザー定義関数の場合は function

  • Snowflake スクリプトブロックなど、単一クエリからのイベントの場合は sql

  • Snowpark Container Servicesのサービス用の SnowparkContainers

  • Streamlitアプリの streamlit

procedure

snow.owner.id

int

実行可能ファイルに対する OWNERSHIP 権限を持つロールの内部/システム生成識別子。

1234

snow.owner.name

文字列

実行可能ファイルの OWNERSHIP 権限を持つロールの名前。

UDF_OWNER_RL

snow.schema.id

int

実行可能ファイルを含んでいるスキーマの内部/システム生成の識別子。

12345

snow.schema.name

文字列

実行可能ファイルを含んでいるスキーマの名前。

MY_SCHEMA

telemetry.sdk.language

文字列

リソース/SDK の言語。Snowflakeは、Java、scala、Python、JavaScript、SQLを使用します。

java

実行環境のリソース属性

属性

説明

db.user

文字列

関数またはプロシージャの場合、その関数またはプロシージャを実行するユーザーの名前。Streamlitアプリの場合、特定のイベントでアプリを表示していたユーザーの名前。

MY_USER_NAME

snow.query.id

文字列

クエリの ID。

01a6aeb7-0604-c466-0000-097127d13812

snow.release.version

文字列

イベントの生成時に実行されていたSnowflakeリリース

7.9.0

snow.session.id

int

実行可能ファイルを実行しているセッションの ID。

10

snow.session.role.primary.id

int

セッション内にあるプライマリロールの内部/システム生成の識別子。

10

snow.session.role.primary.name

文字列

セッション内のプライマリロールの名前。

MY_ROLE

snow.user.id

int

クエリを実行しているユーザーの内部/システム生成の識別子。

1234

snow.warehouse.id

int

イベントを生成するクエリを実行しているウェアハウスの内部/システム生成の識別子。

12345

snow.warehouse.name

文字列

イベントを生成するクエリを実行しているウェアハウスの名前。

MY_WAREHOUSE

アプリケーションのリソース属性

属性

説明

snow.application.consumer.name

文字列

Snowflake Native App の場合、コンシューマーアカウントの名前。

CONSUMER_NAME

snow.application.consumer.organization

文字列

Snowflake Native App の場合、コンシューマー組織の名前。

CONSUMER_ORG_NAME

snow.application.id

文字列

Snowflake Native App の場合、アプリの内部/システム生成識別子。

ABCZN3J3

snow.application.name

文字列

Snowflake Native App の場合、アプリケーションの名前。

MY_INSTALLED_APP_NAME

snow.application.package.name

文字列

Snowflake Native App の場合、アプリケーションパッケージの名前。

MY_INSTALLED_PACKAGE_NAME

snow.listing.global_name

文字列

Snowflake Native App の場合、リスティングの内部/システム生成識別子。

GZYZN3J3

snow.listing.name

文字列

Snowflake Native App の場合は、リスティングの名前。

MY_LISTING_NAME

Snowflakeバージョンのリソース属性

属性

説明

service.version

文字列

関連性がある場合は、実行可能ファイルのバージョン。 snow.versionsnow.patch が存在する場合は、これらをドットで結合した組み合わせ。標準の OpenTelemetry 属性。

2.3.1

snow.patch

文字列

実行中の実行可能ファイルのパッチレベル。

1

snow.version

文字列

実行中の実行可能ファイルのバージョン。

2.3

{
  "db.user": "MYUSERNAME",
  "snow.database.id": 13,
  "snow.database.name": "MY_DB",
  "snow.executable.id": 197,
  "snow.executable.name": "FUNCTION_NAME(I NUMBER):ARG_NAME(38,0)",
  "snow.executable.type": "FUNCTION",
  "snow.owner.id": 2,
  "snow.owner.name": "MY_ROLE",
  "snow.query.id": "01ab0f07-0000-15c8-0000-0129000592c2",
  "snow.schema.id": 16,
  "snow.schema.name": "PUBLIC",
  "snow.session.id": 1275605667850,
  "snow.session.role.primary.id": 2,
  "snow.session.role.primary.name": "MY_ROLE",
  "snow.user.id": 25,
  "snow.warehouse.id": 5,
  "snow.warehouse.name": "MYWH",
  "telemetry.sdk.language": "python"
}
Copy

SCOPE 列

ログイベントの場合は、ログエントリを作成するクラスの名前など、イベントを出力したコードの名前空間。これはトレースイベントには使用されません。

次のテーブルに、この列に含めることができる属性をリストします。

スコープ値

属性

説明

name

文字列

イベントを出力するコードの名前空間。

com.sample.MyClass

{
  "name": "com.sample.MyClass"
}
Copy

SCOPE_ATTRIBUTES 列

今後の使用のために予約されています。

START_TIMESTAMP 列

UTC タイムスタンプとしてスパンが開始された時刻。

RECORD_TYPE 列の値

START_TIMESTAMP 値の説明

LOG

不使用。

SPAN

スパンの開始時刻。

SPAN_EVENT

不使用。

METRIC [2]

RECORD 列 metric_type 値が sum の場合、これはメトリックが収集された時間です。 metric_type の値が gauge の場合は使用されません。

TIMESTAMP 列

イベントが出力された時刻。次のテーブルにリストするように、値の意味は、行が表す記録の型によって異なります。

RECORD_TYPE 列の値

TIMESTAMP 値の説明

LOG

イベントが出力されたウォールクロック時刻。

SPAN

実行が終了した時刻。

SPAN_EVENT

イベントが出力されたウォールクロック時刻。

TRACE 列

関数とプロシージャの実行を表す一意の識別子。

RECORD_TYPE 列の値

TRACE 値の説明

LOG

不使用。

SPAN

trace_id および span_id

SPAN_EVENT

trace_id および span_id

トレース値

次のテーブルに、この列に含めることができる属性をリストします。

属性

説明

span_id

16進数文字列

スレッドモデルに関連付けられた一意の識別子。プロシージャはシングルスレッドであり、単一の span_id 値を持ちます。Snowflakeによって複数のスレッド(複数の行など)で実行される関数には、複数の span_id 値が含まれる場合があります。

現在のスパンが、トレース内の別のプロシーや UDF を呼び出したプロシージャーのものである場合、この span_id の値は、呼び出したプロシージャや UDF のスパンの RECORD 列 parent_span_id の値と同じになります。

b4c28078330873a2

trace_id

16進数文字列

クエリからの呼び出しに対する一意の識別子。ストアド・プロシージャが呼び出しの連鎖の中で呼び出されていない場合、各呼び出しはそれ自身の trace_id 値を持ります。クエリ内では、クエリから行われたすべての関数の呼び出しは同じ trace_id 値を共有します。

プロシージャーがコールチェーン内の他のプロシージャや UDF から呼び出される場合、そのプロシージャは、チェーン内の他のプロシージャや UDFs と同じ trace_id 値を持ちます。

この値はクエリごとに一意であり、クエリ内のすべてのスパンで同一です。これを使用して、単一のクエリ実行内のイベントをグループ化できます。

6992e9febf0b97f45b34a62e54936adb

次の例のコードは、スパンまたはスパンイベントに存在する属性を示しています。

{
  "span_id": "b4c28078330873a2",
  "trace_id": "6992e9febf0b97f45b34a62e54936adb"
}
Copy

VALUE 列

  • ログイベントの場合、通常、ログメッセージになります。ログに記録されたイベントが 未処理の例外 の場合、この列の値は単に exception となります。

  • メトリックの場合、これはメトリックの数値です。[3]

VALUE 列の型は(STRING ではなく) VARIANT であるため、 JavaScript などの一部の言語では文字列以外の値を持つことができることに注意してください。