数据沿袭

Snowflake 会跟踪数据如何从源对象流向目标对象(例如从表到视图),并允许您查看对象中数据的来源或去向。这些信息称为 数据沿袭,可以帮助您理解 Snowflake 对象之间的关系。

数据沿袭捕捉了两种类型的关系:

  • 数据移动,例如将数据从一个对象复制或物化到另一个对象时。例如,对表执行的 CREATE TABLE AS SELECT (CTAS)、INSERT 或 MERGE 操作会导致数据移动。

  • 对象依赖关系,这是指对象引用基础对象但未物化或复制数据时,例如视图引用表时。

Snowflake 数据沿袭具有以下优点:

  • 了解不同对象之间的关系,从而提供影响分析。

  • 查看数据移动沿袭和对象依赖关系,从而增强监控和故障排除。

  • 跟踪敏感数据的流动,从而促进合规性。

  • 帮助您在列上使用标签和掩码策略,以保护敏感数据。

  • 了解源和目标对象和列,从而增强对数据的信任。

  • 允许管理员查看要委派的沿袭。有关更多信息,请参阅 沿袭信息的访问控制

关于上游和下游关系

数据沿袭可帮助您从源对象和目标对象的角度来了解对象的关系。在沿袭术语中,源对象位于目标对象的“上游”,目标对象位于源对象的“下游”。Snowsight 会逐步累进地显示所选对象的上游或下游对象。

例如,在这条 SQL 语句中:

CREATE TABLE table2 AS SELECT col1 FROM table1;
Copy

table2 是目标表,位于源表 table1 的下游。源自 table1 表的 col1 列包含在 table2 表中;这也是下游沿袭关系。

如果您在 Snowsight 中查看 table1 表的详细信息,则 Lineage 选项卡将显示一个由 table1table2 的箭头,以指示下游沿袭关系。如果您改为从 table2 表开始,则箭头会从 table2 指向上游的 table1

开始使用

要在 Snowsight 中开始使用数据沿袭,请执行以下步骤:

  1. 使用 必要权限 登录到 Snowsight。

  2. 使用 Data » Databases 菜单,选择 支持的对象,例如表或视图。

  3. 选择 Lineage 选项卡。

Lineage 选项卡的基本操作包括以下内容:

Snowsight 中数据沿袭的屏幕截图示例
  • A. 选择一个对象以显示其附加详细信息,包括该对象的列以及这些列上的标签。

  • B. 选择 +/- 以显示或隐藏进一步上游或下游的对象。

  • C. 选择连接两个对象的箭头,以显示有关如何创建下游对象的信息(例如,创建对象的 SQL 语句)。您的访问控制权限决定了显示哪些信息。

  • D. 打开一个新的沿袭图,该图侧重于所选对象的沿袭关系。

要了解如何使用 Lineage 选项卡以执行其他操作,请参阅以下内容:

列沿袭

您可以使用 Snowsight 跟踪源对象中的列与目标对象中的列之间的关系。对于给定列,您可以确定与该列共享沿袭的所有上游和下游列。

要确定列的沿袭,请执行以下操作:

  1. 使用 必要权限 登录到 Snowsight。

  2. 使用 Data » Databases 菜单,选择 支持的对象,例如表或视图。

  3. 选择 Lineage 选项卡。

  4. 选择包含您感兴趣的列的对象,以便追踪其信息。侧面板打开。

  5. 将鼠标悬停在侧面板中的列名称上,然后选择 View Lineage

  6. 选择 Upstream LineageDownstream Lineage 以列出上游或下游对象中的列。

    您可以使用 Distance 列来确定列在沿袭中的距离。例如,如果下游距离为 1,则该列位于直接从当前对象创建的对象中。如果下游距离为 2,则该列位于从当前对象创建的对象的基础上进一步创建的对象中。

使用标签

Lineage 选项卡提供了一种集成的治理体验,允许您查看列的沿袭、识别具有标签的列,并在同一工作流程中应用新的标签。

您能否查看和应用标签取决于您用来查看 Lineage 选项卡的角色的访问控制权限。有关使用标签所需权限的信息,请参阅 DDL 命令、操作和权限总结

查找对象及其列上的标签

  1. 使用 必要权限 登录到 Snowsight。

  2. 使用 Data » Databases 菜单,选择 支持的对象,例如表或视图。

  3. 选择 Lineage 选项卡。

  4. 选择您感兴趣的对象。侧面板打开。

  5. 要查看对象本身的标签,请查看侧面板的 Details 部分。

  6. 要查看对象列上的标签,请在 Columns 部分查找列。如果存在标签,列名称旁会显示一个标签符号。将鼠标悬停在符号上即可查看标签的名称和值。

识别并修复缺失的标签或不正确的标签值。

