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

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>'
      
      Copy
  • Os valores DATABASE_NAME, SCHEMA_NAME e OBJECT_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                   |
+---------------+-------------+-----------+--------------------------+------------------------+------------------------+------------------------+
Copy