在 bq
命令行工具中运行查询时,您可以使用 --dry_run
标志来估算查询读取的字节数。在使用 API 或客户端库提交查询作业时,您还可以使用 dryRun
参数。
您可以使用试运行返回的估算值在价格计算器中计算查询费用。您不需要为执行试运行的操作支付费用。
所需权限
如需运行查询作业,您必须至少拥有 bigquery.jobs.create
权限。为成功完成查询作业,您还必须具有对查询引用的表或视图的访问权限。您可以在以下级层授予对表或视图的访问权限,这些列表按允许的资源范围(从大到小)排序:
- Google Cloud 资源层次结构中的高级层,例如项目、文件夹或组织级层
- 在数据集级层
- 在表级层
以下预定义的 IAM 角色包含 bigquery.jobs.create
权限:
bigquery.user
bigquery.jobUser
bigquery.admin
此外,如果用户具有 bigquery.datasets.create
权限,则当该用户创建数据集时,系统会为其授予该数据集的 bigquery.dataOwner
访问权限。借助 bigquery.dataOwner
访问权限,用户可以查询数据集内的表和视图。
如需详细了解 BigQuery 中的 IAM 角色,请参阅预定义的角色和权限。
执行试运行
您可以使用以下方法对查询作业执行试运行:
- 在
bq
命令行工具中搭配query
命令使用--dry_run
标志 - 使用 API 或客户端库时在作业配置中设置
dryRun
参数
执行试运行
如需执行试运行,请执行以下操作:
控制台
目前,您无法使用 Cloud Console 执行试运行。
bq
使用 --dry_run
标志输入如下所示的查询。
bq query \ --use_legacy_sql=false \ --dry_run \ 'SELECT COUNTRY, AIRPORT, IATA FROM `project_id`.dataset.airports LIMIT 1000'
该命令会产生如下响应:
Query successfully validated. Assuming the tables are not modified, running this query will process 10918 bytes of data.
API
如需使用 API 执行试运行,请提交一项查询作业,并在 JobConfiguration 类型中将 dryRun
设置为 true
。
Go
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Go 设置说明进行操作。如需了解详情,请参阅 BigQuery Go API 参考文档。
Java
试用此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Java 设置说明进行操作。 如需了解详情,请参阅 BigQuery Java API 参考文档。
Python
要使用 Python 客户端库执行试运行,请将 QueryJobConfig.dry_run 属性设置为 True
。如果提供了试运行查询配置,Client.query() 将始终返回已完成的 QueryJob。
在尝试此示例之前,请按照《BigQuery 快速入门:使用客户端库》中的 Python 设置说明进行操作。如需了解详情,请参阅 BigQuery Python API 参考文档。