事件表列¶
事件表 是一种特殊类型的数据库表,具有一组预定义的列。该表的结构旨在支持用于处理遥测数据的框架的 OpenTelemetry (https://opentelemetry.io/) 数据模型。
有关使用事件表的更多信息,请参阅 使用事件表。
事件表列¶
事件表包含以下列:
列 |
数据类型 |
描述 |
---|---|---|
TIMESTAMP_NTZ |
事件创建时的 UTC 时间戳。对于表示时间 span 的事件,这是时间 span 的结尾。 |
|
TIMESTAMP_NTZ |
对于表示时间 span 的事件(如跟踪事件),时间 span 的开头作为 UTC 时间戳。 |
|
TIMESTAMP_NTZ |
用于日志的 UTC 时间。当前值与 TIMESTAMP 的值相同。 |
|
OBJECT |
跟踪所有信号类型的上下文。包含字符串值 |
|
OBJECT |
保留以供将来使用。 |
|
OBJECT |
用于标识事件源(例如数据库、架构、用户、仓库、Openflow 等)的属性。 |
|
OBJECT |
事件的作用域。例如,日志的类名。 |
|
OBJECT |
保留以供将来使用。 |
|
STRING |
事件类型。以下其中一项:
|
|
OBJECT |
每种记录类型的固定值,如 RECORD 列 中所述。 |
|
OBJECT |
每种记录类型的变量属性,如 RECORD_ATTRIBUTES 列 中所述。 |
|
VARIANT |
主要事件值。 |
|
ARRAY |
保留以供将来使用。 |
按事件类型获取的数据¶
日志数据¶
属性 |
描述 |
---|---|
当前值与 TIMESTAMP 的值相同。 |
|
日志事件 记录的严重性级别。 |
|
代码中发出日志事件的位置。这些值因语言而异,但可以包括代码文件路径、函数名称、行号等。 |
|
事件类型: |
|
用于标识事件源(例如数据库、架构、用户、仓库等)的属性。 |
|
事件发生的作用域,例如创建日志事件的类的名称。 |
|
事件创建时的时间戳。 |
|
日志消息。 |
指标数据¶
属性 |
描述 |
---|---|
对于指标事件,为包含指标名称和单位的对象。 |
|
事件类型: |
|
用于标识事件源(例如数据库、架构、用户或仓库)的属性。 |
|
当 RECORD 列 |
|
事件创建时的时间戳。 |
|
指标的数值。 |
跟踪事件的数据¶
属性 |
描述 |
---|---|
与 :ref:` span <label-event_table_record_attributes_span>` 或 :ref:` span 事件 <label-event_table_record_attributes_span_event>` 关联的属性数据。 |
|
事件类型: |
|
用于标识事件源(例如数据库、架构、用户、仓库等)的属性。 |
|
适用于 span、span 开始的时间。不适用于 span 事件。 |
|
事件创建时的时间戳。 |
|
标识符 |
Iceberg 自动刷新事件的数据¶
在处理 Iceberg 自动刷新 的快照时,Snowflake 会将事件记录到您的事件表中。下表描述了 Iceberg 自动刷新事件的各列:
属性 |
描述 |
---|---|
事件创建时的时间戳。 |
|
Attributes that identify the Iceberg Auto Refresh event, such as database, schema, table, and catalog names. |
|
The event type |
|
有关与事件相关的操作状态的详细信息,包括名称和严重性。 |
|
与事件相关的属性。 |
|
特定于事件的其他信息。 |
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 编写时,那么它就标识了发出数据的函数或过程的处理程序。这因可执行文件类型而异,如下所示:
当使用 SQL 编写跟踪的代码时,例如在某个过程中执行的 SQL 语句,此为所执行语句的名称,例如 当可执行文件的处理程序用 Python 或 SQL 以外的语言编写时,这是一个固定值,例如 |
|
字符串 |
|
|
十六进制字符串 |
标识当前跟踪所经过的过程或 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 事件的名称。 |
适用于 Iceberg 自动刷新事件的 EVENT
RECORD_TYPE¶
键 |
类型 |
描述 |
---|---|---|
|
VARCHAR |
The name of the event; for example, |
|
VARCHAR |
The text for the event severity. One of the following values:
|
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 可能设置的属性。
属性 |
类型 |
描述 |
---|---|---|
|
字符串 |
在此时间段内跟踪的查询下执行的可执行文件的名称。 |
|
字符串 |
在此时间段内跟踪的查询中读取或修改的表的名称。 |
|
字符串 |
在此时间段内跟踪的查询中访问的视图的名称。 |
|
字符串 |
在此时间段内跟踪的 SQL 查询的文本。仅当启用 SQL 查询文本跟踪时包括在内。有关更多信息,请参阅 SQL 语句跟踪。 |
|
整数 |
函数的 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"
}
适用于 Iceberg 自动刷新事件的 EVENT
RECORD_TYPE¶
Attributes assigned to the EVENT event when it is recorded for Iceberg automated refresh. Attribute names and values are set by Snowflake.
属性 |
类型 |
描述 |
示例 |
---|---|---|---|
|
INTEGER |
在 Iceberg 自动刷新期间处理的 Iceberg 快照的 ID。如果自动刷新过程失败,则为 NULL。 |
|
RECORD_TYPE 列¶
Specifies the kind of record described by the event table row. This column's value identifies which of the various types of records for which the event table may contain data.
RECORD 列包含此记录的数据。RECORD_ATTRIBUTES 列包含此记录的元数据(如果有)。
下表列出了此列的可能值。
列值 |
描述 |
---|---|
|
该行表示处理程序代码生成的日志条目。 |
|
该行表示一个 span。 对于存储过程,有单个 span。对于可以并行化的用户定义函数,执行该函数的每个线程都有一个 span。线程数将因多种因素而异,包括执行函数的 Snowflake 仓库的大小。 一个 span 可以包含多个 span 事件。有关更多信息,请参阅 记录的 span 数据。 |
|
该行表示一个 span 事件。一个特定 span 可以附加多个 span 事件记录。处理程序代码可能会创建事件以满足您的需求。span 事件数上限为 128 个。 |
|
该行表示指标的观测值。多个指标的多个观测值可以与特定 span 相关联。 |
|
该行表示与特定操作(例如 Iceberg 自动刷新)相关的事件。 |
RESOURCE 列¶
保留以供将来使用。
RESOURCE_ATTRIBUTES 列¶
根据 Snowflake 对象描述事件的源。
构成此列值的属性由 Snowflake 设置,无法更改。
事件源的资源属性¶
备注
当事件源为 Iceberg 自动刷新时,仅设置以下属性类型:
snow.catalog.integration.name
snow.catalog.table.name
snow.database.name
snow.schema.name
snow.table.name
属性名称 |
属性类型 |
描述 |
示例 |
---|---|---|---|
|
字符串 |
与 Iceberg 自动刷新的可执行文件相关的目录集成的名称。 |
|
|
字符串 |
The name of the Iceberg table in the catalog. |
|
|
整数 |
包含可执行文件的数据库的内部/系统生成的标识符。 |
|
|
字符串 |
包含可执行文件的数据库的名称。 |
|
|
整数 |
生成事件的可执行文件(过程、函数 SnowService 等)的内部/系统生成的标识符。 |
|
|
字符串 |
生成事件的可执行文件的名称。例如,这可能是过程、函数或 Streamlit 应用程序的名称。 |
|
|
字符串 |
可执行语言的运行时版本。这将是特定于语言的值,如下所述:
|
|
|
字符串 |
以下其中一项:
|
|
|
整数 |
内部/系统生成的具有可执行文件 OWNERSHIP 权限的角色标识符。 |
|
|
字符串 |
具有可执行文件的 OWNERSHIP 权限的角色的名称。 |
|
|
整数 |
包含可执行文件的架构的内部/系统生成的标识符。 |
|
|
字符串 |
包含可执行文件的架构的名称。 |
|
|
字符串 |
The name of the table associated with the executable. |
|
|
字符串 |
资源/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
。对于指标,这是指标的数值。
请注意,VALUE 列的类型为 VARIANT(不是 STRING),因此它可以具有某些语言(例如 JavaScript)的非字符串值。
适用于 Iceberg 自动刷新事件的 EVENT
VALUE¶
键 |
类型 |
描述 |
示例 |
---|---|---|---|
|
VARCHAR |
Iceberg 元数据文件的位置,如果自动刷新过程失败,则可能为 NULL。 |
|
|
VARCHAR |
The state of the automated refresh process, which can be one of the following values:
|
|
|
VARCHAR |
如果 |
“Iceberg Auto Refresh encountered a fatal error.Please disable Auto Refresh and manually refresh the table before re-enabling Auto Refresh. FailedMetadataFile: s3://my_bucket/..., FailedSnapshotId: null.n” |
示例¶
{
"metadata_file_location": "<path>",
"snapshot_state": "errored",
"error_message": "<error_message>"
}