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

如何通过BigQuery Java API区分按需与固定费率定价的查询?

解决方法:通过BigQuery Java API识别按需/固定费率查询

默认调用getJob(JobId)时,返回的Job对象不会加载所有字段(比如reservationUsage),需要显式指定要获取的字段集合,才能拿到区分定价类型的关键信息。

步骤1:修改API调用,指定需要的字段

调用getJob方法时,添加BigQuery.JobsGetOption.fields()参数,明确包含reservationUsage字段,同时保留你需要的其他核心字段(如配置、状态、统计信息):

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobId;

public class GetJobWithReservation {
    public static void main(String[] args) {
        String projectId = "你的项目ID";
        String jobIdStr = "目标Job的ID";
        String location = "Job所在区域"; // 例如US、EU

        BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();
        JobId jobId = JobId.newBuilder()
            .setJob(jobIdStr)
            .setLocation(location)
            .setProject(projectId)
            .build();

        // 显式指定要获取的字段,包含reservationUsage
        Job job = bigquery.getJob(jobId, BigQuery.JobsGetOption.fields(
            "jobConfiguration", "status", "statistics", "reservationUsage"
        ));

        // 判断定价类型
        if (job.getReservationUsage() != null && !job.getReservationUsage().isEmpty()) {
            System.out.println("该查询使用固定费率(预留资源)定价");
            // 可进一步查看预留详情
            job.getReservationUsage().forEach(usage -> {
                System.out.println("预留ID: " + usage.getReservationId());
                System.out.println("槽位使用时长: " + usage.getSlotMs());
            });
        } else {
            System.out.println("该查询使用按需定价");
        }
    }
}

关键逻辑说明

  • 固定费率查询:当查询使用预留资源时,job.getReservationUsage()会返回非空列表,包含该查询消耗的预留资源详情(如预留ID、槽位使用时长)。
  • 按需定价查询:此类查询不关联任何预留资源,job.getReservationUsage()会返回null或空列表。

注意事项

  • 确保服务账号拥有bigquery.jobs.get权限,否则无法获取Job的完整信息。
  • 若Job为跨地区执行,必须在JobId中指定正确的location,否则会出现Job找不到的情况。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.19 12:40:28