如何统计BigQuery中指定数据集的查询执行次数?
统计指定数据集的查询次数
要只统计mydatasets数据集的查询次数,你可以在查询INFORMATION_SCHEMA.JOBS时添加过滤条件,精准定位到涉及该数据集的作业。以下是两种可行的方法:
方法1:通过查询语句匹配数据集名称
直接筛选查询文本中包含目标数据集的作业,适合快速统计:
SELECT COUNT(*) AS total_queries FROM `myproject.INFORMATION_SCHEMA.JOBS` WHERE job_type = 'QUERY' -- 匹配数据集名称,兼容带反引号和不带的写法 AND REGEXP_CONTAINS(query, r'`?myproject\.mydatasets`?') -- 只统计已完成的作业,排除失败或运行中的 AND state = 'DONE'
方法2:通过系统记录的引用数据集筛选
利用JOB_DETAILS表的referenced_datasets字段,更精准统计实际访问过该数据集的查询:
SELECT COUNT(DISTINCT job_id) AS total_queries FROM `myproject.INFORMATION_SCHEMA.JOB_DETAILS` WHERE job_type = 'QUERY' AND state = 'DONE' -- 指定目标项目和数据集 AND EXISTS ( SELECT 1 FROM UNNEST(referenced_datasets) AS ds WHERE ds.project_id = 'myproject' AND ds.dataset_id = 'mydatasets' )
注意事项:
- 替换
myproject为你的实际项目ID state = 'DONE'可选,若需要包含失败的查询可去掉该条件- 第二种方法会排除那些查询文本里写了数据集但实际未访问的情况(比如查询被优化后没读取该数据集)
内容的提问来源于stack exchange,提问作者Ranjith
相关产品推荐
相关产品推荐

