在 Snowflake Scripting 中发出跟踪事件

可使用 Snowflake SYSTEM 函数,从使用 Snowflake Scripting 编写的函数或过程处理程序发出跟踪事件。

在发出跟踪事件之前,请确保已设置跟踪级别,以便将所需数据存储在事件表中。有关更多信息,请参阅 设置跟踪级别

备注

在开始发出跟踪事件之前,必须设置事件表。有关更多信息,请参阅 设置事件表

您可以通过对事件表执行 SELECT 命令,来访问存储的跟踪事件数据。有关更多信息,请参阅 访问跟踪数据

有关在 Snowflake 中设置日志记录和检索消息的一般信息,请参阅 针对函数和过程的跟踪事件

备注

有关添加跟踪事件时要牢记的准则,请参阅 添加跟踪事件的一般准则

添加跟踪事件

可通过调用 SYSTEM$ADD_EVENT(适用于 Snowflake Scripting) 函数并传递跟踪事件的名称来添加跟踪事件。您还可以选择将属性(键值对)与事件相关联。

以下示例中的代码添加了两个事件:SProcEmptyEventSProcEventWithAttributes。通过 SProcEventWithAttributes,该代码还添加了两个属性:key1key2

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

添加这些事件会在事件表中添加两行,每行在列中 RECORD 具有不同的值:

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

SProcEventWithAttributes 事件行包含行的 RECORD_ATTRIBUTES 列中的以下属性:

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

添加 Span 属性

您可以通过调用 SYSTEM$SET_SPAN_ATTRIBUTES 函数来设置与 Span 关联的属性(键值对)。

有关 Span 的详细信息,请参阅 Snowflake 如何表示跟踪事件

SYSTEM$SET_SPAN_ATTRIBUTES (适用于 Snowflake Scripting) 函数提供以下形式:

SYSTEM$SET_SPAN_ATTRIBUTES(<object>);
Copy

其中

  • object 是一个 Snowflake Scripting 对象,它具有键值对,用于指定此跟踪事件的属性。

以下示例中的代码创建四个属性并设置其值:

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 关联两个属性,即 scorepass。该代码还使用 SYSTEM$SET_SPAN_ATTRIBUTES 设置两个 Span 属性,即 key1key2

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;
  $$;
Copy
CALL pi_proc();
Copy
语言: 中文