如果一个列上有标签,那么很可能在与该列共享沿袭的上游列和下游列上也应该应用相同的标签。同样,上游列和下游列上的标签值通常也需要保持一致。

数据沿袭工作流程会识别缺失的上游和下游列上的标签,以及标签值不同的情况。然后,它会帮助您在这些列上应用缺失的标签或更改标签值。

  1. 使用 必要权限 登录到 Snowsight。

  2. 使用 Data » Databases 菜单,选择 支持的对象,例如表或视图。

  3. 选择 Lineage 选项卡。

  4. 选择包含您想要跟踪的列的对象。侧面板打开。

  5. 将鼠标悬停在侧面板中的列名称上,然后选择 View Lineage

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

    如果下游或上游列上存在缺失的标签或标签值不匹配,系统会显示一个横幅。您可以使用 Tags 列中的颜色编码来确定标签的问题:

    • 如果标签具有虚线边框,则表示该列没有应用该标签。

    • 如果标签具有黄色边框,则表示该标签的值不匹配。

  7. 要修复这些缺失或不匹配的标签,请执行以下操作:

    1. 选择 Review and Apply

    2. 确认要接受建议的更改后,选择 Apply

确定掩码策略

  1. 使用 必要权限 登录到 Snowsight。

  2. 使用 Data » Databases 菜单,选择 支持的对象,例如表或视图。

  3. 选择 Lineage 选项卡。

  4. 选择您感兴趣的对象。侧面板打开。

  5. 要查看对象列的掩码策略,请在 Columns 部分查找列。如果列受掩码策略保护,则列名称旁边会显示一个符号。将鼠标悬停在符号上,可查看掩码策略名称和详细信息。

    如果掩码策略存在问题,例如同一列被分配了多个掩码策略,则会显示 Policy Error,而不是掩码符号。 如果将鼠标悬停在 Policy Error 上方,则会显示错误的解释。有关确定错误可能发生原因的其他帮助,请参阅 标签和策略发现对基于标签的掩码策略进行故障排除

以编程方式检索沿袭

您可以使用 GET_LINEAGE (SNOWFLAKE.CORE) 函数,以编程方式检索沿袭信息。该函数返回 Snowsight 中 Lineage 选项卡所提供信息的子集。

支持的操作

以下操作会在源对象与目标对象之间建立上游和下游的关系:

受支持对象

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

  • 动态表

  • 外部表

  • Iceberg 表

  • 视图

  • 物化视图

暂存区也可以参与数据沿袭关系,以下机器学习对象也是如此。

  • 数据集

  • :doc:`功能视图 </developer-guide/snowflake-ml/feature-store/feature-views>`(实际上是 Snowflake 中的动态表或视图)

  • 模型

任意两个与表类似的对象中的列之间都支持列沿袭。例如,您可以在表中选择一列来查看下游列沿袭,这会显示该列出现的其他与表类似的对象。

此外,如果所用角色具有管理标签和掩码策略的权限,则可以查看标签和掩码策略的关联。

ML 沿袭

ML 沿袭 专门支持机器学习关系,这种关系侧重于机器学习工作流程中如何使用和转换数据,而非更简单的移动或依赖关系。支持以下类型的对象之间的关系:

  • 数据集

  • :doc:`功能视图 </developer-guide/snowflake-ml/feature-store/feature-views>`(实际上是 Snowflake 中的动态表或内部的视图)

  • 模型

沿袭信息的访问控制

具有以下权限的角色可以访问 Lineage 选项卡,并可查看对象的所有上游和下游沿袭对象及依赖关系:

  • 账户的 VIEW LINEAGE。

  • 对要评估沿袭的对象的任何权限,例如对表的 SELECT 权限。

  • 对包含该对象的数据库和架构的 USAGE。

小技巧

您可以配置某个角色,使其即使没有相关对象、数据库或架构的权限,也能查看所有的沿袭对象。只需向角色授予账户的 RESOLVE ALL 权限,例如 GRANT RESOLVE ALL ON ACCOUNT TO ROLE lineage_role;。该角色仍需要 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 在 2024 年 11 月推出的功能。沿袭信息的获取方式如下:

  • 在此日期之前发生的对象依赖关系(例如,基于表的视图)的沿袭信息 可获取的。

  • 在此日期之前发生的数据移动(例如,使用 CTAS 语句从另一个表创建表)的沿袭信息 是不 可获取的。

历史记录信息按如下方式保存:

  • 列沿袭保留一年。

  • 对象沿袭保留一年。

限制

  • Lineage 选项卡不适用于以下类型的对象:

    • 共享数据库中的对象。

    • SNOWFLAKE 共享数据库中的对象。

    • 数据库 INFORMATION_SCHEMA 中的对象。

  • 动态表显示在其他对象的沿袭图表中,但动态表本身不会显示 Lineage 选项卡。

语言: 中文