监控对象标签¶
您可以使用 SQL 或 Snowsight 监控标签及其实现方式。
使用 SQL 监控标签¶
您可以使用两个不同的 Account Usage 视图、两个 Information Schema 表函数、一个 Account Usage 表函数和一个系统函数来通过 SQL 监控标签。
考虑通过两种通用方法来确定如何监控标签使用情况可能会有所帮助。
发现标签¶
Snowflake 支持通过以下选项来列出标签,并确定给定标签键的字符串值。
确定账户中的标签:
在共享 SNOWFLAKE 数据库的 Account Usage 架构中使用 TAGS 视图。此视图可视为 Snowflake 账户中所有标签的 目录,提供有关当前和已删除标签的信息。例如:
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TAGS ORDER BY tag_name;
Copy确定给定标签的值:
使用 SYSTEM$GET_TAG 系统函数,返回分配给指定标签的标签值以及 Snowflake 对象或列。
SELECT SYSTEM$GET_TAG('cost_center', 'my_table', 'table');
Copy
确定分配¶
Snowflake 支持不同的选项来确定标签分配,具体取决于查询需要针对的是账户还是特定数据库,以及是否要跟踪标签继承。
具有沿袭的账户级别查询:
使用 Account Usage 表函数 TAG_REFERENCES_WITH_LINEAGE,确定具有给定标签键和标签值的所有对象,包括继承标签的对象:
SELECT * FROM TABLE( SNOWFLAKE.ACCOUNT_USAGE.TAG_REFERENCES_WITH_LINEAGE( 'my_db.my_schema.cost_center' ) );
Copy无沿袭的账户级别查询:
使用 Account Usage TAG_REFERENCES 视图,确定具有给定标签键和标签值的所有对象,但 不 包括继承标签的对象:
SELECT * FROM SNOWFLAKE.ACCOUNT_USAGE.TAG_REFERENCES ORDER BY tag_name, domain, object_id;
Copy具有沿袭的数据库级别查询:
每个 Snowflake 数据库都包含一个 Snowflake Information Schema。使用 Information Schema 表函数 TAG_REFERENCES,确定在给定数据库中具有给定标签的所有对象,包括继承该标签的对象:
SELECT * FROM TABLE( my_db.INFORMATION_SCHEMA.TAG_REFERENCES( 'my_table', 'table' ) );
Copy对表或视图中每一列上的所有标签进行的数据库级别查询,有沿袭:
使用 Information Schema 表函数 TAG_REFERENCES_ALL_COLUMNS,获取在给定表或视图中的每一列上设置的所有标签。
请注意,
TABLE
域 必须 用于包含列的所有对象,即使对象名称是视图(即视图、物化视图)。SELECT * FROM TABLE( INFORMATION_SCHEMA.TAG_REFERENCES_ALL_COLUMNS( 'my_table', 'table' ) );
Copy
使用 Snowsight 监控标签¶
可以使用 Snowsight Monitoring » Governance 区域来监控和报告策略以及带有表、视图和列的标签的使用情况。有两种不同的界面:Dashboard 和 Tagged Objects。
当使用 Dashboard 和 Tagged Objects 界面时,请注意以下详细信息。
Dashboard 和 Tagged Objects 界面需要一个正在运行的仓库。
Snowsight 每 12 小时更新一次 Dashboard。
Tagged Objects 信息延迟可能长达两个小时,并返回最多 1000 个对象。
访问 Snowsight 中的治理区域¶
要访问 Governance 区域,Snowflake 账户必须是 Enterprise Edition 或更高版本。此外,您必须执行以下任一操作:
使用 ACCOUNTADMIN 角色。
使用已 直接 授予 GOVERNANCE_VIEWER 和 OBJECT_VIEWER 数据库角色的账户角色。
您 必须 使用获授这些数据库角色的账户角色。目前,Snowsight 不评估角色层次结构和有权访问表、视图、数据访问策略和标签的用户定义数据库角色。
要确定是否向账户角色授予了这两个数据库角色,请使用 SHOW GRANTS 命令:
SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
Copy|-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------| | created_on | privilege | granted_on | name | granted_to | grantee_name | grant_option | granted_by | |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------| | 2024-01-24 17:12:26.984 +0000 | USAGE | DATABASE_ROLE | SNOWFLAKE.GOVERNANCE_VIEWER | ROLE | DATA_ENGINEER | false | | | 2024-01-24 17:12:47.967 +0000 | USAGE | DATABASE_ROLE | SNOWFLAKE.OBJECT_VIEWER | ROLE | DATA_ENGINEER | false | | |-------------------------------+-----------+---------------+-----------------------------+------------+-----------------+--------------+------------|
如果您的账户角色未被授予这两个数据库角色或其中之一,请使用 GRANT DATABASE ROLE 命令并再次运行 SHOW GRANTS 命令以确认授予角色:
USE ROLE ACCOUNTADMIN; GRANT DATABASE ROLE SNOWFLAKE.GOVERNANCE_VIEWER TO ROLE data_engineer; GRANT DATABASE ROLE SNOWFLAKE.OBJECT_VIEWER TO ROLE data_engineer; SHOW GRANTS LIKE '%VIEWER%' TO ROLE data_engineer;
Copy有关这些数据库角色的详细信息,请参阅 SNOWFLAKE 数据库角色。
仪表板¶
作为数据管理员,您可以使用 Dashboard 界面通过以下方式监控标签和策略使用情况。
覆盖率:根据表、视图或列是否具有策略或标签来指定计数和百分比。
流行度:列出并统计最常用的策略和标签。
覆盖范围和流行程度提供了有关数据保护和标记程度的快照。
当您选择计数、百分比、策略名称或标签名称时, Tagged Objects 界面打开。Tagged Objects 界面会根据您在 Dashboard 中的选择自动更新筛选器。
监控信息是在多个 Account Usage 视图上运行复杂且查询密集型操作的替代方案或补充。
这些视图可能包括但不限于 COLUMNS、POLICY_REFERENCES、TABLES、TAG_REFERENCES,以及 VIEWS 视图。
标记对象¶
作为数据管理员,您可以使用此表将 Dashboard 中的覆盖范围和流行程度快速关联到特定表、视图或列的列表。您还可以手动筛选表结果,如下所示。
选择 Tables 或者 Columns。
对于标签,可以使用标签、不使用标签或按特定标签进行筛选。
对于策略,可以使用策略、不使用策略或按特定策略进行筛选。
在表中选择一行时,系统将打开 Data » Databases 中的 Table Details 或 Columns 选项卡。您可以根据需要编辑标签和策略分配。