我正在尝试获取有关 BigQuery 中运行的查询数量及其状态的信息。
我试过这个:
select count(job_id) as job_count, state
from `MY_PROJECT`.`region-MY_REGION`.INFORMATION_SCHEMA.JOBS
where creation_time between
TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
AND CURRENT_TIMESTAMP()
and query not like 'select count(job_id) as job_count, state%'
and project_id = 'MY_PROJECT'
group by state;
但我似乎只获得由 my 用户提交的查询的计数。我知道还有更多的活动,因为当我进入监控页面“作业资源管理器”时,我还可以看到不同服务帐户提交的作业,以及每个状态有多少个作业。事实上,我可以在 UI 中看到这些作业,这让我怀疑这是一个与权限相关的问题(除非查询需要与 UI 不同的权限)。
我需要能够以编程方式获取该信息,而不是查看 UI,并且我不确定为什么上面的查询不能做到这一点。
您应该使用
INFORMATION_SCHEMA.JOBS_BY_PROJECT
而不是 INFORMATION_SCHEMA.JOBS
(它仅返回当前用户运行的作业)。还需要确保您拥有访问所需的权限INFORMATION_SCHEMA.JOBS_BY_PROJECT
。
select count(job_id) as job_count, state
from `MY_PROJECT`.`region-MY_REGION`.INFORMATION_SCHEMA.JOBS_BY_PROJECT
where creation_time between
TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)
AND CURRENT_TIMESTAMP()
and query not like 'select count(job_id) as job_count, state%'
and project_id = 'my_project'
group by state;