You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Snowflake中如何查找所有依赖?含非视图/表类SELECT查询依赖

在Snowflake中查找临时SELECT语句对表的依赖

可行,针对未生成持久化对象(视图/表)的临时SELECT语句,你可以通过查询历史和解析查询计划来追踪它们对指定表的依赖,具体方法如下:

方法1:通过查询历史文本匹配快速筛选

利用Snowflake的账户级或会话级查询历史视图,筛选包含目标表的SELECT语句。这种方法适合快速排查,但可能存在文本误匹配的情况。

示例SQL:

SELECT 
  query_id,
  query_text,
  user_name,
  start_time
FROM SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY
WHERE 
  query_type = 'SELECT'
  -- 替换为你的目标表完整限定名,避免误匹配
  AND query_text ILIKE '%MY_DB.MY_SCHEMA.MY_TABLE%'
  -- 限定时间范围,减少数据量提升查询速度
  AND start_time >= DATEADD(day, -30, CURRENT_TIMESTAMP())
ORDER BY start_time DESC;

如果需要查看最近1小时的会话内查询,可改用会话级视图:

SELECT 
  query_id,
  query_text,
  start_time
FROM INFORMATION_SCHEMA.QUERY_HISTORY
WHERE 
  query_type = 'SELECT'
  AND query_text ILIKE '%MY_DB.MY_SCHEMA.MY_TABLE%'
ORDER BY start_time DESC;

方法2:解析查询计划实现精确依赖追踪

通过解析查询计划中的引用对象,能精准定位哪些SELECT语句引用了目标表,避免文本匹配的误判。

示例SQL:

SELECT 
  qh.query_id,
  qh.query_text,
  qh.user_name,
  qh.start_time,
  -- 提取被引用的表完整名称
  rp.value:objectName::STRING AS referenced_table
FROM 
  SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY qh,
  -- 展开查询计划节点
  LATERAL FLATTEN(input => PARSE_JSON(qh.query_plan):QueryPlan:Nodes) nodes,
  -- 展开节点中的引用对象
  LATERAL FLATTEN(input => nodes.value:References) rp
WHERE 
  qh.query_type = 'SELECT'
  -- 替换为目标表的完整限定名
  AND rp.value:objectName::STRING = 'MY_DB.MY_SCHEMA.MY_TABLE'
  AND qh.start_time >= DATEADD(day, -30, CURRENT_TIMESTAMP())
ORDER BY qh.start_time DESC;

注意事项

  • 数据延迟:账户级SNOWFLAKE.ACCOUNT_USAGE.QUERY_HISTORY存在15-60分钟的数据延迟,若需实时查询,优先使用会话级INFORMATION_SCHEMA.QUERY_HISTORY。
  • 权限要求:访问账户级查询历史需要MONITOR USAGE权限,访问信息模式视图需要对应的SELECT权限。
  • 数据保留期:账户级QUERY_HISTORY默认保留1年,会话级视图仅保留最近1小时,SNOWFLAKE.INFORMATION_SCHEMA.QUERY_HISTORY保留最近7天。

内容的提问来源于stack exchange,提问作者kikee1222

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.14 10:02:49