Émettre une simulation de requête
Lorsque vous exécutez une requête dans l'outil de ligne de commande bq
, vous pouvez utiliser l'option --dry_run
pour estimer le nombre d'octets lus par la requête. Vous pouvez également utiliser le paramètre dryRun
lorsque vous envoyez une tâche de requête à l'aide de l'API ou des bibliothèques clientes.
Les simulations n'utilisent pas d'emplacements de requête, et leur exécution ne vous est pas facturée. L'estimation renvoyée par la simulation vous permettra de calculer les coûts de requête dans le simulateur de coût.
Avant de commencer
Attribuez aux utilisateurs des rôles IAM (Identity and Access Management) incluant les autorisations nécessaires pour effectuer l'ensemble des tâches du présent document.
les autorisations requises pour l'extension ;
Pour exécuter une tâche de requête, vous devez disposer de l'autorisation IAM (Identity and Access Management) bigquery.jobs.create
pour le projet qui exécute la tâche de requête.
Chacun des rôles IAM prédéfinis suivants inclut les autorisations dont vous avez besoin pour exécuter une tâche de requête :
roles/bigquery.admin
roles/bigquery.jobUser
roles/bigquery.user
Vous devez également disposer de l'autorisation bigquery.tables.getData
sur toutes les tables et vues auxquelles votre requête fait référence. Lorsque vous interrogez une vue, vous devez également disposer de cette autorisation sur toutes les tables et vues sous-jacentes.
Toutefois, si vous utilisez des vues autorisées ou des ensembles de données autorisés, vous n'avez pas besoin d'accéder aux données sources sous-jacentes.
Chacun des rôles IAM prédéfinis suivants inclut l'autorisation dont vous avez besoin sur toutes les tables et vues auxquelles la requête fait référence :
roles/bigquery.admin
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.dataViewer
Pour en savoir plus sur les rôles IAM dans BigQuery, consultez la page Rôles prédéfinis et autorisations.
Effectuer des simulations
Vous pouvez effectuer une simulation de tâche de requête de plusieurs façons :
- En utilisant l'option
--dry_run
avec la commandequery
dans l'outil de ligne de commandebq
- En définissant le paramètre
dryRun
dans la configuration de la tâche lorsque vous utilisez l'API ou les bibliothèques clientes
Pour effectuer une simulation, procédez comme suit :
Console
Accédez à la page BigQuery de Google Cloud Console.
Saisissez votre requête dans l'Éditeur de requête.
Si la requête est valide, une coche apparaît automatiquement avec la quantité de données que la requête va traiter. Si la requête n'est pas valide, un point d'exclamation apparaît avec un message d'erreur.
bq
Saisissez une requête semblable à celle-ci à l'aide de l'option --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 avec l'API, envoyez une tâche de requête avec la valeur dryRun
définie sur true
dans le type JobConfiguration.
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 sur l'API BigQuery en langage Go.
Java
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Java 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 Java.
Node.js
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Node.js 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 Node.js.
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 configuration de requête simulée.
Avant d'essayer l'exemple ci-dessous, suivez la procédure de configuration pour Python 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 Python.