事件表列¶
事件表 是一种特殊类型的数据库表,具有一组预定义的列。该表的结构旨在支持用于处理遥测数据的框架的 OpenTelemetry (https://opentelemetry.io/) 数据模型。
有关使用事件表的更多信息,请参阅 使用事件表。
事件表列¶
事件表包含以下列:
列 |
数据类型 |
描述 |
---|---|---|
TIMESTAMP_NTZ |
事件创建时的 UTC 时间戳。对于表示时间 span 的事件,这是时间 span 的结尾。 |
|
TIMESTAMP_NTZ |
对于表示时间 span 的事件(如跟踪事件),时间 span 的开头作为 UTC 时间戳。 |
|
TIMESTAMP_NTZ |
用于日志的 UTC 时间。当前值与 TIMESTAMP 的值相同。 |
|
OBJECT |
跟踪所有信号类型的上下文。包含字符串值 |
|
OBJECT |
保留以供将来使用。 |
|
OBJECT |
用于标识事件源(例如数据库、架构、用户、仓库等)的属性。 |
|
OBJECT |
事件的作用域。例如,日志的类名。 |
|
OBJECT |
保留以供将来使用。 |
|
STRING |
事件类型。以下其中一项:
|
|
OBJECT |
每种记录类型的固定值,如 RECORD 列 中所述。 |
|
OBJECT |
每种记录类型的变量属性,如 RECORD_ATTRIBUTES 列 中所述。 |
|
VARIANT |
主要事件值。 |
|
ARRAY |
保留以供将来使用。 |
按事件类型获取的数据¶
日志数据¶
属性 |
描述 |
---|---|
当前值与 TIMESTAMP 的值相同。 |
|
:ref:` 日志事件 <label-event_table_record_column_log>` 记录的严重性级别。 |
|
代码中发出日志事件的位置。这些值因语言而异,但可以包括代码文件路径、函数名称、行号等。 |
|
事件类型: |
|
用于标识事件源(例如数据库、架构、用户、仓库等)的属性。 |
|
事件发生的作用域,例如创建日志事件的类的名称。 |
|
事件创建时的时间戳。 |
|
日志消息。 |
指标数据¶
备注
指标数据收集是适用于所有账户的预览版功能。
属性 |
描述 |
---|---|
对于指标事件,为包含指标名称和单位的对象。 |
|
事件类型: |
|
用于标识事件源(例如数据库、架构、用户或仓库)的属性。 |
|
当 RECORD 列 |
|
事件创建时的时间戳。 |
|
指标的数值。 |
跟踪事件的数据¶
属性 |
描述 |
---|---|
与 :ref:` span <label-event_table_record_attributes_span>` 或 :ref:` span 事件 <label-event_table_record_attributes_span_event>` 关联的属性数据。 |
|
事件类型: |
|
用于标识事件源(例如数据库、架构、用户、仓库等)的属性。 |
|
适用于 span、span 开始的时间。不适用于 span 事件。 |
|
事件创建时的时间戳。 |
|
标识符 |
EXEMPLARS 列¶
保留以供将来使用。
OBSERVED_TIMESTAMP 列¶
日志的 UTC 时间戳。不用于跟踪事件。
RECORD 列¶
提供有关事件的核心信息,包括日志事件的日志级别或跟踪事件(span 或 span 事件记录)的名称。
针对记录的属性(如果有)记录在 RECORD_ATTRIBUTES 列 中。
此列包含的值因 RECORD_TYPE 列 (LOG
、SPAN
或 SPAN_EVENT
)的值而异,正如以下部分中所述。
针对 LOG
RECORD_TYPE¶
当 RECORD_TYPE 列值为 LOG
时,RECORD 列值包含日志消息的严重性。列值可能包含以下键:
键 |
类型 |
描述 |
---|---|---|
|
STRING |
日志严重性的文本。以下其中一项:
当日志条目用于 :doc:` 未处理的异常 </developer-guide/logging-tracing/unhandled-exception-messages>` 时,此值是当前语言运行时的最高严重性错误级别。例如,对于用 Python 编写的代码,其值为 |
示例¶
{
"severity_text": "INFO"
}
针对 METRIC
RECORD_TYPE¶
备注
指标数据收集是适用于所有账户的预览版功能。
指标为 CPU 和由 Snowflake 生成的内存数据。您可以使用此数据来分析资源消耗。
执行处理程序语言及其环境会显著影响指标数据的含义。有关更多信息,请参阅 使用处理程序代码发送指标数据。
键 |
类型 |
描述 |
---|---|---|
|
字符串 |
按行记录的指标的名称。以下其中一项:
有关更多信息,请参阅 使用处理程序代码发送指标数据。 |
|
字符串 |
指标的单位;例如, |
|
字符串 |
指标数据的 OpenTelemetry 指标点类型,例如, |
|
字符串 |
VALUE 列中值的数据类型,例如, |
示例¶
{
"metric": {
"name": "process.memory.usage",
"unit": "bytes"
},
"metric_type": "sum",
"value_type": "INT"
}
针对 SPAN
RECORD_TYPE¶
span 表示函数和过程的单独执行。对于存储过程,有单个 span。对于用户定义的函数,单个函数调用可能有多个 span,具体取决于 Snowflake 如何决定计划执行。
对于 trace_id
列的 TRACE
键,给定查询的所有 span 具有相同的值。
span 的持续时间是 start_timestamp
和 timestamp
列中的值之间的差值,分别指示 span 执行的开始时间和结束时间。
span 和查询跟踪的 ID 使用 TRACE 列中的值表示。
Snowflake 将为每个执行创建一个 span,具有如下所示的键:
键 |
类型 |
描述 |
---|---|---|
|
整数 |
达到记录的最大值后忽略的属性数。 |
|
字符串 |
当可执行文件的处理程序用 Python 编写时,那么它就标识了发出数据的函数或过程的处理程序。这因可执行文件类型而异,如下所示:
当可执行文件的处理程序用 Python 以外的语言编写时,这是一个固定值,例如 |
|
字符串 |
固定值 |
|
十六进制字符串 |
标识当前跟踪所经过的过程或 UDF 的 span。如果存在此值,则表示当前过程或 UDF 调用是由调用链关系中的另一个过程执行的。该“父”过程的 |
|
字符串 |
可选。如果存在,则指定在此 span 执行期间使用的最大内存量(以字节为单位)。 |
|
字符串 |
当 span 对应 :doc:` 未处理的异常 </developer-guide/logging-tracing/unhandled-exception-messages>` 时,则为 |
对于用户定义的函数,Snowflake 可以添加 span 属性,指示函数处理和发出的行数。
针对 SPAN_EVENT
RECORD_TYPE¶
span 事件是附加到特定 span 执行的事件记录,如上所述。您可以创建事件以满足应用程序的需求。span 事件数上限为 128 个。
TRACE 列的值将标识事件创建的 span。
span 事件具有单个键 name
,并且可以在 RECORD_ATTRIBUTES 列中添加任意属性。
键 |
类型 |
描述 |
---|---|---|
|
字符串 |
span 事件的名称。 |
RECORD_ATTRIBUTES 列¶
使用由 Snowflake 或代码设置的元数据描述事件。该值将因行包含的记录类型而异,如以下部分所述。
针对 LOG
RECORD_TYPE¶
代码中发出日志事件的位置,包括代码文件路径、函数名称、行号等。
除了下面列出的属性外,您还可以添加自己的属性,以便将其包含在 RECORD_ATTRIBUTES 值中。
属性 |
类型 |
描述 |
---|---|---|
|
整数 |
包含生成消息的代码的文件。 |
|
字符串 |
生成消息的函数的名称。 |
|
整数 |
代码中生成消息的行号。 |
|
整数 |
生成消息的代码的命名空间。 |
|
字符串 |
来自 :doc:` 未处理异常 </developer-guide/logging-tracing/unhandled-exception-messages>` 的错误消息。 |
|
字符串 |
:doc:` 未处理异常 </developer-guide/logging-tracing/unhandled-exception-messages>` 的类的名称。 |
|
字符串 |
由语言运行时格式化的 :doc:` 未处理异常 </developer-guide/logging-tracing/unhandled-exception-messages>` 的堆栈跟踪。 |
|
布尔 |
如果此条目来自 :doc:` 未处理的异常 </developer-guide/logging-tracing/unhandled-exception-messages>`,则为 |
|
整数 |
用于创建日志事件的线程。 |
|
字符串 |
用于创建日志事件的线程。 |
示例¶
在下面的示例中,所有属性都是由 Snowflake 添加的,但由自定义属性添加 employee.id
的除外。
{
"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"
}
针对 SPAN
RECORD_TYPE¶
记录 span 时为 span 分配的属性(如果有)。属性名称和值由代码或 Snowflake 设置。
下表列出了 Snowflake 可能设置的属性。
属性 |
类型 |
描述 |
---|---|---|
|
整数 |
函数的 span 处理的输入行数。 |
|
整数 |
函数的 span 成功处理的输出行数。 |
示例¶
以下示例中的代码包括 Snowflake 设置的属性。
{
"snow.input.rows": 12
"snow.output.rows": 12
}
示例¶
以下示例中的代码包括由处理程序代码设置的属性。
{
"MyFunctionVersion": "1.1.0"
}
针对 SPAN_EVENT
RECORD_TYPE¶
记录 span 事件时为事件分配的属性(如果有)。属性名称和值可以由 Snowflake 或用户代码设置。
示例¶
以下示例中的代码包括由处理程序代码设置的属性。
{
"mykey1": "value1",
"mykey2": "value2"
}
RECORD_TYPE 列¶
指定事件表行描述的记录的类型。此列的值标识事件表可能包含三类记录中哪类记录的数据。
RECORD 列包含此记录的数据。RECORD_ATTRIBUTES 列包含此记录的元数据(如果有)。
下表列出了此列的可能值。
列值 |
描述 |
---|---|
|
该行表示处理程序代码生成的日志条目。 |
|
该行表示一个 span。 对于存储过程,有单个 span。对于可以并行化的用户定义函数,执行该函数的每个线程都有一个 span。线程数将因多种因素而异,包括执行函数的 Snowflake 仓库的大小。 一个 span 可以包含多个 span 事件。有关更多信息,请参阅 记录的 span 数据。 |
|
该行表示一个 span 事件。一个特定 span 可以附加多个 span 事件记录。处理程序代码可能会创建事件以满足您的需求。span 事件数上限为 128 个。 |
|
该行表示指标的观测值。多个指标的多个观测值可以与特定 span 相关联。 |
RESOURCE 列¶
保留以供将来使用。
RESOURCE_ATTRIBUTES 列¶
根据 Snowflake 对象描述事件的源。
构成此列值的属性由 Snowflake 设置,无法更改。
事件源的资源属性¶
属性名称 |
属性类型 |
描述 |
示例 |
---|---|---|---|
|
整数 |
包含可执行文件的数据库的内部/系统生成的标识符。 |
|
|
字符串 |
包含可执行文件的数据库的名称。 |
|
|
整数 |
生成事件的可执行文件(过程、函数 SnowService 等)的内部/系统生成的标识符。 |
|
|
字符串 |
生成事件的可执行文件的名称。例如,这可能是过程、函数或 Streamlit 应用程序的名称。 |
|
|
字符串 |
可执行语言的运行时版本。这将是特定于语言的值,如下所述:
|
|
|
字符串 |
以下其中一项:
|
|
|
整数 |
内部/系统生成的具有可执行文件 OWNERSHIP 权限的角色标识符。 |
|
|
字符串 |
具有可执行文件的 OWNERSHIP 权限的角色的名称。 |
|
|
整数 |
包含可执行文件的架构的内部/系统生成的标识符。 |
|
|
字符串 |
包含可执行文件的架构的名称。 |
|
|
字符串 |
资源/SDK 的语言。Snowflake 使用 Java、Scala、Python、JavaScript 和 SQL。 |
|
执行环境的资源属性¶
属性 |
类型 |
描述 |
示例 |
---|---|---|---|
|
字符串 |
对于函数或过程,这是指执行该函数或过程的用户的名称。对于 Streamlit 应用程序,这是指在某一事件中查看该应用程序的用户的名称。 |
|
|
字符串 |
查询的 ID。 |
|
|
字符串 |
生成事件时运行的 Snowflake 版本 |
|
|
整数 |
运行可执行文件的会话的 ID。 |
|
|
整数 |
会话中主要角色的内部/系统生成的标识符。 |
|
|
字符串 |
会话中主要角色的名称。 |
|
|
整数 |
运行查询的用户的内部/系统生成的标识符。 |
|
|
整数 |
运行(生成事件的)查询的仓库的内部/系统生成的标识符。 |
|
|
字符串 |
运行(生成事件的)查询的仓库的名称。 |
|
应用程序的资源属性¶
属性 |
类型 |
描述 |
示例 |
---|---|---|---|
|
字符串 |
适用于 Snowflake Native App,是使用者账户的名称。 |
|
|
字符串 |
适用于 Snowflake Native App,是使用者组织的名称。 |
|
|
字符串 |
适用于 Snowflake Native App,是应用程序的内部/系统生成的标识符。 |
|
|
字符串 |
适用于 Snowflake Native App,是应用程序的名称。 |
|
|
字符串 |
适用于 Snowflake Native App,是应用程序包的名称。 |
|
|
字符串 |
适用于 Snowflake Native App,是列表的内部/系统生成的标识符。 |
|
|
字符串 |
适用于 Snowflake Native App,是列表的名称。 |
|
Snowflake 版本的资源属性¶
属性 |
类型 |
描述 |
示例 |
---|---|---|---|
|
字符串 |
可执行文件的版本(如果相关)。由它们存在的点联接的 |
|
|
字符串 |
正在运行的可执行文件的补丁级别。 |
|
|
字符串 |
正在运行的可执行文件的版本。 |
|
示例¶
{
"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"
}
SCOPE 列¶
适用于日志事件,发出事件的代码的命名空间,例如创建日志条目的类的名称。这不用于跟踪事件。
下表列出了此列中可能包含的属性。
范围值¶
属性 |
类型 |
描述 |
示例 |
---|---|---|---|
|
字符串 |
发出事件的代码的命名空间。 |
|
示例¶
{
"name": "com.sample.MyClass"
}
SCOPE_ATTRIBUTES 列¶
保留以供将来使用。
START_TIMESTAMP 列¶
span 以 UTC 时间戳开始的时间。
RECORD_TYPE 列值 |
START_TIMESTAMP 值描述 |
---|---|
|
未使用。 |
|
span 开始的时间。 |
|
未使用。 |
|
当 RECORD 列 |
指标数据收集是适用于所有账户的预览版功能。
TIMESTAMP 列¶
发出事件的时间。该值的含义将因行所表示的记录类型而异,如下表所示:
RECORD_TYPE 列值 |
TIMESTAMP 值描述 |
---|---|
|
发出事件的挂钟时间。 |
|
执行结束的时间。 |
|
发出事件的挂钟时间。 |
TRACE 列¶
表示函数和过程执行的唯一标识符。
RECORD_TYPE 列值 |
TRACE 值描述 |
---|---|
|
未使用。 |
|
|
|
|
跟踪值¶
下表列出了此列中可能包含的属性。
属性 |
类型 |
描述 |
示例 |
---|---|---|---|
|
十六进制字符串 |
线程模型的唯一标识符。过程,将为单线程,将具有单个 如果当前 span 来自一个调用了另一个存储过程的存储过程或跟踪中的 UDF,则此 |
|
|
十六进制字符串 |
从查询发出的调用的唯一标识符。当存储过程没有在调用链中被调用时,每次调用都有自己的 当一个过程被另一个过程或调用链中的 UDF 调用时,它与链中的其他过程和 UDFs 具有相同的 此值对于每个查询均唯一,并且对于查询中的所有 span 均相同。您可以使用它对单个查询执行中的事件进行分组。 |
|
示例¶
以下示例中的代码显示 span 或 span 事件将存在的属性。
{
"span_id": "b4c28078330873a2",
"trace_id": "6992e9febf0b97f45b34a62e54936adb"
}
VALUE 列¶
对于日志事件,这通常是日志消息。当记录的事件是针对 :doc:` 未处理的异常 </developer-guide/logging-tracing/unhandled-exception-messages>` 时,此列中的值将仅为
exception
。对于指标,这是指标的数值。[3]
请注意,VALUE 列的类型为 VARIANT(不是 STRING),因此它可以具有某些语言(例如 JavaScript)的非字符串值。
指标数据收集是适用于所有账户的预览版功能。