在 Snowflake Scripting 中发出跟踪事件¶
可使用 Snowflake SYSTEM
函数,从使用 Snowflake Scripting 编写的函数或过程处理程序发出跟踪事件。
在发出跟踪事件之前,请确保已设置跟踪级别,以便将所需数据存储在事件表中。有关更多信息,请参阅 设置跟踪级别。
备注
在开始发出跟踪事件之前,必须设置事件表。有关更多信息,请参阅 设置事件表。
您可以通过对事件表执行 SELECT 命令,来访问存储的跟踪事件数据。有关更多信息,请参阅 访问跟踪数据。
有关在 Snowflake 中设置日志记录和检索消息的一般信息,请参阅 针对函数和过程的跟踪事件。
备注
有关添加跟踪事件时要牢记的准则,请参阅 添加跟踪事件的一般准则。
添加跟踪事件¶
可通过调用 SYSTEM$ADD_EVENT(适用于 Snowflake Scripting) 函数并传递跟踪事件的名称来添加跟踪事件。您还可以选择将属性(键值对)与事件相关联。
以下示例中的代码添加了两个事件:SProcEmptyEvent
和 SProcEventWithAttributes
。通过 SProcEventWithAttributes
,该代码还添加了两个属性:key1
和 key2
。
SYSTEM$ADD_EVENT('SProcEmptyEvent');
SYSTEM$ADD_EVENT('SProcEventWithAttributes', {'key1': 'value1', 'key2': 'value2'});
添加这些事件会在事件表中添加两行,每行在列中 RECORD 具有不同的值:
{
"name": "SProcEmptyEvent"
}
{
"name": "SProcEventWithAttributes"
}
SProcEventWithAttributes
事件行包含行的 RECORD_ATTRIBUTES 列中的以下属性:
{
"key1": "value1",
"key2": "value2"
}
添加 Span 属性¶
您可以通过调用 SYSTEM$SET_SPAN_ATTRIBUTES 函数来设置与 Span 关联的属性(键值对)。
有关 Span 的详细信息,请参阅 Snowflake 如何表示跟踪事件。
SYSTEM$SET_SPAN_ATTRIBUTES (适用于 Snowflake Scripting) 函数提供以下形式:
SYSTEM$SET_SPAN_ATTRIBUTES(<object>);
其中
object
是一个 Snowflake Scripting 对象,它具有键值对,用于指定此跟踪事件的属性。
以下示例中的代码创建四个属性并设置其值:
SYSTEM$SET_SPAN_ATTRIBUTES('{'attr1':'value1', 'attr2':true}');
设置这些属性会导致事件表的 RECORD_ATTRIBUTES 列中出现以下内容:
{
"attr1": "value1",
"attr2": "value2"
}
示例¶
以下示例中的代码使用 SYSTEM$ADD_EVENT 函数添加一个名为 name_a
的事件和一个名为 name_b
的事件。name_b
关联两个属性,即 score
和 pass
。该代码还使用 SYSTEM$SET_SPAN_ATTRIBUTES 设置两个 Span 属性,即 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();