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