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;
Copy

table2 是目标表,位于源表 table1 的下游。源自 table1 表的 col1 列包含在 table2 表中;这也是下游沿袭关系。如果您在 Snowsight 中查看 table1 表的详细信息,则 Lineage 选项卡将显示一个由 table1table2 的箭头,以指示下游沿袭关系。如果您改为从 table2 表开始,则箭头会从 table2 指向上游的 table1。您还可以在两个表中看到 col1 列的相似关系。

利用这些信息,您可以了解敏感数据如何从源表流向目标表,并制定保护敏感列的策略,例如使用掩码策略和标记敏感列。

支持的操作

Snowflake 会跟踪对表和类似表的对象(包括动态表、外部表、视图和物化视图)执行这些操作时的数据沿袭:

受支持对象

数据沿袭支持 与表类似的对象 之间的数据移动和依赖关系。“与表类似”的对象是任何可以像表一样查询的对象,包括表在内(没有其他对象比表更像是表)。与表类似的对象包括:

  • 动态表

  • 外部表

  • 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;
Copy

如果您对沿袭图表中的上游或下游对象没有权限,则该对象将显示为灰色,并显示一条消息,指出您没有足够的权限查看该对象。请您的 Snowflake 账户管理员授予您对该对象的权限。如有必要,还可申请全局 VIEW LINEAGE 权限。

灰色对象并不表示沿袭图表中的终端节点;只是表示您无法从该节点继续查看上游或下游沿袭,因为您没有权限检索该对象的沿袭。此行为也适用于受其他访问策略保护的对象和列。

监控数据沿袭及标记列

备注

标记功能需要 Snowflake Enterprise Edition。

如需监控表的数据沿袭并为敏感列添加标签,请执行以下操作:

  1. 使用具有 必要权限 的角色查看对象的上游和下游沿袭。

  2. 在 Snowsight 中,导航到 Data » Databases

  3. 选择数据库、架构和 受支持的对象

  4. 选择 Lineage 选项卡。

  5. 如尚未使用仓库,请选择一个仓库。生成沿袭图表需要仓库。

    • 沿袭图表从对象以及一个下游和上游对象(如果适用)层级开始。一个从左指向右的箭头表示目标表中的列包含源表中的一列。您可以选择一个表,并查看其列。

    • 如果在列上设置了掩码策略且该策略出现错误,则可以在此过程中完成标签分配,然后切换到 Columns 选项卡(对于表或视图)来编辑掩码策略分配。如果将鼠标悬停在 Policy Error 上方,则会显示错误的解释。

  6. 要查看有关沿袭图表中特定表列的更多详细信息,请选择一个表。在所显示的详细信息面板中,将鼠标悬停在某列上,然后选择 View Lineage 或 :ui:`View Dependencies`(具体取决于您的图表选择)。

    如果您的表中包含许多列,则可以使用搜索筛选器来定位该列。

  7. View Column Lineage 对话框中,选择 Downstream LineageUpstream Lineage

    • 评估列和表的详细信息以及为该列分配的标签。

      该列上的标签与源列关联,还与目标列是否有标签关联。

    • 如果表包含不应存在的列,请修改创建该表的 SQL 语句。

    • 如果表将标签分配给了不应具有该标签的列,请更新为该列分配标签的 SQL 语句,或者使用 Snowsight 更新标签分配。

    如果您使用的是 ACCOUNTADMIN 角色或被授予全局 APPLY TAG 权限的角色,则会显示 Review Columns and Apply Tags 横幅。要向列应用标签,请执行以下操作:

  8. 在横幅中,选择 Review Columns and Apply Tags

    尚未应用的更改将以不同的颜色和模式突出显示:

    • 要在列上设置的新标签带有蓝色虚线边框。

    • 要更新的标签值带有黄色边框。

    如果尚未根据已在图表中选择的表格在列上设置标签,则不会显示横幅。

  9. 选择 Apply Tags 应用标签,并更新列中的标签值。

    如果无法在列上设置任何标签,则会显示一条错误消息,显示无法设置标签的列数。选择 Review Columns and Apply Tags,以重复上一步,进而分配标签。

    为列分配标签后,该横幅就会消失。

语言: 中文