- Catégories :
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(
' ',
' ',
' ',
[ , ]
[ ' ' ]
)
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 |
---|---|---|
|
VARCHAR |
La base de données qui contient l’objet source. |
|
VARCHAR |
Le schéma qui contient l’objet source. |
|
VARCHAR |
Le nom non qualifié de l’objet source. |
|
VARCHAR |
Le domaine de l’objet cible. Les valeurs possibles sont « COLUMN », « TABLE », « DATASET », « MODULE » (pour les modèles ML) et « STAGE ». |
|
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é. |
|
VARCHAR |
Le nom de la colonne source, si l’objet source est une colonne. NULL si l’objet source n’est pas une colonne. |
|
VARCHAR |
Le statut de l’objet source. Les valeurs possibles sont « DELETED », « ACTIVE » et «MASKED ». |
|
VARCHAR |
La base de données qui contient l’objet cible. |
|
VARCHAR |
Le schéma qui contient l’objet cible. |
|
VARCHAR |
Le nom non qualifié de l’objet cible. |
|
VARCHAR |
Le domaine de l’objet cible. Les valeurs possibles sont « COLUMN », « TABLE », « DATASET », « MODULE » (pour les modèles ML) et « STAGE ». |
|
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é. |
|
VARCHAR |
Le nom de la colonne cible, si l’objet cible est une colonne. NULL si l’objet cible n’est pas une colonne. |
|
VARCHAR |
Le statut de l’objet cible. Les valeurs possibles sont « DELETED », « ACTIVE » et «MASKED ». |
|
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));
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 |
+----------+----------------------+------------------------+----------------------+--------------------+---------------+----------------------+------------------------+----------------------+--------------------+---------------+