如何在 Snowflake 中列出哪些视图使用特定视图或 table?
How to list which views consume a specific view or table in Snowflake?
我想以某种方式列出或检索哪些特定视图从特定视图或 table Snowflake 中选择数据。类似于:
SHOW VIEWS ... SELECTING FROM my_view
了解是否也可以使用函数和存储过程来做到这一点也很有用。
中检索到
Query the OBJECT_DEPENDENCIES view in the Account Usage schema of the shared SNOWFLAKE database to determine the object references for the table SALES_NA
SET obj_name = 'my_view';
with recursive referenced_cte
(object_name_path, referenced_object_name, referenced_object_domain, referencing_object_domain, referencing_object_name, referenced_object_id, referencing_object_id)
as
(
select referenced_object_name || '-->' || referencing_object_name as object_name_path,
referenced_object_name, referenced_object_domain, referencing_object_domain, referencing_object_name, referenced_object_id, referencing_object_id
from snowflake.account_usage.object_dependencies referencing
where true
and referenced_object_name = $obj_name and referenced_object_domain='TABLE'
union all
select object_name_path || '-->' || referencing.referencing_object_name,
referencing.referenced_object_name, referencing.referenced_object_domain, referencing.referencing_object_domain, referencing.referencing_object_name,
referencing.referenced_object_id, referencing.referencing_object_id
from snowflake.account_usage.object_dependencies referencing join referenced_cte
on referencing.referenced_object_id = referenced_cte.referencing_object_id
and referencing.referenced_object_domain = referenced_cte.referencing_object_domain
)
select object_name_path, referenced_object_name, referenced_object_domain, referencing_object_name, referencing_object_domain
from referenced_cte
;
您可以查询 get_object_references() table 函数以获取哪个视图引用了哪个其他视图。
文档参考:https://docs.snowflake.com/en/sql-reference/functions/get_object_references.html
另一种方法是在 SNOWFLAKE.ACCOUNT_USAGE SCHEMA
中查询 OBJECT_DEPENDENCIES 视图
文档参考:https://docs.snowflake.com/en/sql-reference/account-usage/object_dependencies.html
我想以某种方式列出或检索哪些特定视图从特定视图或 table Snowflake 中选择数据。类似于:
SHOW VIEWS ... SELECTING FROM my_view
了解是否也可以使用函数和存储过程来做到这一点也很有用。
Query the OBJECT_DEPENDENCIES view in the Account Usage schema of the shared SNOWFLAKE database to determine the object references for the table SALES_NA
SET obj_name = 'my_view';
with recursive referenced_cte
(object_name_path, referenced_object_name, referenced_object_domain, referencing_object_domain, referencing_object_name, referenced_object_id, referencing_object_id)
as
(
select referenced_object_name || '-->' || referencing_object_name as object_name_path,
referenced_object_name, referenced_object_domain, referencing_object_domain, referencing_object_name, referenced_object_id, referencing_object_id
from snowflake.account_usage.object_dependencies referencing
where true
and referenced_object_name = $obj_name and referenced_object_domain='TABLE'
union all
select object_name_path || '-->' || referencing.referencing_object_name,
referencing.referenced_object_name, referencing.referenced_object_domain, referencing.referencing_object_domain, referencing.referencing_object_name,
referencing.referenced_object_id, referencing.referencing_object_id
from snowflake.account_usage.object_dependencies referencing join referenced_cte
on referencing.referenced_object_id = referenced_cte.referencing_object_id
and referencing.referenced_object_domain = referenced_cte.referencing_object_domain
)
select object_name_path, referenced_object_name, referenced_object_domain, referencing_object_name, referencing_object_domain
from referenced_cte
;
您可以查询 get_object_references() table 函数以获取哪个视图引用了哪个其他视图。
文档参考:https://docs.snowflake.com/en/sql-reference/functions/get_object_references.html
另一种方法是在 SNOWFLAKE.ACCOUNT_USAGE SCHEMA
中查询 OBJECT_DEPENDENCIES 视图文档参考:https://docs.snowflake.com/en/sql-reference/account-usage/object_dependencies.html