Catégories :

Fonctions de table

GET_LINEAGE (SNOWFLAKE.CORE)

Avec un objet Snowflake, renvoie des informations sur le lignage des données en amont ou en aval de cet objet. En amont signifie le chemin des objets qui ont conduit à la création de l’objet ; en aval, le chemin des objets qui ont été créés à partir de l’objet.

Syntaxe

SNOWFLAKE.CORE.GET_LINEAGE(
    '',
    '',
    '',
    [ , ]
    [ '' ]
)
Copy

Arguments

Obligatoire :

'object_name'

Nom de l’objet pour lequel les informations sur le lignage des données sont récupérées. Utilisez le nom complet si l’objet se trouve dans un schéma différent du schéma en cours de la session.

'object_domain'

Domaine de l’objet. Les domaines pris en charge sont « COLUMN », « TABLE » (qui comprend tous les objets de type table, y compris les vues et les tables dynamiques) et « STAGE ». Pour le lignage ML, utilisez TABLE pour les vues de fonctions (qui sont des tables dynamiques et des vues en interne), « DATASET » ou « MODULE » pour les modèles.

'direction'

Direction pour laquelle le lignage doit être conservé. Les directions prises en charge sont « UPSTREAM » et « DOWNSTREAM ».

Facultatif :

distance

Nombre de niveaux de lignage à récupérer. Le maximum est de 5 ; c’est également la valeur par défaut.

'object_version'

Pour les objets versionnés, comme les ensembles de données et les modèles, la version de l’objet pour lequel le lignage est récupéré. Si elle n’est pas spécifiée, la version par défaut est utilisée.

Sortie

La sortie est une table avec une ligne par relation d’objet dans le chemin du lignage (c’est-à-dire une arête dans le graphique de lignage). Les relations s’établissent entre les objets désignés comme source et cible dans chaque ligne. Le tableau comprend les colonnes suivantes :

Colonne

Type

Description

SOURCE_OBJECT_DATABASE

VARCHAR

La base de données qui contient l’objet source.

SOURCE_OBJECT_SCHEMA

VARCHAR

Le schéma qui contient l’objet source.

SOURCE_OBJECT_NAME

VARCHAR

Le nom non qualifié de l’objet source.

SOURCE_OBJECT_DOMAIN

VARCHAR

Le domaine de l’objet cible. Les valeurs possibles sont « COLUMN », « TABLE », « DATASET », « MODULE » (pour les modèles ML) et « STAGE ».

SOURCE_OBJECT_VERSION

VARCHAR

La version de l’objet source, pour les objets versionnés tels que les ensembles de données et les modèles. NULL si l’objet source n’est pas versionné.

SOURCE_COLUMN_NAME

VARCHAR

Le nom de la colonne source, si l’objet source est une colonne. NULL si l’objet source n’est pas une colonne.

SOURCE_STATUS

VARCHAR

Le statut de l’objet source. Les valeurs possibles sont « DELETED », « ACTIVE » et «MASKED ».

TARGET_OBJECT_DATABASE

VARCHAR

La base de données qui contient l’objet cible.

TARGET_OBJECT_SCHEMA

VARCHAR

Le schéma qui contient l’objet cible.

TARGET_OBJECT_NAME

VARCHAR

Le nom non qualifié de l’objet cible.

TARGET_OBJECT_DOMAIN

VARCHAR

Le domaine de l’objet cible. Les valeurs possibles sont « COLUMN », « TABLE », « DATASET », « MODULE » (pour les modèles ML) et « STAGE ».

TARGET_OBJECT_VERSION

VARCHAR

La version de l’objet cible, pour les objets versionnés tels que les ensembles de données et les modèles. NULL si l’objet cible n’est pas versionné.

TARGET_COLUMN_NAME

VARCHAR

Le nom de la colonne cible, si l’objet cible est une colonne. NULL si l’objet cible n’est pas une colonne.

TARGET_STATUS

VARCHAR

Le statut de l’objet cible. Les valeurs possibles sont « DELETED », « ACTIVE » et «MASKED ».

DISTANCE

INTEGER

Distance entre l’objet cible et l’objet source dans le chemin du lignage. Une relation directe a une distance de 1.

Notes sur l’utilisation

  • Vous recevrez un message d’erreur si l’objet n’existe pas, si l’objet n’est pas accessible à l’utilisateur actuel, si l’objet ne prend pas en charge le lignage des données ou si l’objet n’appartient pas au domaine spécifié.

  • La table de sortie ne contient aucune ligne si aucune information de lignage n’est disponible pour l’objet spécifié ; il ne s’agit pas d’une erreur.

  • GET_LINEAGE renvoie au maximum 10 millions de lignes, chaque ligne représentant une arête (relation) dans le graphique de lignage. Si la sortie comporte plus de 10 millions de lignes, la fonction tronque en silence la sortie à 10 millions de lignes

Exemple

Supposons que vous ayez créé une table nommée TABLE_B à partir de TABLE_A en utilisant CREATE TABLE AS SELECT, puis créé une table nommée TABLE_C à partir de TABLE_B de la même manière. La requête SQL suivante récupère deux étapes du lignage en aval de 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

La sortie est similaire à celle-ci :

+----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------+
| 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        |
+----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------+