Snowsight 中的数据沿袭¶
Snowflake 会跟踪数据如何从源对象流向目标对象(例如从表到视图),并允许您查看对象中数据的来源或去向。这些信息称为 数据沿袭,可以帮助您理解 Snowflake 对象之间的关系。
数据沿袭捕捉了两种类型的关系:
数据移动,例如将数据从一个对象复制或物化到另一个对象时。例如,对表执行的 CREATE TABLE AS SELECT (CTAS)、INSERT 或 MERGE 操作会导致数据移动。
对象依赖关系,这是指对象引用基础对象但未物化或复制数据时,例如视图引用表时。
您可以使用 Snowsight 中的 Lineage 选项卡来查看对象和列的沿袭。Snowflake 还提供 SQL 函数,用于通过编程方式检索沿袭信息。相关功能 ML 沿袭 为机器学习模型和相关对象提供沿袭信息。
Snowflake 数据沿袭具有以下优点:
了解不同对象之间的关系,从而提供影响分析。
查看数据移动沿袭和对象依赖关系,从而增强监控和故障排除。
跟踪敏感数据的流动,从而促进合规性。
了解源和目标对象和列,从而增强对数据的信任。
允许管理员查看要委派的沿袭。有关更多信息,请参阅 在 Snowsight 中访问沿袭信息。
本主题介绍了如何使用 Snowsight 查看对象和列沿袭,以及如何为出现在下游或上游表中的列设置标签。
关于 Snowsight 中的数据沿袭¶
您可以使用 Snowsight 中的 Lineage 选项卡,从源对象和目标对象的角度来了解对象的关系。在沿袭术语中,源对象位于目标对象的“上游”,目标对象位于源对象的“下游”。Snowsight 会逐步累进地显示所选对象的上游或下游对象。
例如,在这条 SQL 语句中:
CREATE TABLE table2 AS SELECT col1 FROM table1;
table2
是目标表,位于源表 table1
的下游。源自 table1
表的 col1
列包含在 table2
表中;这也是下游沿袭关系。如果您在 Snowsight 中查看 table1
表的详细信息,则 Lineage 选项卡将显示一个由 table1
至 table2
的箭头,以指示下游沿袭关系。如果您改为从 table2
表开始,则箭头会从 table2
指向上游的 table1
。您还可以在两个表中看到 col1
列的相似关系。
利用这些信息,您可以了解敏感数据如何从源表流向目标表,并制定保护敏感列的策略,例如使用掩码策略和标记敏感列。
支持的操作¶
Snowflake 会跟踪对表和类似表的对象(包括动态表、外部表、视图和物化视图)执行这些操作时的数据沿袭:
CREATE TABLE ...AS SELECT (CTAS)
CREATE TABLE ... CLONE
例如 UPDATE。
UPDATE mydb.schema1.table1 FROM mydb.schema2.table2 SET table1.col1 = table2.col1;
受支持对象¶
数据沿袭支持 与表类似的对象 之间的数据移动和依赖关系。“与表类似”的对象是任何可以像表一样查询的对象,包括表在内(没有其他对象比表更像是表)。与表类似的对象包括:
表
动态表
外部表
Iceberg 表
视图
物化视图
暂存区也可以参与数据沿袭关系,以下机器学习对象也是如此。
任意两个与表类似的对象中的列之间都支持列沿袭。例如,您可以在表中选择一列来查看下游列沿袭,这会显示该列出现的其他与表类似的对象。
此外,如果所用角色具有管理标签和掩码策略的权限,则可以查看标签和掩码策略的关联。
ML 沿袭¶
ML 沿袭 专门支持机器学习关系,这种关系侧重于机器学习工作流程中如何使用和转换数据,而非更简单的移动或依赖关系。支持以下类型的对象之间的关系:
已重命名和删除的表节点¶
已重命名和删除的表显示在图表中;删除的表以灰色显示。
沿袭保留和回填¶
Lineage 图表实时提供沿袭信息;跟踪的操作会立即显示在 Snowsight UI 中。历史记录信息按如下方式保存:
列沿袭保留一年。
对象沿袭保留一年。
已删除对象的沿袭保留 14 天。
在本预览版中,不涉及数据移动的依赖关系将按照 Snowflake 活动历史记录中的保留期限进行回填。例如,如果视图是在六个月前从一个表创建的,则该依赖关系显示为表的下游沿袭关系和视图的上游关系。系统可能无法捕获在此预览版(2024 年 11 月推出)之前发生的表对表(数据移动)关系。
备注
在本预览版发布时,某些账户可能无法立即看到完整的历史沿袭数据。这些账户的沿袭数据仍在回填中,应在未来几周内提供。
限制¶
Lineage 选项卡不适用于以下类型的对象:
共享数据库中的对象。
SNOWFLAKE 共享数据库中的对象。
数据库 INFORMATION_SCHEMA 中的对象。
动态表显示在其他对象的沿袭图表中,但动态表本身不会显示 Lineage 选项卡。
查询信息仅适用于数据移动关系,不适用于对象依赖关系。只有具有 ACCOUNTADMIN 角色的用户才能查看查询信息。其他角色无法获得查询信息。
在 Snowsight 中访问沿袭信息¶
要访问 Lineage 选项卡,并查看对象的所有上游和下游沿袭对象及依赖关系,请使用具有以下权限的角色:
对要评估沿袭的对象的任何权限,例如对表的 SELECT 权限。
对包含该对象的数据库和架构的 USAGE。
账户的 VIEW LINEAGE。
以下示例创建了一个自定义角色,并为其授予必要权限:
USE ROLE ACCOUNTADMIN;
CREATE ROLE lineage_role;
GRANT VIEW LINEAGE ON ACCOUNT TO ROLE lineage_role;
GRANT SELECT ON mydb.sch.mytable TO ROLE lineage_role;
如果您对沿袭图表中的上游或下游对象没有权限,则该对象将显示为灰色,并显示一条消息,指出您没有足够的权限查看该对象。请您的 Snowflake 账户管理员授予您对该对象的权限。如有必要,还可申请全局 VIEW LINEAGE 权限。
灰色对象并不表示沿袭图表中的终端节点;只是表示您无法从该节点继续查看上游或下游沿袭,因为您没有权限检索该对象的沿袭。此行为也适用于受其他访问策略保护的对象和列。
监控数据沿袭及标记列¶
备注
标记功能需要 Snowflake Enterprise Edition。
如需监控表的数据沿袭并为敏感列添加标签,请执行以下操作:
使用具有 必要权限 的角色查看对象的上游和下游沿袭。
在 Snowsight 中,导航到 Data » Databases。
选择数据库、架构和 受支持的对象。
选择 Lineage 选项卡。
如尚未使用仓库,请选择一个仓库。生成沿袭图表需要仓库。
沿袭图表从对象以及一个下游和上游对象(如果适用)层级开始。一个从左指向右的箭头表示目标表中的列包含源表中的一列。您可以选择一个表,并查看其列。
如果在列上设置了掩码策略且该策略出现错误,则可以在此过程中完成标签分配,然后切换到 Columns 选项卡(对于表或视图)来编辑掩码策略分配。如果将鼠标悬停在 Policy Error 上方,则会显示错误的解释。
要查看有关沿袭图表中特定表列的更多详细信息,请选择一个表。在所显示的详细信息面板中,将鼠标悬停在某列上,然后选择 View Lineage 或 :ui:`View Dependencies`(具体取决于您的图表选择)。
如果您的表中包含许多列,则可以使用搜索筛选器来定位该列。
在 View Column Lineage 对话框中,选择 Downstream Lineage 或 Upstream Lineage。
评估列和表的详细信息以及为该列分配的标签。
该列上的标签与源列关联,还与目标列是否有标签关联。
如果表包含不应存在的列,请修改创建该表的 SQL 语句。
如果表将标签分配给了不应具有该标签的列,请更新为该列分配标签的 SQL 语句,或者使用 Snowsight 更新标签分配。
如果您使用的是 ACCOUNTADMIN 角色或被授予全局 APPLY TAG 权限的角色,则会显示 Review Columns and Apply Tags 横幅。要向列应用标签,请执行以下操作:
在横幅中,选择 Review Columns and Apply Tags。
尚未应用的更改将以不同的颜色和模式突出显示:
要在列上设置的新标签带有蓝色虚线边框。
要更新的标签值带有黄色边框。
如果尚未根据已在图表中选择的表格在列上设置标签,则不会显示横幅。
选择 Apply Tags 应用标签,并更新列中的标签值。
如果无法在列上设置任何标签,则会显示一条错误消息,显示无法设置标签的列数。选择 Review Columns and Apply Tags,以重复上一步,进而分配标签。
为列分配标签后,该横幅就会消失。