事件表概述

当您的 Snowflake 对象(包括过程和 UDFs)发出遥测数据时,Snowflake 将数据收集到事件表中,该表的数据可用于查询。Snowflake 默认包含一个事件表,但您也可以创建一个新表。

要收集遥测数据,您必须具有 一个活动事件表设置遥测级别 以允许收集数据。如果您还没有活动事件表,Snowflake 会将默认事件表设为活动事件表。

收集遥测数据时将产生成本。要了解这些成本,或者减少或避免这些成本,请参阅 遥测数据收集成本

什么是事件表?

事件表是一种特殊的数据库表,具有一组预定义的列。该表的 结构 支持 OpenTelemetry`_(一个处理遥测数据的框架)的数据模型。当 :ref:`事件表处于活动状态 <label-logging_event_table_account> 时,Snowflake 将收集表中的遥测数据(包括 Snowflake 本身生成的数据和您通过使用某些 APIs 检测处理程序代码而发出的数据)。可通过执行 SQL 查询来查看收集的数据。

安装后,Snowflake 包含一个 默认事件表,名为 SNOWFLAKE.TELEMETRY.EVENTS。此事件表处于活动状态并收集数据,直到将其停用为止。您也可以 创建自己的表

要收集遥测数据,您必须具有一个活动事件表。有关更多信息,请参阅 使事件表处于活动状态

默认事件表

默认情况下,Snowflake 包含一个名为 SNOWFLAKE.TELEMETRY.EVENTS 的默认事件表。您可以使用此事件表,而不必创建自己的事件表。如果您还没有活动事件表,Snowflake 会将该默认表设为活动事件表。

默认情况下,Snowflake 还包括一个名为 SNOWFLAKE.TELEMETRY.EVENTS_VIEW 视图 的预定义视图,此视图可让您更安全地将事件表数据提供给广泛的用户。您可以 使用行访问策略管理对视图的访问

备注

默认事件表仅支持您创建的事件表或常规表所支持的 DDL 命令的一个子集。有关更多信息,请参阅 使用事件表

访问默认事件表和 EVENTS_VIEW 的角色

Snowflake 包含以下预定义的应用程序角色,您可以使用它们来管理对默认事件表以及 EVENTS_VIEW 视图的访问。

EVENTS_VIEWER:

具有对 EVENTS_VIEW 视图 执行 SELECT 语句的权限的角色。

EVENTS_ADMIN:

具有以下权限的角色:

管理对 EVENTS_VIEW 的访问

您可以使用 行访问策略 管理对 EVENTS_VIEW 视图中数据的访问。Snowflake 提供了存储过程,可用于向 EVENT_VIEW 视图添加和移除行访问策略。

备注

您必须拥有 EVENTS_ADMIN 角色 才能执行这些过程。

在 EVENT_VIEW 视图上使用行访问策略是一项 Enterprise Edition 功能。

创建事件表

要创建新的事件表,请执行 CREATE EVENT TABLE 命令并指定事件表的名称。

请注意,创建事件表时,不要指定表中的列。事件表已具有一组预定义列,如 事件表列 中所述。

您必须使用被授予 CREATE EVENT TABLE 权限的角色。

备注

当前不支持复制事件表。复制期间将跳过主数据库中包含的任何事件表。

例如,要创建名为 my_events 的事件表,请执行以下语句:

CREATE EVENT TABLE my_database.my_schema.my_events;
Copy

使事件表处于活动状态

要启用遥测数据的存储,必须将一个事件表指定为活动事件表。

要为账户指定活动事件表,请执行 ALTER ACCOUNT 命令,并将 EVENT_TABLE 参数设置为事件表的名称。

备注

要执行此命令,必须使用 ACCOUNTADMIN 角色。

此外,您还必须拥有以下 两项 权限:

有关执行 ALTER ACCOUNT 所需权限的更多信息,请参阅 有关 ALTER ACCOUNT 命令的文档

例如,要将数据库 my_database 中的架构 my_schema 中名为 my_events 的事件表设置为账户的活动事件表,请执行以下语句:

ALTER ACCOUNT SET EVENT_TABLE = my_database.my_schema.my_events;
Copy

如上所示,必须指定事件表的 完全限定名称

要取消事件表与账户的关联,请执行 ALTER ACCOUNT 命令并取消设置 EVENT_TABLE 参数。例如:

ALTER ACCOUNT UNSET EVENT_TABLE;
Copy

您可以使用以下 SHOW PARAMETERS 命令确认 EVENT_TABLE 值:

SHOW PARAMETERS LIKE 'event_table' IN ACCOUNT;
Copy
语言: 中文