- Catégories :
Fonctions de table (Modélisation d’objet)
GET_OBJECT_REFERENCES¶
Renvoie une liste de tous les objets référencés par un objet spécifié. L’entrée est actuellement limitée au nom d’une vue.
Le tableau suivant identifie les types d’objets de bases de données actuellement renvoyés dans la sortie :
Type d’objet |
Renvoyé en sortie ? |
---|---|
Tables |
Oui |
Vues (y compris les vues sécurisées) |
Oui |
Vues matérialisées |
Non |
Zones de préparation nommées (internes ou externes) |
Non |
Flux |
Non |
Fonctions définies par l’utilisateur (UDF)/Fonctions de table définies par l’utilisateur (UDTF) |
Non |
Syntaxe¶
GET_OBJECT_REFERENCES(
DATABASE_NAME => '<string>'
, SCHEMA_NAME => '<string>'
, OBJECT_NAME => '<string>' )
Arguments¶
DATABASE_NAME => 'string'
Nom de la base de données dans laquelle résident le schéma et l’objet.
SCHEMA_NAME => 'string'
Nom du schéma dans lequel réside l’objet.
OBJECT_NAME => 'string'
Nom de l’objet. Actuellement limité au nom d’une vue (sécurisée ou non sécurisée).
Renvoie¶
La fonction renvoie les colonnes suivantes :
Nom de la colonne |
Type de données |
Description |
---|---|---|
DATABASE_NAME |
TEXT |
Nom de la base de données contenant l’objet interrogé. |
SCHEMA_NAME |
TEXT |
Nom du schéma contenant l’objet interrogé. |
OBJECT_NAME |
TEXT |
Nom de l’objet interrogé. |
REFERENCED_DATABASE_NAME |
TEXT |
Nom de la base de données contenant un objet référencé par l’objet interrogé. |
REFERENCED_SCHEMA_NAME |
TEXT |
Nom de la base de données contenant un objet référencé par l’objet interrogé. |
REFERENCED_OBJECT_NAME |
TEXT |
Nom d’un objet référencé par l’objet interrogé. |
REFERENCED_OBJECT_TYPE |
TEXT |
Type d’objet identifié dans la colonne REFERENCED_OBJECT_NAME. Les valeurs incluent TABLE ou VIEW. |
Notes sur l’utilisation¶
Cette fonction requiert les privilèges suivants :
SELECT sur la vue. Pour obtenir des références pour une vue, le rôle utilisé ou un rôle accordé au rôle utilisé doit avoir le privilège SELECT sur la vue. Pour plus de détails, reportez-vous à Privilèges de table et Affichage des privilèges.
OWNERSHIP sur la vue sécurisée. Si la chaîne de dépendances fait référence à une vue sécurisée, le rôle utilisé ou un rôle accordé au rôle utilisé doit avoir le privilège OWNERSHIP sur la vue sécurisée. Sinon, Snowflake renvoie le message d’erreur suivant :
Insufficient privileges to operate on view '<view_name>'
Les valeurs
DATABASE_NAME
,SCHEMA_NAME
etOBJECT_NAME
doivent être placées entre guillemets. De plus, si l’un de ces noms contient des espaces, des caractères en majuscules et minuscules ou des caractères spéciaux, le nom doit être entre guillemets doubles à l’intérieur des guillemets simples (p. ex.'"My DB"'
vs'mydb'
).Si la vue fait référence à des zones de préparation, des UDFs ou à des vues matérialisées, cette fonction renvoie une erreur plutôt que de renvoyer une liste des tables et des vues référencées.
Exemples¶
Renvoie la liste des références pour une vue :
-- create a database create or replace database ex1_gor_x; use database ex1_gor_x; use schema PUBLIC; -- create a set of tables create or replace table x_tab_a (mycol int not null); create or replace table x_tab_b (mycol int not null); create or replace table x_tab_c (mycol int not null); -- create views with increasing complexity of references create or replace view x_view_d as select * from x_tab_a join x_tab_b using ( mycol ); create or replace view x_view_e as select x_tab_b.* from x_tab_b, x_tab_c where x_tab_b.mycol=x_tab_c.mycol; --create a second database create or replace database ex1_gor_y; use database ex1_gor_y; use schema PUBLIC; -- create a table in the second database create or replace table y_tab_a (mycol int not null); -- create more views with increasing levels of references create or replace view y_view_b as select * from ex1_gor_x.public.x_tab_a join y_tab_a using ( mycol ); create or replace view y_view_c as select b.* from ex1_gor_x.public.x_tab_b b, ex1_gor_x.public.x_tab_c c where b.mycol=c.mycol; create or replace view y_view_d as select * from ex1_gor_x.public.x_view_e; create or replace view y_view_e as select e.* from ex1_gor_x.public.x_view_e e, y_tab_a where e.mycol=y_tab_a.mycol; create or replace view y_view_f as select e.* from ex1_gor_x.public.x_view_e e, ex1_gor_x.public.x_tab_c c, y_tab_a where e.mycol=y_tab_a.mycol and e.mycol=c.mycol; -- retrieve the references for the last view created select * from table(get_object_references(database_name=>'ex1_gor_y', schema_name=>'public', object_name=>'y_view_f')); +---------------+-------------+-----------+--------------------------+------------------------+------------------------+------------------------+ | DATABASE_NAME | SCHEMA_NAME | VIEW_NAME | REFERENCED_DATABASE_NAME | REFERENCED_SCHEMA_NAME | REFERENCED_OBJECT_NAME | REFERENCED_OBJECT_TYPE | |---------------+-------------+-----------+--------------------------+------------------------+------------------------+------------------------| | EX1_GOR_Y | PUBLIC | Y_VIEW_F | EX1_GOR_Y | PUBLIC | Y_TAB_A | TABLE | | EX1_GOR_Y | PUBLIC | Y_VIEW_F | EX1_GOR_X | PUBLIC | X_TAB_B | TABLE | | EX1_GOR_Y | PUBLIC | Y_VIEW_F | EX1_GOR_X | PUBLIC | X_TAB_C | TABLE | | EX1_GOR_Y | PUBLIC | Y_VIEW_F | EX1_GOR_X | PUBLIC | X_VIEW_E | VIEW | +---------------+-------------+-----------+--------------------------+------------------------+------------------------+------------------------+