如何获取Snowflake数据仓库的历史及当前完整详细信息?
最优Snowflake仓库信息获取方案
针对你提到的两种方法的局限,这里给出更全面的解决方案:
1. 获取当前所有仓库的完整配置细节(含多集群)
直接查询INFORMATION_SCHEMA.WAREHOUSES元数据视图即可,它涵盖了所有当前存在的仓库(包括活跃、暂停状态)的全部核心配置,解决了SHOW WAREHOUSES仅能获取活跃仓库、基础细节缺失的问题。
示例查询:
SELECT warehouse_name, warehouse_size, auto_suspend, auto_resume, min_cluster_count, max_cluster_count, scaling_policy, state, created_on, updated_on FROM INFORMATION_SCHEMA.WAREHOUSES;
这个视图包含多集群的最小/最大集群数、缩放策略,以及仓库大小、自动暂停/恢复阈值、当前状态等所有关键细节,无需依赖RESULT_SCAN转换SHOW命令结果。
2. 获取历史仓库(含已删除)的完整信息
如果需要已删除的历史仓库数据,结合WAREHOUSE_EVENTS_HISTORY和QUERY_HISTORY来补全配置细节:
WAREHOUSE_EVENTS_HISTORY会记录仓库的创建、删除、修改事件,包括对应的QUERY_ID- 通过
QUERY_ID关联QUERY_HISTORY,获取创建/修改仓库的DDL语句,从中解析多集群等配置
示例查询:
-- 第一步:获取仓库事件记录(含已删除仓库) SELECT event_time, warehouse_name, event_type, query_id FROM TABLE(WAREHOUSE_EVENTS_HISTORY(START_TIME => DATEADD('day', -90, CURRENT_TIMESTAMP()))) WHERE event_type IN ('WAREHOUSE_CREATED', 'WAREHOUSE_DROPPED', 'WAREHOUSE_ALTERED'); -- 第二步:通过QUERY_ID获取对应的DDL语句,解析配置 SELECT q.query_id, q.query_text, q.start_time FROM TABLE(QUERY_HISTORY(START_TIME => DATEADD('day', -90, CURRENT_TIMESTAMP()))) q JOIN ( SELECT query_id FROM TABLE(WAREHOUSE_EVENTS_HISTORY(START_TIME => DATEADD('day', -90, CURRENT_TIMESTAMP()))) WHERE event_type IN ('WAREHOUSE_CREATED', 'WAREHOUSE_ALTERED') ) e ON q.query_id = e.query_id;
3. 实时活跃仓库的快速查询
如果仅需当前活跃仓库的完整配置,直接在INFORMATION_SCHEMA.WAREHOUSES中过滤状态即可:
SELECT * FROM INFORMATION_SCHEMA.WAREHOUSES WHERE state = 'STARTED';
内容的提问来源于stack exchange,提问作者electric wish
相关产品推荐
相关产品推荐

