Vue RESERVATIONS

La vue INFORMATION_SCHEMA.RESERVATIONS contient la liste de toutes les réservations en cours dans le projet d'administration. Chaque ligne représente une seule réservation en cours. Une réservation en cours est une réservation qui n'a pas été supprimée. Pour en savoir plus sur la réservation, consultez la section Présentation des réservations.

Autorisation requise

Pour interroger la vue INFORMATION_SCHEMA.RESERVATIONS, vous devez disposer de l'autorisation IAM (Identity and Access Management) bigquery.reservations.list pour le projet. Chacun des rôles IAM prédéfinis suivants inclut l'autorisation requise:

  • roles/bigquery.resourceAdmin
  • roles/bigquery.resourceEditor
  • roles/bigquery.resourceViewer
  • roles/bigquery.user
  • roles/bigquery.admin

Pour plus d'informations sur les autorisations BigQuery, consultez la page Contrôle des accès avec IAM.

Schéma

La vue INFORMATION_SCHEMA.RESERVATIONS présente le schéma suivant :

Nom de la colonne Type de données Valeur
ddl STRING Instruction LDD utilisée pour créer la réservation.
project_id STRING ID du projet d'administration.
project_number INTEGER Numéro du projet d'administration.
reservation_name STRING Nom de réservation fourni par l'utilisateur.
ignore_idle_slots BOOL Si la valeur est définie sur "false", toute requête utilisant cette réservation peut exploiter des emplacements inactifs provenant d'autres engagements de capacité.
slot_capacity INTEGER Référence de la réservation.
target_job_concurrency INTEGER Nombre cible de requêtes pouvant être exécutées simultanément, qui est limité par les ressources disponibles. Si ce nombre est égal à zéro, la valeur est calculée automatiquement en fonction des ressources disponibles.
autoscale STRUCT

Informations sur la capacité d'autoscaling de la réservation. Les champs incluent les suivants :

  • current_slots: nombre d'emplacements ajoutés à la réservation par l'autoscaling.
  • max_slots : nombre maximal d'emplacements pouvant être ajoutés à la réservation par autoscaling.
edition STRING Édition associée à cette réservation. Pour en savoir plus sur les éditions, consultez la page Présentation des éditions BigQuery.

Champ d'application et syntaxe

Les requêtes exécutées sur cette vue doivent inclure un qualificatif de région. Si vous ne spécifiez pas de qualificatif de région, les métadonnées sont extraites de toutes les régions. Le tableau suivant explique le champ d'application de la région pour cette vue :

Nom de la vue Champ d'application de la ressource Champ d'application de la région
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.RESERVATIONS[_BY_PROJECT] Niveau Projet REGION
Remplacez les éléments suivants :

  • Facultatif : PROJECT_ID : ID de votre projet Google Cloud. Si non spécifié, le projet par défaut est utilisé.
  • REGION : tout nom de région d'ensemble de données. Exemple : region-us.

Effectuer une jointure entre les vues de réservations et les vues de tâches

Les vues de tâches contiennent la colonne reservation_id. Si votre tâche a été exécutée dans un projet auquel une réservation est attribuée, reservation_id doit respecter le format suivant : reservation-admin-project:reservation-location.reservation-name.

Pour effectuer une jointure entre les vues de réservation et les vues de tâche, vous pouvez procéder entre la colonne reservation_id des vues de tâche et les colonnes de vues de réservation project_id et reservation_name. L'exemple suivant montre comment utiliser la clause JOIN entre les vues de réservation et de tâche.

Exemple

L'exemple suivant montre l'utilisation des emplacements, la capacité d'emplacements et la réservation attribuée pour un projet avec une attribution de réservation, au cours de l'heure précédente. L'utilisation des emplacements est indiquée en unités d'emplacements de millisecondes par seconde.

WITH
  job_data AS (
  SELECT
    job.period_start,
    job.reservation_id,
    job.period_slot_ms,
    job.job_id,
    job.job_type
  FROM
    `my-project.region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE AS job
  WHERE
    job.period_start > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR))
SELECT
  reservation.reservation_name AS reservation_name,
  job.period_start,
  reservation.slot_capacity,
  job.period_slot_ms,
  job.job_id,
  job.job_type
FROM
  job_data AS job
INNER JOIN
  `reservation-admin-project.region-us`.INFORMATION_SCHEMA.RESERVATIONS AS reservation
ON
  (job.reservation_id = CONCAT(reservation.project_id, ":", "US", ".", reservation.reservation_name));

Le résultat ressemble à ce qui suit :

+------------------+---------------------+---------------+----------------+------------------+----------+
| reservation_name |    period_start     | slot_capacity | period_slot_ms |           job_id | job_type |
+------------------+---------------------+---------------+----------------+------------------+----------+
| my_reservation   | 2021-04-30 17:30:54 |           100 |          11131 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:55 |           100 |          49978 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:56 |           100 |           9038 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:57 |           100 |          17237 | bquxjob_66707... | QUERY    |

Cette requête utilise la vue RESERVATIONS pour obtenir des informations sur une réservation. Si les réservations ont été modifiées au cours de l'heure précédente, la colonne reservation_slot_capacity peut ne pas être exacte.

La requête joint RESERVATIONS à JOBS_TIMELINE pour associer les tranches horaires de la tâche aux informations de réservation.