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

如何在BigQuery中识别成本最高的已调度查询?

识别BigQuery中成本最高的已调度查询

方法一:通过系统表关联直接获取调度查询名称

BigQuery的INFORMATION_SCHEMA.TRANSFERS表存储了已调度查询(属于数据传输任务的一种)的元数据,包括显示名称。直接将它与JOBS表通过transfer_config_name字段关联,就能拿到对应调度查询的名称:

SELECT
  t.display_name AS 调度查询名称,
  TIMESTAMP_MILLIS(j.creation_time) AS 执行时间,
  j.job_id,
  j.user_email,
  j.bytes_billed AS 计费字节数,
  j.total_bytes_processed AS 总处理字节数
FROM `my_project_id.region-eu.INFORMATION_SCHEMA.JOBS` j
INNER JOIN `my_project_id.region-eu.INFORMATION_SCHEMA.TRANSFERS` t
  ON j.transfer_config_name = t.transfer_config_name
WHERE STARTS_WITH(j.job_id, 'scheduled_query') 
  AND j.parent_job_id IS NULL
ORDER BY j.bytes_billed DESC

这个方法无需手动添加任何标签,直接利用系统内置元数据关联,是最便捷的方式。

方法二:正确给调度查询添加标签(修复CLI命令)

你之前使用bq update命令时标签格式错误,BigQuery标签要求用key=value格式而非key:value,修正后的命令如下:

bq update --transfer_config projects/[你的项目ID]/locations/[区域]/transferConfigs/[传输配置ID] --set_label scheduled_query=[你的查询名称]

执行该命令后,后续调度运行的查询任务会自动带上这个标签,你可以在JOBS表的labels字段中看到,此时可用以下查询筛选:

SELECT
  TIMESTAMP_MILLIS(creation_time) AS 执行时间,
  job_id,
  user_email,
  labels.scheduled_query AS 调度查询名称,
  bytes_billed AS 计费字节数
FROM `my_project_id.region-eu.INFORMATION_SCHEMA.JOBS`
WHERE STARTS_WITH(job_id, 'scheduled_query') 
  AND parent_job_id IS NULL
ORDER BY bytes_billed DESC

注意事项

  • 会话标签SET @@query_label仅作用于子任务,无法关联到调度查询的父任务,不适合用于识别调度查询本身。
  • 关联TRANSFERS表的方法适用于所有已存在的调度查询历史任务,而添加标签的方式仅对命令执行后的新任务生效。

内容的提问来源于stack exchange,提问作者Sander van den Oord

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.10 01:45:30