發出查詢模擬測試

當您在 CLI 中執行查詢時,可以使用 --dry_run 標記預估查詢讀取的位元組數,也可在使用 API 或用戶端程式庫提交查詢工作時使用 dryRun 參數。

您可以利用模擬測試傳回的預估值,在 Pricing calculator 中計算查詢費用。執行模擬測試不會收取費用。

必要權限

您至少要具備 bigquery.jobs.create 權限,才能執行查詢工作。此外,如要順利完成查詢工作,您還必須具備相關權限以存取該查詢工作參照的資料表或檢視表所屬的資料集。如要進一步瞭解資料集存取權控管,請參閱控管資料集存取權一文。

以下是具有 bigquery.jobs.create 權限的預先定義 Cloud IAM 角色:

  • bigquery.user
  • bigquery.jobUser
  • bigquery.admin

此外,當具備 bigquery.datasets.create 權限的使用者建立資料集時,會獲得 bigquery.dataOwner 存取權。 bigquery.dataOwner 存取權可讓使用者查詢資料集中的資料表和檢視表。

如要進一步瞭解 BigQuery 中的 Cloud IAM 角色和權限,請參閱預先定義的角色和權限一文。

執行模擬測試

您可以使用以下方式執行查詢的模擬測試:

  • CLI 中的 query 指令搭配 --dry_run 標記
  • 使用 API 或用戶端程式庫時,工作設定中的 dryRun 參數

執行模擬測試

如要執行模擬測試:

主控台

目前無法使用 GCP Console 執行模擬測試。

傳統版 UI

目前無法使用網頁版 UI 執行模擬測試。

CLI

使用 --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 執行模擬測試,請在工作設定中將 dryRun 設定成 true 來提交查詢工作。

Go

在嘗試這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Go 設定說明進行操作。詳情請參閱 BigQuery Go API 參考說明文件

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
q := client.Query(`
SELECT
	name,
	COUNT(*) as name_count
FROM ` + "`bigquery-public-data.usa_names.usa_1910_2013`" + `
WHERE state = 'WA'
GROUP BY name`)
q.DryRun = true
// Location must match that of the dataset(s) referenced in the query.
q.Location = "US"

job, err := q.Run(ctx)
if err != nil {
	return err
}
// Dry run is not asynchronous, so get the latest status and statistics.
status := job.LastStatus()
if err != nil {
	return err
}
fmt.Printf("This query will process %d bytes\n", status.Statistics.TotalBytesProcessed)

Python

如要使用 Python 用戶端程式庫執行模擬測試,請將 QueryJobConfig.dry_run 屬性設為 True。 如果有提供模擬測試的查詢設定,則 Client.query() 一律會傳回已完成的 QueryJob

在嘗試這個範例之前,請先按照 BigQuery 快速入門導覽課程:使用用戶端程式庫中的 Python 設定說明進行操作。詳情請參閱 BigQuery Python API 參考說明文件

# from google.cloud import bigquery
# client = bigquery.Client()

job_config = bigquery.QueryJobConfig()
job_config.dry_run = True
job_config.use_query_cache = False
query_job = client.query(
    (
        "SELECT name, COUNT(*) as name_count "
        "FROM `bigquery-public-data.usa_names.usa_1910_2013` "
        "WHERE state = 'WA' "
        "GROUP BY name"
    ),
    # Location must match that of the dataset(s) referenced in the query.
    location="US",
    job_config=job_config,
)  # API request

# A dry run query completes immediately.
assert query_job.state == "DONE"
assert query_job.dry_run

print("This query will process {} bytes.".format(query_job.total_bytes_processed))
本頁內容對您是否有任何幫助?請提供意見:

傳送您對下列選項的寶貴意見...

這個網頁