Effectuer une simulation de requête

Lorsque vous exécutez une requête dans la CLI, vous pouvez utiliser l'indicateur --dry_run pour estimer le nombre d'octets lus par la requête. Vous pouvez également définir le paramètre dryRun lorsque vous envoyez une tâche de requête à l'aide de l'API ou des bibliothèques clientes.

L'estimation renvoyée par la simulation vous permettra de calculer les coûts de requête dans le simulateur de coût. L'exécution d'une simulation ne vous est pas facturée.

Autorisations requises

Pour exécuter une tâche de requête, vous devez au minimum disposer des autorisations bigquery.jobs.create. Ensuite, pour que cette tâche de requête aboutisse, vous devez également disposer d'un accès aux ensembles de données contenant les tables ou les vues référencées par la requête. Pour plus d'informations sur les contrôles d'accès aux ensembles de données, consultez la page Contrôler l'accès aux ensembles de données.

Vous trouverez ci-dessous les rôles Cloud IAM prédéfinis qui incluent les autorisations bigquery.jobs.create :

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

En outre, si un utilisateur possède des autorisations bigquery.datasets.create, lorsqu'il crée un ensemble de données, il obtient également le rôle bigquery.dataOwner qui lui permet d'y accéder. L'accès bigquery.dataOwner donne à l'utilisateur la possibilité d'interroger des tables et des vues dans l'ensemble de données.

Pour en savoir plus sur les rôles Cloud IAM dans BigQuery, consultez la page Rôles et autorisations prédéfinis.

Effectuer des simulations

Vous pouvez effectuer une simulation de tâche de requête de plusieurs façons :

  • En utilisant l'indicateur --dry_run avec la commande query dans l'interface de ligne de commande
  • En définissant le paramètre dryRun dans la configuration de la tâche lorsque vous utilisez l'API ou les bibliothèques clientes

Effectuer une simulation

Pour effectuer une simulation, procédez comme suit :

Console

Actuellement, vous ne pouvez pas effectuer de simulation à l'aide de la console GCP.

UI classique

Actuellement, vous ne pouvez pas effectuer de simulation à l'aide de l'interface utilisateur Web.

CLI

Saisissez une requête semblable à celle-ci à l'aide de l'indicateur --dry_run.

bq query \
--use_legacy_sql=false \
--dry_run \
'SELECT
   COUNTRY,
   AIRPORT,
   IATA
 FROM
   `project_id`.dataset.airports
 LIMIT
   1000'
 

La commande produit la réponse suivante :

Query successfully validated. Assuming the tables are not modified,
running this query will process 10918 bytes of data.

API

Pour effectuer une simulation à l'aide de l'API, envoyez une tâche de requête en définissant le paramètre dryRun sur true dans la configuration de la tâche.

Go

Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Go décrite dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence de l'API BigQuery Go.

// 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

Pour effectuer une simulation avec la bibliothèque cliente Python, définissez la propriété QueryJobConfig.dry_run sur True. La méthode Client.query() renvoie toujours une tâche QueryJob terminée lorsque vous lui transmettez une simulation de configuration de requête.

Avant d'essayer cet exemple, suivez les instructions de configuration de Python décrites dans le guide de démarrage rapide de BigQuery : Utiliser les bibliothèques clientes. Pour en savoir plus, consultez la documentation de référence sur l'API BigQuery Python.

# 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))
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…

Besoin d'aide ? Consultez notre page d'assistance.