- Categorias:
Funções de tabela (Modelagem de objetos)
GET_OBJECT_REFERENCES¶
Retorna uma lista de objetos referenciados por um objeto especificado. A entrada está atualmente limitada ao nome de uma exibição.
A tabela a seguir identifica quais tipos de objetos de banco de dados são atualmente retornados na saída:
Tipo de objeto |
Retornado na saída? |
---|---|
Tabelas |
Sim |
Exibições (incluindo exibições seguras) |
Sim |
Exibições materializadas |
Não |
Estágios nomeados (internos ou externos) |
Não |
Fluxos |
Não |
Funções definidas pelo usuário (UDF) / funções de tabela definidas pelo usuário (UDTF) |
Não |
Sintaxe¶
GET_OBJECT_REFERENCES(
DATABASE_NAME => '<string>'
, SCHEMA_NAME => '<string>'
, OBJECT_NAME => '<string>' )
Argumentos¶
DATABASE_NAME => 'string'
Nome do banco de dados no qual residem o esquema e o objeto.
SCHEMA_NAME => 'string'
Nome do esquema em que o objeto reside.
OBJECT_NAME => 'string'
Nome do objeto. Atualmente limitado ao nome de uma exibição (segura ou não segura).
Retornos¶
A função retorna as seguintes colunas:
Nome da coluna |
Tipo de dados |
Descrição |
---|---|---|
DATABASE_NAME |
TEXT |
Nome do banco de dados que contém o objeto consultado. |
SCHEMA_NAME |
TEXT |
Nome do esquema que contém o objeto consultado. |
OBJECT_NAME |
TEXT |
Nome do objeto consultado. |
REFERENCED_DATABASE_NAME |
TEXT |
Nome do banco de dados que contém um objeto ao qual o objeto consultado faz referência. |
REFERENCED_SCHEMA_NAME |
TEXT |
Nome do banco de dados que contém um objeto ao qual o objeto consultado faz referência. |
REFERENCED_OBJECT_NAME |
TEXT |
Nome de um objeto ao qual o objeto consultado faz referência. |
REFERENCED_OBJECT_TYPE |
TEXT |
Tipo de objeto identificado na coluna REFERENCED_OBJECT_NAME. Os valores incluem TABLE ou VIEW. |
Notas de uso¶
Esta função exige os seguintes privilégios:
SELECT na exibição. Para obter referências para uma exibição, a função em uso ou uma função concedida à função em uso deve ter o privilégio SELECT na exibição. Para obter mais detalhes, consulte Privilégios de tabela e Privilégios de exibição.
OWNERSHIP na exibição segura. Se a cadeia de dependência fizer referência a qualquer exibição segura, a função em uso ou uma função concedida à função em uso deve ter o privilégio OWNERSHIP na exibição segura. Caso contrário, Snowflake retorna esta mensagem de erro:
Insufficient privileges to operate on view '<view_name>'
Os valores
DATABASE_NAME
,SCHEMA_NAME
eOBJECT_NAME
devem ser colocados entre aspas simples. Além disso, se algum desses nomes contiver espaços, caracteres mistos ou caracteres especiais, o nome deve ser delimitado por aspas duplas dentro das aspas simples (por exemplo,'"My DB"'
vs'mydb'
).No caso de estágios de referência da exibição, UDFs ou exibições materializadas, esta função retorna um erro, em vez de retornar uma lista de tabelas e exibições referenciadas.
Exemplos¶
Retornar a lista de referências para uma exibição:
-- 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 | +---------------+-------------+-----------+--------------------------+------------------------+------------------------+------------------------+