- 类别:
GET_LINEAGE (SNOWFLAKE.CORE)¶
给定一个 Snowflake 对象,返回该对象上游或下游的数据沿袭信息。上游是指导致创建该对象的对象路径;下游是指从该对象创建的对象路径。
语法¶
实参¶
必填:
'object_name'检索其数据沿袭信息的对象名称。如果对象的架构与会话中的当前架构不同,则使用完全限定名称。
'object_domain'对象的域。支持的域有“COLUMN”、“TABLE”(包括视图和动态表在内的所有类表对象)、“SEMANTIC_VIEW”(对于 语义视角)和“STAGE”。
对于 ML 沿袭,将
TABLE用于功能视图(内部是动态表和视图)、使用“DATASET”,或将“MODULE”用于模型。'direction'应保留沿袭的方向。支持的方向为“UPSTREAM”和“DOWNSTREAM”。
可选:
distance要检索的沿袭级别数。最大值为 5;这也是默认值。
'object_version'对于版本化对象(如数据集和模型),是指要检索沿袭的对象版本。如果未指定,则使用默认版本。
输出¶
输出是一个表格,其中沿袭路径中的每个对象关系(即沿袭图中的一条边)都对应一行。关系是指每一行中被指定为源和目标的对象之间的关系。该表包括以下各列:
列 |
类型 |
描述 |
|---|---|---|
|
VARCHAR |
包含源对象的数据库。 |
|
VARCHAR |
包含源对象的架构。 |
|
VARCHAR |
源对象的非限定名称。 |
|
VARCHAR |
目标对象的域。可能的值为“COLUMN”、“TABLE”、“SEMANTIC_VIEW”、“DATASET”、“MODULE”(对于 ML 模型)和“STAGE”。 |
|
VARCHAR |
源对象的版本,用于版本化对象,如数据集和模型。如果源对象没有版本化,则返回 NULL。 |
|
VARCHAR |
源列的名称(如果源对象是列)。如果源对象不是列,则返回 NULL。 |
|
VARCHAR |
源对象的状态。可能的值为“ACTIVE”和“MASKED”。 |
|
VARCHAR |
包含目标对象的数据库。 |
|
VARCHAR |
包含目标对象的架构。 |
|
VARCHAR |
目标对象的非限定名称。 |
|
VARCHAR |
目标对象的域。可能的值为“COLUMN”、“TABLE”、“SEMANTIC_VIEW”、“DATASET”、“MODULE”(对于 ML 模型)和“STAGE”。 |
|
VARCHAR |
目标对象的版本,用于版本化对象,如数据集和模型。如果目标对象没有版本化,则返回 NULL。 |
|
VARCHAR |
目标列的名称(如果目标对象是列)。如果目标对象不是列,则返回 NULL。 |
|
VARCHAR |
目标对象的状态。可能的值为“ACTIVE”和“MASKED”。 |
|
INTEGER |
沿袭路径中目标对象与源对象之间的距离。直接关系的距离为 1。 |
|
VARIANT |
提供有关如何建立源对象和目标对象之间的世系的详细信息。例如,它可能包括 SQL 查询的查询 ID 或将数据从源对象移动到目标对象的存储过程的名称。 |
使用说明¶
如果对象不存在、当前用户无法访问对象、对象不支持数据沿袭或对象不在指定域中,您将会收到错误消息。
如果指定对象没有可用的沿袭信息,则输出表不包含任何行;这不是错误。
GET_LINEAGE最多会返回 1000 万行,每行表示沿袭图中的一条边(关系)。如果输出超过 1000 万行,则该函数会自动将输出截断为 1000 万行。有关适用于使用此函数的限制和注意事项,请参阅 沿袭限制和注意事项。
示例¶
假设您已使用 CREATE TABLE AS SELECT 从 TABLE_A 创建了一个名为 TABLE_B 的表,然后以类似的方式从 TABLE_B 创建了一个名为 TABLE_C 的表。以下 SQL 查询会从 TABLE_A 中检索下游沿袭的两个步骤:
输出类似于以下内容: