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

如何通过SQL查询BigQuery中用户查询历史及特定表访问用户

如何查询访问过特定BigQuery表的用户

可以通过查询BigQuery的作业历史视图实现需求,INFORMATION_SCHEMA基础表确实没有直接关联表与查询历史的条目,需要结合作业日志和查询语句解析来筛选。

具体SQL示例

替换<你的项目ID>、<目标数据集.目标表>和<区域>(比如us)后执行:

SELECT
  job_id,
  user_email,
  start_time,
  query
FROM
  `<你的项目ID>.<区域>.INFORMATION_SCHEMA.JOBS_BY_PROJECT`
WHERE
  job_type = 'QUERY'
  AND state = 'DONE'
  -- 解析查询语句中的表引用,匹配目标表
  AND EXISTS (
    SELECT 1
    FROM UNNEST(bqutil.fn.parse_table_references(query)) AS ref
    WHERE ref.table = '<目标数据集.目标表>'
  )
ORDER BY start_time DESC

关键说明

  • bqutil.fn.parse_table_references是BigQuery内置UDF,能自动解析查询语句中引用的所有表,避免手动正则匹配的繁琐。
  • 作业历史默认保留60天,若需更长时间(最多180天),需在项目设置中调整作业日志保留期。
  • 执行该查询需要bigquery.jobs.list权限,以及对应项目的作业历史访问权限。
  • 视图区域需与BigQuery项目区域一致,比如项目在europe-west1,就用europe-west1.INFORMATION_SCHEMA.JOBS_BY_PROJECT。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.08 16:44:54