如何通过SQL查询Snowflake中特定视图的创建源表及关联属性
Snowflake查询特定视图源表及关联属性解决方案
你之前尝试的查询仅能拉取视图的创建脚本,无法直接解析出依赖的源表信息,使用Snowflake系统自带的OBJECT_DEPENDENCIES系统视图可以直接获取视图的依赖对象数据,具体方案如下:
单视图源表及属性查询语句
该语句可以直接返回指定视图关联的所有源表信息,以及源表的字段属性:
SELECT -- 源表基础信息 referenced_database_name AS source_database, referenced_schema_name AS source_schema, referenced_object_name AS source_table_name, referenced_object_type AS source_object_type, -- 源表字段属性 c.column_name, c.data_type, c.is_nullable, c.comment AS column_comment, t.comment AS table_comment FROM INFORMATION_SCHEMA.OBJECT_DEPENDENCIES od LEFT JOIN INFORMATION_SCHEMA.TABLES t ON od.referenced_database_name = t.table_catalog AND od.referenced_schema_name = t.table_schema AND od.referenced_object_name = t.table_name LEFT JOIN INFORMATION_SCHEMA.COLUMNS c ON od.referenced_database_name = c.table_catalog AND od.referenced_schema_name = c.table_schema AND od.referenced_object_name = c.table_name WHERE referencing_object_type = 'VIEW' -- 替换为你的目标视图信息 AND referencing_database_name = 'YOUR_DATABASE' AND referencing_schema_name = 'YOUR_SCHEMA' AND referencing_object_name = 'YOUR_VIEW_NAME';
使用注意事项
- 执行查询的账号需要拥有目标视图、对应源表的元数据访问权限,否则会返回空结果
- 支持查询跨库、跨模式创建的视图依赖,所有关联的源表都会被枚举出来
- 不需要查询字段属性的话,可以删除SQL中关联
COLUMNS、TABLES的部分,只保留OBJECT_DEPENDENCIES的查询逻辑即可
补充:获取视图完整创建脚本
如果需要同步查看视图的原始创建SQL,可以使用如下查询:
SELECT view_definition FROM INFORMATION_SCHEMA.VIEWS WHERE table_catalog = 'YOUR_DATABASE' AND table_schema = 'YOUR_SCHEMA' AND table_name = 'YOUR_VIEW_NAME';
内容的提问来源于stack exchange,提问作者Kishor Kumar
相关产品推荐
相关产品推荐

