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

如何在BigQuery中查询指定视图的所有依赖视图与存储过程?

在BigQuery中追踪视图的依赖对象

BigQuery通过INFORMATION_SCHEMA提供了内置元数据表,可直接用于查询指定视图的依赖对象(包括视图和存储过程)。核心用到以下两张表:

1. 追踪依赖视图

使用VIEW_DEPENDENCIES表,该表记录了视图对其他表、视图的依赖关系。要找出所有直接引用指定视图的视图,可执行以下查询:

SELECT
  referencing_view_name AS dependent_object_name,
  'VIEW' AS object_type
FROM
  `[你的项目ID].[你的数据集ID].INFORMATION_SCHEMA.VIEW_DEPENDENCIES`
WHERE
  referenced_table_name = 'View_A' -- 替换为目标视图名称
  AND referenced_dataset_id = '[你的数据集ID]'
  AND referenced_project_id = '[你的项目ID]'

2. 追踪依赖存储过程

使用ROUTINE_DEPENDENCIES表,该表记录了存储过程、函数对其他对象的依赖。要找出直接引用指定视图的存储过程,可执行:

SELECT
  referencing_routine_name AS dependent_object_name,
  'STORED PROCEDURE' AS object_type
FROM
  `[你的项目ID].[你的数据集ID].INFORMATION_SCHEMA.ROUTINE_DEPENDENCIES`
WHERE
  referenced_table_name = 'View_A' -- 替换为目标视图名称
  AND referenced_dataset_id = '[你的数据集ID]'
  AND referenced_project_id = '[你的项目ID]'
  AND referencing_routine_type = 'PROCEDURE' -- 仅筛选存储过程,排除函数

3. 查询全层级递归依赖

如果需要找出所有间接依赖(比如引用了依赖目标视图的视图/存储过程),可以用递归CTE实现:

递归查询所有依赖视图

WITH RECURSIVE recursive_view_deps AS (
  -- 初始直接依赖
  SELECT
    referencing_view_name AS dependent_view,
    1 AS dependency_level
  FROM
    `[你的项目ID].[你的数据集ID].INFORMATION_SCHEMA.VIEW_DEPENDENCIES`
  WHERE
    referenced_table_name = 'View_A'
    AND referenced_dataset_id = '[你的数据集ID]'
    AND referenced_project_id = '[你的项目ID]'
  UNION ALL
  -- 递归查找间接依赖
  SELECT
    vd.referencing_view_name,
    rvd.dependency_level + 1
  FROM
    `[你的项目ID].[你的数据集ID].INFORMATION_SCHEMA.VIEW_DEPENDENCIES` vd
  JOIN recursive_view_deps rvd 
    ON vd.referenced_table_name = rvd.dependent_view
    AND vd.referenced_dataset_id = '[你的数据集ID]'
    AND vd.referenced_project_id = '[你的项目ID]'
)
SELECT
  dependent_view AS dependent_object_name,
  'VIEW' AS object_type,
  dependency_level
FROM recursive_view_deps
ORDER BY dependency_level;

注意事项

  • 务必替换查询中的[你的项目ID]、[你的数据集ID]和View_A为实际值
  • 上述查询默认仅覆盖当前数据集内的依赖,若需跨数据集/项目查询,需调整过滤条件或使用跨数据集查询语法
  • 存储过程的递归依赖查询逻辑类似,可基于ROUTINE_DEPENDENCIES修改递归CTE实现

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 09:01:04