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