INFORMATION_SCHEMA
est une série de vues donnant accès aux métadonnées sur des ensembles de données, des routines, des tables, des vues, des tâches, des réservations et des données de streaming.
Vous pouvez récupérer les métadonnées en temps réel des réservations BigQuery en interrogeant les vues des réservations INFORMATION_SCHEMA
. Ces vues contiennent une liste des modifications apportées aux réservations, aux attributions et aux engagements de capacité, ainsi qu'une chronologie des réservations.
Autorisations requises
La récupération des métadonnées de réservation à l'aide des tables INFORMATION_SCHEMA
nécessite des autorisations dotées de niveaux d'accès appropriés :
RESERVATION_CHANGES_BY_PROJECT
etRESERVATIONS_BY_PROJECT
nécessitent l'autorisationbigquery.reservations.list
pour le projet et sont disponibles pour les rôlesBigQuery User
,BigQuery Resource Admin
etBigQuery Admin
.CAPACITY_COMMITMENT_CHANGES_BY_PROJECT
etCAPACITY_COMMITMENTS_BY_PROJECT
nécessitent l'autorisationbigquery.capacityCommitments.list
pour le projet et sont disponibles pour les rôlesBigQuery User
,BigQuery Resource Admin
etBigQuery Admin
.ASSIGNMENT_CHANGES_BY_PROJECT
etASSIGNMENTS_BY_PROJECT
nécessitent l'autorisationbigquery.reservationAssignments.list
pour le projet et sont disponibles pour les rôlesBigQuery User
,BigQuery Resource Admin
etBigQuery Admin
.
Schémas
Lorsque vous interrogez les vues de réservation INFORMATION_SCHEMA
, les résultats de la requête contiennent des informations sur les réservations BigQuery.
Pour en savoir plus sur les réservations BigQuery, consultez la page sur les concepts de réservation.
INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT
contient la liste de toutes les modifications apportées aux réservations dans le projet d'administration. Chaque ligne représente une modification apportée à une seule réservation.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT
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.INFORMATION_SCHEMA.CAPACITY_COMMITMENT_CHANGES_BY_PROJECT
contient une liste de toutes les modifications apportées aux engagements de capacité dans le projet d'administration. Chaque ligne représente une modification apportée à un seul engagement de capacité.INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT
contient la liste de tous les engagements de capacité en cours dans le projet d'administration. Chaque ligne représente un seul engagement de capacité en cours. Un engagement de capacité en cours est en attente ou actif, et n'a pas été supprimé.INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT
contient la liste de toutes les modifications apportées aux attributions dans le projet d'administration. Chaque ligne représente une modification apportée à une seule attribution.INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT
contient la liste de toutes les attributions en cours dans le projet d'administration. Chaque ligne représente une seule attribution en cours. Une attribution en cours est en attente ou active, et n'a pas été supprimée.
La vue INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT
présente le schéma suivant :
Nom de la colonne | Type de données | Valeur |
---|---|---|
change_timestamp |
TIMESTAMP |
Heure à laquelle la modification s'est produite. |
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é. |
action |
STRING |
Type d'événement survenu lors de la réservation. Il peut s'agir de CREATE , UPDATE ou DELETE . |
slot_capacity |
INTEGER |
Capacité d'emplacements associée à la réservation. |
user_email |
STRING |
Adresse e-mail de l'utilisateur qui a effectué la modification. google pour les modifications apportées par Google. NULL si l'adresse e-mail est inconnue. |
La vue INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT
présente le schéma suivant :
Nom de la colonne | Type de données | Valeur |
---|---|---|
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 |
Capacité d'emplacements associée à la réservation. |
La vue INFORMATION_SCHEMA.CAPACITY_COMMITMENT_CHANGES_BY_PROJECT
présente le schéma suivant :
Nom de la colonne | Type de données | Valeur |
---|---|---|
change_timestamp |
TIMESTAMP |
Heure à laquelle la modification s'est produite. |
project_id |
STRING |
ID du projet d'administration. |
project_number |
INTEGER |
Numéro du projet d'administration. |
capacity_commitment_id |
STRING |
ID qui identifie de manière unique l'engagement de capacité. |
commitment_plan |
STRING |
Forfait de l'engagement de capacité. |
state |
STRING |
État de l'engagement de capacité. Il peut s'agir de PENDING ou ACTIVE . |
slot_count |
INTEGER |
Nombre d'emplacements associés à l'engagement de capacité. |
action |
STRING |
Type d'événement survenu avec l'engagement de capacité. Il peut s'agir de CREATE , UPDATE ou DELETE . |
user_email |
STRING |
Adresse e-mail de l'utilisateur qui a effectué la modification. google pour les modifications apportées par Google. NULL si l'adresse e-mail est inconnue. |
commitment_start_time |
TIMESTAMP |
Début de la période d'engagement en cours. Ne s'applique qu'aux engagements de capacité ACTIVE . Sinon, la valeur est NULL . |
commitment_end_time |
TIMESTAMP |
Fin de la période d'engagement en cours. Ne s'applique qu'aux engagements de capacité ACTIVE . Sinon, la valeur est NULL . |
failure_status |
RECORD |
Indique le motif de l'échec pour un forfait avec engagement à l'état FAILED . Sinon, la valeur est NULL . RECORD est constitué d'un code et d'un message . |
renewal_plan |
STRING |
Forfait vers lequel cet engagement de capacité est converti une fois le champ commitment_end_time transmis. Après modification du forfait, la période d'engagement est prolongée conformément à celui-ci. Ne s'applique qu'aux engagements ANNUAL et TRIAL . Sinon, la valeur est NULL . |
La vue INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT
présente le schéma suivant :
Nom de la colonne | Type de données | Valeur |
---|---|---|
project_id |
STRING |
ID du projet d'administration. |
project_number |
INTEGER |
Numéro du projet d'administration. |
capacity_commitment_id |
STRING |
ID qui identifie de manière unique l'engagement de capacité. |
commitment_plan |
STRING |
Forfait de l'engagement de capacité. |
state |
STRING |
État de l'engagement de capacité. Il peut s'agir de PENDING ou ACTIVE . |
slot_count |
INTEGER |
Nombre d'emplacements associés à l'engagement de capacité. |
La vue INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT
présente le schéma suivant :
Nom de la colonne | Type de données | Valeur |
---|---|---|
change_timestamp |
TIMESTAMP |
Heure à laquelle la modification s'est produite. |
project_id |
STRING |
ID du projet d'administration. |
project_number |
INTEGER |
Numéro du projet d'administration. |
assignment_id |
STRING |
ID qui identifie de manière unique l'attribution. |
reservation_name |
STRING |
Nom de la réservation utilisée par l'attribution. |
job_type |
STRING |
Type de tâche pouvant utiliser la réservation. Il peut s'agir de PIPELINE ou QUERY . |
assignee_id |
STRING |
ID qui identifie de manière unique la ressource affectée. |
assignee_number |
INTEGER |
Numéro qui identifie de manière unique la ressource affectée. |
assignee_type |
STRING |
Type de ressource affectée. Il peut s'agir de organization , folder ou project . |
action |
STRING |
Type d'événement survenu lors de l'attribution. Il peut s'agir de CREATE ou DELETE . |
user_email |
STRING |
Adresse e-mail de l'utilisateur qui a effectué la modification. google pour les modifications apportées par Google. NULL si l'adresse e-mail est inconnue. |
state |
STRING |
État de l'attribution. Il peut s'agir de PENDING ou ACTIVE . |
La vue INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT
présente le schéma suivant :
Nom de la colonne | Type de données | Valeur |
---|---|---|
project_id |
STRING |
ID du projet d'administration. |
project_number |
INTEGER |
Numéro du projet d'administration. |
assignment_id |
STRING |
ID qui identifie de manière unique l'attribution. |
reservation_name |
STRING |
Nom de la réservation utilisée par l'attribution. |
job_type |
STRING |
Type de tâche pouvant utiliser la réservation. Il peut s'agir de PIPELINE ou QUERY . |
assignee_id |
STRING |
ID qui identifie de manière unique la ressource affectée. |
assignee_number |
INTEGER |
Numéro qui identifie de manière unique la ressource affectée. |
assignee_type |
STRING |
Type de ressource affectée. Il peut s'agir de organization , folder ou project . |
Conservation des données
Les réservations, les engagements de capacité et les attributions en cours sont conservés dans les vues de réservations jusqu'à ce qu'ils soient supprimés. Les réservations, les engagements de capacité et les attributions supprimés sont respectivement conservés dans les vues RESERVATION_CHANGES_BY_PROJECT
, CAPACITY_COMMITMENT_CHANGES_BY_PROJECT
et ASSIGNMENT_CHANGES_BY_PROJECT
pendant une durée maximale de 41 jours, après quoi ils sont supprimés des vues.
Régionalité
Les vues des réservations INFORMATION_SCHEMA
BigQuery sont régionalisées. Pour interroger ces vues, vous devez utiliser un qualificatif de région.
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éservations et les vues de tâches, vous pouvez associer la colonne reservation_id
des vues de tâches aux colonnes des vues de réservations project_id
et reservation_name
. Consultez cet exemple.
Exemples
Exemple 1
Dans l'exemple suivant, on récupère la réservation actuellement attribuée au projet ainsi que sa capacité d'emplacements. Ces informations peuvent vous aider à déboguer les performances des tâches en comparant l'utilisation de l'emplacement du projet avec la capacité d'emplacements attribuée à ce même projet.
La requête doit s'exécuter sur le projet d'administration contenant les réservations.
Pour exécuter la requête sur un projet autre que celui par défaut, ajoutez l'ID du projet en respectant le format suivant : `project-id`.`region-region-name`.INFORMATION_SCHEMA.view
.
Exemple : `reservation-admin-project`.`region-us`.INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT
Pour exécuter la requête :
Console
Dans Cloud Console, ouvrez la page "BigQuery".
Dans la zone Éditeur de requête, saisissez la requête en SQL standard suivante.
INFORMATION_SCHEMA
requiert la syntaxe SQL standard. Le langage SQL standard est la syntaxe par défaut dans Cloud Console.SELECT reservation.reservation_name, reservation.slot_capacity FROM `reservation-admin-project.region-us`. INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT assignment INNER JOIN `reservation-admin-project.region-us`. INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT AS reservation ON (assignment.reservation_name = reservation.reservation_name) WHERE assignment.action = "CREATE" AND assignment.assignee_id = "my-project" AND job_type = "QUERY" /* can also be "PIPELINE */ ORDER BY assignment.change_timestamp DESC, reservation.change_timestamp DESC LIMIT 1;
Cliquez sur Exécuter.
gcloud
Exécutez la commande query
, puis spécifiez la syntaxe SQL standard à l'aide de l'option --nouse_legacy_sql
ou --use_legacy_sql=false
. La syntaxe SQL standard est requise pour les requêtes INFORMATION_SCHEMA
.
Pour exécuter la requête, saisissez :
bq query --nouse_legacy_sql \ 'SELECT reservation.reservation_name, reservation.slot_capacity FROM `reservation-admin-project.region-us`. INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT assignment INNER JOIN `reservation-admin-project.region-us`. INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT AS reservation ON (assignment.reservation_name = reservation.reservation_name) WHERE assignment.action = "CREATE" AND assignment.assignee_id = "my-project" AND job_type = "QUERY" /* can also be "PIPELINE */ ORDER BY assignment.change_timestamp DESC, reservation.change_timestamp DESC LIMIT 1;'
Exemple 2
Dans l'exemple suivant, on récupère l'historique des modifications pour une réservation donnée. Utilisez ces informations pour afficher la liste des modifications apportées à une réservation spécifique.
Pour exécuter la requête sur un projet autre que celui par défaut, ajoutez l'ID du projet en respectant le format suivant : `project-id`.`region-region-name`.INFORMATION_SCHEMA.view
.
Exemple : `reservation-admin-project`.`region-us`.INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT
Pour exécuter la requête :
Console
Dans Cloud Console, ouvrez la page "BigQuery".
Dans la zone Éditeur de requête, saisissez la requête en SQL standard suivante.
INFORMATION_SCHEMA
requiert la syntaxe SQL standard. Le langage SQL standard est la syntaxe par défaut dans Cloud Console.SELECT * FROM `reservation-admin-project.region-us`. INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT WHERE reservation_name = "..." ORDER BY change_timestamp DESC;
Cliquez sur Exécuter.
gcloud
Exécutez la commande query
, puis spécifiez la syntaxe SQL standard à l'aide de l'option --nouse_legacy_sql
ou --use_legacy_sql=false
. La syntaxe SQL standard est requise pour les requêtes INFORMATION_SCHEMA
.
Pour exécuter la requête, saisissez :
bq query --nouse_legacy_sql \ 'SELECT * FROM `reservation-admin-project.region-us`. INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT WHERE reservation_name = "..." ORDER BY change_timestamp DESC;'
Exemple 3
L'exemple suivant effectue une jointure entre les vues JOBS_BY_PROJECT
et RESERVATIONS_BY_PROJECT
, qui fournissent à la fois l'utilisation de l'emplacement par un projet spécifique attribué au cours de l'heure précédente et la capacité d'emplacements de chaque réservation dans le projet d'administration donné. Un projet attribué est un projet auquel une réservation est attribuée, et un projet d'administration est le projet qui contient des réservations. Pour en savoir plus, consultez la documentation sur les réservations.
Cette requête utilise la vue RESERVATIONS_BY_PROJECT
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 doit s'exécuter à l'aide du projet d'administration contenant des réservations ou du projet attribué. Pour exécuter la requête sur un projet autre que celui par défaut, ajoutez l'ID du projet en respectant le format suivant : `project-id`.`region-region-name`.INFORMATION_SCHEMA.view
.
Exemple :`reservation-admin-project`.`region-us`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT
Pour exécuter la requête :
Console
Dans Cloud Console, ouvrez la page "BigQuery".
Dans le champ Éditeur de requête, saisissez la requête en SQL standard suivante.
INFORMATION_SCHEMA
requiert la syntaxe SQL standard. Le langage SQL standard est la syntaxe par défaut dans Cloud Console.WITH job_data AS ( SELECT job.reservation_id, job.total_slot_ms FROM `assignee-project.region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT AS job WHERE job.start_time < TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR) ) SELECT reservation.reservation_name AS reservation_name, ANY_VALUE(reservation.slot_capacity) AS reservation_slot_capacity, SUM(job.total_slot_ms) / (1000 * 60 * 60) AS avg_slots_used_by_hour FROM job_data AS job INNER JOIN `admin-project.region-us`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT AS reservation ON (job.reservation_id = CONCAT(reservation.project_id, ":", "US", ".", reservation.reservation_name)) GROUP BY 1 ORDER BY 1 DESC;
Cliquez sur Exécuter.
gcloud
Exécutez la commande query
, puis spécifiez la syntaxe SQL standard à l'aide de l'option --nouse_legacy_sql
ou --use_legacy_sql=false
. La syntaxe SQL standard est requise pour les requêtes INFORMATION_SCHEMA
.
Pour exécuter la requête, saisissez :
bq query --nouse_legacy_sql \ 'WITH job_data AS ( SELECT job.reservation_id, job.total_slot_ms FROM `assignee-project.region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT AS job WHERE job.start_time < TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR) ) SELECT reservation.reservation_name AS reservation_name, ANY_VALUE(reservation.slot_capacity) AS reservation_slot_capacity, SUM(job.total_slot_ms) / (1000 * 60 * 60) AS avg_slots_used_by_hour FROM job_data AS job INNER JOIN `admin-project.region-us`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT AS reservation ON (job.reservation_id = CONCAT(reservation.project_id, ":", "US", ".", reservation.reservation_name)) GROUP BY 1 ORDER BY 1 DESC;'
Étapes suivantes
- Pour obtenir plus d'informations sur
INFORMATION_SCHEMA
, consultez la page Présentation de BigQueryINFORMATION_SCHEMA
. - Découvrez comment obtenir des métadonnées de tâche à l'aide de
INFORMATION_SCHEMA
. - Découvrez comment obtenir des métadonnées de streaming à l'aide de
INFORMATION_SCHEMA
. - Découvrez comment obtenir des métadonnées d'ensemble de données à l'aide de
INFORMATION_SCHEMA
. - Découvrez comment obtenir des métadonnées de table à l'aide de
INFORMATION_SCHEMA
. - Découvrez comment obtenir des métadonnées de vue à l'aide de
INFORMATION_SCHEMA
.