类别:

表函数

GET_LINEAGE (SNOWFLAKE.CORE)

给定一个 Snowflake 对象,返回该对象上游或下游的数据沿袭信息。上游是指导致创建该对象的对象路径;下游是指从该对象创建的对象路径。

语法

SNOWFLAKE.CORE.GET_LINEAGE(
    '<object_name>',
    '<object_domain>',
    '<direction>',
    [ <distance>, ]
    [ '<object_version>' ]
)
Copy

实参

必填:

'object_name'

检索其数据沿袭信息的对象名称。如果对象的架构与会话中的当前架构不同,则使用完全限定名称。

'object_domain'

对象的域。支持的域有“COLUMN”、“TABLE”(包括视图和动态表在内的所有类表对象)和“STAGE”。对于 ML 沿袭,将 TABLE 用于功能视图(内部是动态表和视图)、使用“DATASET”,或将“MODULE”用于模型。

'direction'

应保留沿袭的方向。支持的方向为“UPSTREAM”和“DOWNSTREAM”。

可选:

distance

要检索的沿袭级别数。最大值为 5;这也是默认值。

'object_version'

对于版本化对象(如数据集和模型),是指要检索沿袭的对象版本。如果未指定,则使用默认版本。

输出

输出是一个表格,其中沿袭路径中的每个对象关系(即沿袭图中的一条边)都对应一行。关系是指每一行中被指定为源和目标的对象之间的关系。该表包括以下各列:

类型

描述

SOURCE_OBJECT_DATABASE

VARCHAR

包含源对象的数据库。

SOURCE_OBJECT_SCHEMA

VARCHAR

包含源对象的架构。

SOURCE_OBJECT_NAME

VARCHAR

源对象的非限定名称。

SOURCE_OBJECT_DOMAIN

VARCHAR

目标对象的域。可能的值为“COLUMN”、“TABLE”、“DATASET”、“MODULE”(对于 ML 模型)和“STAGE”。

SOURCE_OBJECT_VERSION

VARCHAR

源对象的版本,用于版本化对象,如数据集和模型。如果源对象没有版本化,则返回 NULL。

SOURCE_COLUMN_NAME

VARCHAR

源列的名称(如果源对象是列)。如果源对象不是列,则返回 NULL。

SOURCE_STATUS

VARCHAR

源对象的状态。可能的值是“DELETED”、“ACTIVE”和“MASKED”。

TARGET_OBJECT_DATABASE

VARCHAR

包含目标对象的数据库。

TARGET_OBJECT_SCHEMA

VARCHAR

包含目标对象的架构。

TARGET_OBJECT_NAME

VARCHAR

目标对象的非限定名称。

TARGET_OBJECT_DOMAIN

VARCHAR

目标对象的域。可能的值为“COLUMN”、“TABLE”、“DATASET”、“MODULE”(对于 ML 模型)和“STAGE”。

TARGET_OBJECT_VERSION

VARCHAR

目标对象的版本,用于版本化对象,如数据集和模型。如果目标对象没有版本化,则返回 NULL。

TARGET_COLUMN_NAME

VARCHAR

目标列的名称(如果目标对象是列)。如果目标对象不是列,则返回 NULL。

TARGET_STATUS

VARCHAR

目标对象的状态。可能的值是“DELETED”、“ACTIVE”和“MASKED”。

DISTANCE

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

输出类似于以下内容:

+----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------+
| 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        |
+----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------+
语言: 中文