クエリのドライランの実行

CLI でクエリを実行する場合、--dry_run フラグを使用して、クエリで読み取られるバイト数を見積もることができます。また、API やクライアント ライブラリを使用してクエリジョブを送信する場合は、dryRun パラメータを使用できます。

ドライランによって返された見積もりを料金計算ツールで使用すると、クエリの費用を計算できます。ドライランの実行には料金はかかりません。

必要な権限

クエリジョブを実行するには、少なくとも 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 パラメータを含めます。

ドライランを実行する

ドライランを実行するには:

Console

現時点では、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 を使用してドライランを実行するには、ジョブ構成で dryRuntrue に設定したクエリジョブを送信します。

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))
このページは役立ちましたか?評価をお願いいたします。

フィードバックを送信...

ご不明な点がありましたら、Google のサポートページをご覧ください。