如何获取无直接项目的文件夹下所有BigQuery作业元数据?
跨子文件夹BigQuery作业查询解决方案
你的判断是对的,这种场景下必须使用INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION视图才能实现需求,具体原因和操作如下:
为什么JOBS_BY_FOLDER不适用
INFORMATION_SCHEMA.JOBS_BY_FOLDER的查询范围被限定为当前执行查询的项目的直接父文件夹及其所有子层级。在你的GCP架构中,project_X的直接父文件夹是folder_B,因此该视图只能返回folder_B分支下(仅project_X)的作业数据,而folder_C属于folder_A的同级子文件夹,不在folder_B的覆盖范围内,自然无法获取project_Y的作业元数据。
使用JOBS_BY_ORGANIZATION的查询示例
通过JOBS_BY_ORGANIZATION视图,你可以精准筛选出folder_A下所有子文件夹内项目的作业数据,示例语句如下:
SELECT DISTINCT project_id FROM `[你的组织ID].region-europe-west4`.INFORMATION_SCHEMA.JOBS_BY_ORGANIZATION WHERE STARTS_WITH(project_folder_path, 'folders/[folder_A的ID]/')
这里用STARTS_WITH确保只匹配folder_A的直接或间接子项目,避免获取组织内其他无关文件夹的作业数据。
权限要求
- 执行该查询需要拥有组织级的
bigquery.jobs.list权限,或者被授予如roles/bigquery.dataViewer这类包含该权限的组织级IAM角色。
内容的提问来源于stack exchange,提问作者godot
相关产品推荐
相关产品推荐

