在提供商账户中设置和管理事件表

本主题介绍提供商如何为应用程序设置事件表和管理事件共享。

在每个区域的提供商组织中设置事件表

要收集使用者共享的日志消息和跟踪事件,提供商必须通过执行以下操作来设置事件表:

  1. 将账户设置为事件账户

  2. 在事件账户中创建事件表

  3. 将事件表设置为事件账户中的活动事件表

重要

如果在使用者安装应用程序之前,提供商在安装应用程序的区域内没有事件账户和活动事件表,则跟踪事件和日志消息将被丢弃。

将账户设置为事件账户

要存储共享日志和事件,提供商必须选择一个账户来保存事件表。这可以是提供商可访问的任何账户。但是,如果组织有多个提供商发布应用程序包,请考虑使用专用于存储来自使用者的共享事件的 Snowflake 账户。

以下限制适用于存储共享事件的账户:

  • 您必须使用 ORGADMIN 角色将账户设置为用于存储事件的账户。

  • 该账户必须拥活动事件表。

  • 指定的账户不能是以下任一账户:

    • 被锁定或暂停的账户。

    • 读者账户。

    • 试用账户。

    • Snowflake 管理账户。

备注

提供商只能在使用者安装应用程序的同一区域中收集日志和共享事件。提供商必须在使用者为应用程序配置事件共享的每个区域设置一个事件账户来存储共享事件。

要将某个账户设置为某个区域的事件账户,请调用 SYSTEM$SET_EVENT_SHARING_ACCOUNT_FOR_REGION 系统函数,如以下示例所示:

SELECT SYSTEM$SET_EVENT_SHARING_ACCOUNT_FOR_REGION('<snowflake_region>', '<region_group>', '<account_name>')
Copy

其中:

snowflake_region

指定账户所在的区域,例如: AWS_US_WEST_2, AWS_US_EAST_1

region_group

指定区域组,例如: PUBLIC。有关详细信息,请参阅 区域组

account_name

指定账户名称。如果在指定区域中已将其他账户设置为事件账户,则运行此命令会将事件账户更改为此处指定的账户。

在事件账户中创建事件表

要创建事件表,请运行 CREATE EVENT TABLE 命令,如以下示例所示:

CREATE EVENT TABLE event_db.event_schema.my_event_table;
Copy

此命令指定包含事件表的数据库和架构。

将事件表设置为活动事件表

一个账户可以有多个事件表,但一次只能将一个表设置为 Snowflake 账户中的活动事件表。如果没有活动事件表,则使用者共享的日志消息和跟踪事件将被丢弃。

创建事件表后,使用 ALTER ACCOUNT ...SET EVENT_TABLE 指定事件表为账户的活动表:

ALTER ACCOUNT SET EVENT_TABLE=event_db.event_schema.my_event_table;
Copy

取消将账户设置为事件账户

要取消将某个账户设置为某个区域的事件账户,请调用 SYSTEM$UNSET_EVENT_SHARING_ACCOUNT_FOR_REGION 系统函数:

SELECT SYSTEM$UNSET_EVENT_SHARING_ACCOUNT_FOR_REGION('<snowflake_region>', '<region_group>', '<account_name>')
Copy

其中:

snowflake_region

指定账户所在的区域,例如: AWS_US_WEST_2

region_group

指定区域组,例如: PUBLIC

account_name

指定账户名称。

查看组织中的事件账户

要显示提供商组织中的事件账户,请调用 SYSTEM$SHOW_EVENT_SHARING_ACCOUNTS 系统函数:

SELECT SYSTEM$SHOW_EVENT_SHARING_ACCOUNTS()
Copy

备注

您必须使用该 ORGADMIN 角色来调用此函数。

此系统函数返回一个 JSON 格式的字符串,它包含组织内的事件账户列表。由于元数据需要一些时间才能传播到所有区域,因此在用户为组织设置或取消设置事件账户后,此函数在显示最新的事件账户之前可能会有短暂的延迟。

查看应用程序包中定义的日志记录和跟踪事件级别

使用 SHOW VERSIONS 命令查看应用程序包中定义的应用程序版本的日志记录级别,如以下示例所示:

SHOW VERSIONS
  IN APPLICATION PACKAGE HelloSnowflake;
Copy

查看事件表中的日志和事件

要查看事件表中存储的日志和事件,请使用 SELECT 命令,如下例所示:

SELECT * FROM EVENT_DB.EVENT_SCHEMA.MY_EVENT_TABLE
Copy

有关查询事件表的更多信息,请参阅以下内容:

有关事件表中列的信息,请参阅 事件表列

提供商可用的共享事件信息

以下部分介绍了 Native Apps Framework 与提供商共享的信息。

与提供商共享的应用程序事件上下文

为了帮助提供商轻松识别共享事件的来源,以下字段被填充至与提供商共享时事件表的 RESOURCE_ATTRIBUTES 列:

  • snow.application.package.name

  • snow.application.consumer.organization

  • snow.application.consumer.name

  • snow.listing.name

  • snow.listing.global_name

未与提供商共享的字段

为了保护使用者信息,来自 RESOURCE_ATTRIBUTES 列的以下字段不与提供商共享:

  • snow.database.id

  • snow.database.name

  • snow.schema.id

  • snow.executable.id

  • snow.owner.name

  • snow.owner.id

  • snow.warehouse.name

  • snow.warehouse.id

  • snow.query.id

  • snow.session.id

  • snow.session.role.primary.name

  • snow.session.role.primary.id

  • snow.user.name

  • snow.user.id

  • db.user

Snowflake 会以以下字段形式共享 snow.database.namesnow.query.id 字段的哈希值 (SHA-1),而不是直接与提供商共享这两个字段:

  • snow.database.hash

  • snow.query.hash

Snowflake 提供用于掩盖这些属性的 SHA-1 函数。使用者可以计算数据库名称和查询 ID 的哈希值,并在联系提供商时将其用作参考值。

语言: 中文