Snowflakeスクリプトでのトレースイベントの出力

Snowflake SYSTEM 関数を使用すると、Snowflakeスクリプトで記述された関数またはプロシージャハンドラーからトレースイベントを出力できます。

トレースイベントを出力する前に、必要なデータがイベントテーブルに格納されるようにトレースレベルが設定されていることを確認してください。詳細については、 トレースレベルの設定 をご参照ください。

注釈

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

イベントテーブルで SELECT コマンドを実行すると、格納されたトレースイベントデータにアクセスできます。詳細については、 トレースデータへのアクセス をご参照ください。

Snowflakeでのログの設定とメッセージの取得に関する一般的な情報については、 関数とプロシージャのイベントをトレースする をご参照ください。

注釈

トレースイベントを追加する際に留意すべきガイドラインについては、 トレースイベントを追加するための一般的なガイドライン をご参照ください。

トレースイベントの追加

トレースイベントを追加するには、 SYSTEM$ADD_EVENT (Snowflakeスクリプトの場合) 関数を呼び出してイベントの名前を渡します。オプションで、属性(キーと値のペア)をイベントに関連付けることもできます。

次の例のコードは、2つのイベント、 SProcEmptyEventSProcEventWithAttributes を追加します。 SProcEventWithAttributes を使用すると、コードは2つの属性、 key1key2 も追加します。

SYSTEM$ADD_EVENT("SProcEmptyEvent")
SYSTEM$ADD_EVENT("SProcEventWithAttributes", {"key1": "value1", "key2": "value2"})
Copy

これらのイベントを追加すると、イベントテーブルに2つの行が作成され、それぞれの RECORD 列に異なる値が含まれます。

{
  "name": "SProcEmptyEvent"
}
Copy
{
  "name": "SProcEventWithAttributes"
}
Copy

SProcEventWithAttributes イベント行には、行の RECORD_ATTRIBUTES 列に次の属性が含まれています。

{
  "key1": "value1",
  "key2": "value2"
}
Copy

スパン属性の追加

SYSTEM$SET_SPAN_ATTRIBUTES 関数を呼び出すと、スパンに関連付けられた属性(キーと値のペア)を設定できます。

スパンの詳細については、 Snowflakeがトレースイベントを表す方法 をご参照ください。

SYSTEM$SET_SPAN_ATTRIBUTES (Snowflakeスクリプトの場合) 関数は次の形式で使用できます。

SYSTEM$SET_SPAN_ATTRIBUTES(<object>);
Copy

条件

  • object は、このトレースイベントの属性を指定するキーと値のペアを持つSnowflakeスクリプトオブジェクトです。

次の例のコードは4つの属性を作成し、それらの値を設定します。

SYSTEM$SET_SPAN_ATTRIBUTES('{'attr1':'value1', 'attr2':true}');
Copy

これらの属性を設定すると、イベントテーブルの RECORD_ATTRIBUTES 列が次のようになります。

{
  "attr1": "value1",
  "attr2": "value2"
}
Copy

次の例のコードでは、 SYSTEM$ADD_EVENT 関数を使用して、 name_a という名前のイベントと name_b という名前のイベントを追加します。 name_b では、2 つの属性 scorepass が関連付けられます。このコードは、 SYSTEM$SET_SPAN_ATTRIBUTES を使用して、スパンの2つの属性、 attr1attr2 を設定します。

create procedure MYPROC()
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("{'attr1':'value1', 'attr2':true}");

    return 3.14;
end;
$$
;
Copy
call MYPROC();
Copy