Snowflake Scriptingでのトレースイベントの出力¶
Snowflake SYSTEM
関数を使用すると、Snowflakeスクリプトで記述された関数またはプロシージャハンドラーからトレースイベントを出力できます。
トレースイベントを出力する前に、必要なデータがイベントテーブルに格納されるようにトレースレベルが設定されていることを確認してください。詳細については、 ロギング、メトリクス、トレースのレベル設定 をご参照ください。
注釈
トレースイベントの出力を開始する前に、イベントテーブルを設定する必要があります。詳細については、 イベントテーブルの概要 をご参照ください。
イベントテーブルで SELECT コマンドを実行すると、格納されたトレースイベントデータにアクセスできます。詳細については、 トレースデータの表示 をご参照ください。
Snowflakeでのログの設定とメッセージの取得に関する一般的な情報については、 関数とプロシージャのイベントをトレースする をご参照ください。
注釈
トレースイベントを追加する際に留意すべきガイドラインについては、 トレースイベントを追加するための一般的なガイドライン をご参照ください。
トレースイベントの追加¶
トレースイベントを追加するには、 SYSTEM$ADD_EVENT (Snowflakeスクリプトの場合) 関数を呼び出してイベントの名前を渡します。オプションで、属性(キーと値のペア)をイベントに関連付けることもできます。
次の例のコードは、2つのイベント、 SProcEmptyEvent
と SProcEventWithAttributes
を追加します。 SProcEventWithAttributes
を使用すると、コードは2つの属性、 key1
と key2
も追加します。
SYSTEM$ADD_EVENT('SProcEmptyEvent');
SYSTEM$ADD_EVENT('SProcEventWithAttributes', {'key1': 'value1', 'key2': 'value2'});
これらのイベントを追加すると、イベントテーブルに2つの行が作成され、それぞれの RECORD 列に異なる値が含まれます。
{
"name": "SProcEmptyEvent"
}
{
"name": "SProcEventWithAttributes"
}
SProcEventWithAttributes
イベント行には、行の RECORD_ATTRIBUTES 列に次の属性が含まれています。
{
"key1": "value1",
"key2": "value2"
}
スパン属性の追加¶
SYSTEM$SET_SPAN_ATTRIBUTES 関数を呼び出すと、スパンに関連付けられた属性(キーと値のペア)を設定できます。
スパンの詳細については、 Snowflakeがトレースイベントを表す方法 をご参照ください。
SYSTEM$SET_SPAN_ATTRIBUTES (Snowflakeスクリプトの場合) 関数は次の形式で使用できます。
SYSTEM$SET_SPAN_ATTRIBUTES(<object>);
条件
object
は、このトレースイベントの属性を指定するキーと値のペアを持つSnowflakeスクリプトオブジェクトです。
次の例のコードは4つの属性を作成し、それらの値を設定します。
SYSTEM$SET_SPAN_ATTRIBUTES('{'attr1':'value1', 'attr2':true}');
これらの属性を設定すると、イベントテーブルの RECORD_ATTRIBUTES 列が次のようになります。
{
"attr1": "value1",
"attr2": "value2"
}
例¶
次の例のコードでは、 SYSTEM$ADD_EVENT 関数を使用して、 name_a
という名前のイベントと name_b
という名前のイベントを追加します。 name_b
では、2 つの属性 score
と pass
が関連付けられます。このコードは、 SYSTEM$SET_SPAN_ATTRIBUTES を使用して、スパンの2つの属性、 key1
と key2
を設定します。
CREATE OR REPLACE PROCEDURE pi_proc()
RETURNS DOUBLE
LANGUAGE SQL
AS $$
BEGIN
-- Add an event without attributes
SYSTEM$ADD_EVENT('name_a');
-- Add an event with attributes
LET attr := {'score': 89, 'pass': TRUE};
SYSTEM$ADD_EVENT('name_b', attr);
-- Set attributes for the span
SYSTEM$SET_SPAN_ATTRIBUTES({'key1': 'value1', 'key2': TRUE});
RETURN 3.14;
END;
$$;
CALL pi_proc();