数据沿袭¶
Snowflake 会跟踪数据如何从源对象流向目标对象(例如从表到视图),并允许您查看对象中数据的来源或去向。这些信息称为 数据沿袭,可以帮助您理解 Snowflake 对象之间的关系。
数据沿袭捕捉了两种类型的关系:
数据移动,例如将数据从一个对象复制或物化到另一个对象时。例如,对表执行的 CREATE TABLE AS SELECT (CTAS)、INSERT 或 MERGE 操作会导致数据移动。
对象依赖关系,这是指对象引用基础对象但未物化或复制数据时,例如视图引用表时。
Snowflake 数据沿袭具有以下优点:
了解不同对象之间的关系,从而提供影响分析。
查看数据移动沿袭和对象依赖关系,从而增强监控和故障排除。
跟踪敏感数据的流动,从而促进合规性。
帮助您在列上使用标签和掩码策略,以保护敏感数据。
了解源和目标对象和列,从而增强对数据的信任。
允许管理员查看要委派的沿袭。有关更多信息,请参阅 沿袭信息的访问控制。
关于上游和下游关系¶
数据沿袭可帮助您从源对象和目标对象的角度来了解对象的关系。在沿袭术语中,源对象位于目标对象的“上游”,目标对象位于源对象的“下游”。Snowsight 会逐步累进地显示所选对象的上游或下游对象。
例如,在这条 SQL 语句中:
CREATE TABLE table2 AS SELECT col1 FROM table1;
table2
是目标表,位于源表 table1
的下游。源自 table1
表的 col1
列包含在 table2
表中;这也是下游沿袭关系。
如果您在 Snowsight 中查看 table1
表的详细信息,则 Lineage 选项卡将显示一个由 table1
至 table2
的箭头,以指示下游沿袭关系。如果您改为从 table2
表开始,则箭头会从 table2
指向上游的 table1
。
开始使用¶
要在 Snowsight 中开始使用数据沿袭,请执行以下步骤:
对 Lineage 选项卡的基本操作包括以下内容:
A. 选择一个对象以显示其附加详细信息,包括该对象的列以及这些列上的标签。
B. 选择 +/- 以显示或隐藏进一步上游或下游的对象。
C. 选择连接两个对象的箭头,以显示有关如何创建下游对象的信息(例如,创建对象的 SQL 语句)。您的访问控制权限决定了显示哪些信息。
D. 打开一个新的沿袭图,该图侧重于所选对象的沿袭关系。
要了解如何使用 Lineage 选项卡以执行其他操作,请参阅以下内容:
列沿袭¶
您可以使用 Snowsight 跟踪源对象中的列与目标对象中的列之间的关系。对于给定列,您可以确定与该列共享沿袭的所有上游和下游列。
要确定列的沿袭,请执行以下操作:
确定掩码策略¶
使用 必要权限 登录到 Snowsight。
使用 Data » Databases 菜单,选择 支持的对象,例如表或视图。
选择 Lineage 选项卡。
选择您感兴趣的对象。侧面板打开。
要查看对象列的掩码策略,请在 Columns 部分查找列。如果列受掩码策略保护,则列名称旁边会显示一个符号。将鼠标悬停在符号上,可查看掩码策略名称和详细信息。
如果掩码策略存在问题,例如同一列被分配了多个掩码策略,则会显示 Policy Error,而不是掩码符号。 如果将鼠标悬停在 Policy Error 上方,则会显示错误的解释。有关确定错误可能发生原因的其他帮助,请参阅 标签和策略发现 和 对基于标签的掩码策略进行故障排除。
以编程方式检索沿袭¶
您可以使用 GET_LINEAGE (SNOWFLAKE.CORE) 函数,以编程方式检索沿袭信息。该函数返回 Snowsight 中 Lineage 选项卡所提供信息的子集。
支持的操作¶
以下操作会在源对象与目标对象之间建立上游和下游的关系:
CREATE TABLE ...AS SELECT (CTAS)
例如 UPDATE。
UPDATE mydb.schema1.table1 FROM mydb.schema2.table2 SET table1.col1 = table2.col1;
受支持对象¶
数据沿袭支持 与表类似的对象 之间的数据移动和依赖关系。“与表类似”的对象是任何可以像表一样查询的对象,包括表在内(没有其他对象比表更像是表)。与表类似的对象包括:
表
动态表
外部表
Iceberg 表
视图
物化视图
暂存区也可以参与数据沿袭关系,以下机器学习对象也是如此。
:doc:`功能视图 </developer-guide/snowflake-ml/feature-store/feature-views>`(实际上是 Snowflake 中的动态表或视图)
任意两个与表类似的对象中的列之间都支持列沿袭。例如,您可以在表中选择一列来查看下游列沿袭,这会显示该列出现的其他与表类似的对象。
此外,如果所用角色具有管理标签和掩码策略的权限,则可以查看标签和掩码策略的关联。
ML 沿袭¶
ML 沿袭 专门支持机器学习关系,这种关系侧重于机器学习工作流程中如何使用和转换数据,而非更简单的移动或依赖关系。支持以下类型的对象之间的关系:
沿袭信息的访问控制¶
具有以下权限的角色可以访问 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;
如果您对沿袭图表中的上游或下游对象没有权限,则该对象将显示为灰色,并显示一条消息,指出您没有足够的权限查看该对象。灰色对象并不表示沿袭图表中的终端节点;只是表示您无法从该节点继续查看上游或下游沿袭,因为您没有权限检索该对象的沿袭。此行为也适用于受其他访问策略保护的对象和列。
已重命名和删除的表节点¶
已重命名的表显示在图表中,但不会显示删除的表。
沿袭历史记录和保留¶
沿袭是 Snowflake 在 2024 年 11 月推出的功能。沿袭信息的获取方式如下:
在此日期之前发生的对象依赖关系(例如,基于表的视图)的沿袭信息 是 可获取的。
在此日期之前发生的数据移动(例如,使用 CTAS 语句从另一个表创建表)的沿袭信息 是不 可获取的。
历史记录信息按如下方式保存:
列沿袭保留一年。
对象沿袭保留一年。
限制¶
Lineage 选项卡不适用于以下类型的对象:
共享数据库中的对象。
SNOWFLAKE 共享数据库中的对象。
数据库 INFORMATION_SCHEMA 中的对象。
动态表显示在其他对象的沿袭图表中,但动态表本身不会显示 Lineage 选项卡。