如何查看指定UDF关联的BigQuery表、视图及Tableau视图?
问题1:在BigQuery中列出所有使用同一UDF的视图与表
利用BigQuery内置的INFORMATION_SCHEMA.OBJECT_DEPENDENCIES视图可直接查询对象依赖关系。假设目标UDF的完整资源路径为projects/[你的项目ID]/datasets/[你的数据集ID]/routines/[UDF名称],执行以下SQL:
SELECT referencing_object_id, referencing_object_type, REGEXP_EXTRACT(referencing_object_id, r'tables/(.+)') AS object_name FROM `[你的项目ID].[你的数据集ID].INFORMATION_SCHEMA.OBJECT_DEPENDENCIES` WHERE referenced_object_id = "projects/[你的项目ID]/datasets/[你的数据集ID]/routines/[UDF名称]" AND referencing_object_type IN ('VIEW', 'TABLE')
若需要更直观的名称关联,可结合INFORMATION_SCHEMA.TABLES优化查询:
WITH udf_dependencies AS ( SELECT referencing_object_id, referencing_object_type FROM `[你的项目ID].[你的数据集ID].INFORMATION_SCHEMA.OBJECT_DEPENDENCIES` WHERE referenced_object_id = "projects/[你的项目ID]/datasets/[你的数据集ID]/routines/[UDF名称]" AND referencing_object_type IN ('VIEW', 'TABLE') ) SELECT t.table_name AS object_name, u.referencing_object_type FROM udf_dependencies u JOIN `[你的项目ID].[你的数据集ID].INFORMATION_SCHEMA.TABLES` t ON u.referencing_object_id = CONCAT('projects/[你的项目ID]/datasets/[你的数据集ID]/tables/', t.table_name)
问题2:查询自身所用UDF被哪些表及Tableau视图引用
2.1 BigQuery端的表/视图引用
复用问题1的查询逻辑,即可获取BigQuery内部的表和视图依赖关系。
2.2 Tableau视图的引用查询
Tableau的依赖关系存储在自身元数据中,需从Tableau侧进行查询:
Tableau Server/Cloud(需管理员权限)
连接到Tableau的PostgreSQL Repository,执行以下SQL查找包含目标UDF的视图:
SELECT w.name AS workbook_name, v.name AS view_name, ds.name AS datasource_name, f.calculation AS udf_usage_calculation FROM _workbooks w JOIN _views v ON w.id = v.workbook_id JOIN _datasources ds ON w.id = ds.workbook_id OR ds.id = v.datasource_id JOIN _fields f ON ds.id = f.datasource_id WHERE f.calculation LIKE '%[你的UDF完整名称,如my_project.my_dataset.my_udf]%'
Tableau Desktop
对于本地.twbx/.twb文件:
- 解压文件后,查看内部XML内容,搜索UDF名称定位使用它的视图
- 或使用Tableau元数据API解析文件,提取依赖关系
注意:Tableau Repository的表结构可能随版本变化,需根据实际版本调整查询语句。
内容的提问来源于stack exchange,提问作者Lara19
相关产品推荐
相关产品推荐

