Vue JOBS_BY_FOLDER

La vue INFORMATION_SCHEMA.JOBS_BY_FOLDER contient les métadonnées en temps quasi réel sur toutes les tâches envoyées dans le dossier parent du projet actuel, y compris les tâches des sous-dossiers qu'il contient.

Rôle requis

Pour obtenir l'autorisation dont vous avez besoin pour interroger la vue INFORMATION_SCHEMA.JOBS_BY_FOLDER, demandez à votre administrateur de vous attribuer le rôle IAM Lecteur de ressources BigQuery (roles/bigquery.resourceViewer) sur votre dossier parent. Pour en savoir plus sur l'attribution de rôles, consultez la section Gérer les accès.

Ce rôle prédéfini contient l'autorisation bigquery.jobs.listAll, qui est nécessaire pour interroger la vue INFORMATION_SCHEMA.JOBS_BY_FOLDER.

Vous pouvez également obtenir cette autorisation avec des rôles personnalisés ou d'autres rôles prédéfinis.

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

Schéma

Les données sous-jacentes sont partitionnées par la colonne creation_time et mises en cluster par project_id et user_email. La colonne query_info contient des informations supplémentaires sur les jobs de requête.

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

Nom de colonne Type de données Valeur
bi_engine_statistics RECORD Si le projet est configuré pour utiliser l'interface SQL de BI Engine, ce champ contient BiEngineStatistics. Sinon, il est défini sur NULL.
cache_hit BOOLEAN Indique si les résultats de requête de cette tâche ont été mis en cache. Si vous avez un job de requête multi-instruction, la valeur cache_hit pour votre requête parente est NULL.
creation_time TIMESTAMP (Colonne de partitionnement) Heure de création du job. Le partitionnement est basé sur l'heure UTC de cet horodatage.
destination_table RECORD Table de destination des résultats (le cas échéant).
end_time TIMESTAMP Heure de fin de ce job, en millisecondes depuis l'époque. Ce champ représente l'heure à laquelle le job passe à l'état DONE.
error_result RECORD Détails des erreurs sous forme d'objets ErrorProto.
folder_numbers REPEATED INTEGER ID numérique des dossiers contenant le projet, en commençant par le dossier qui contient immédiatement le projet, suivi du dossier contenant le dossier enfant, et ainsi de suite. Par exemple, si folder_numbers est [1, 2, 3], le dossier 1 contient immédiatement le projet, le dossier 2 contient 1 et le dossier 3 contient 2. Cette colonne n'est renseignée que dans JOBS_BY_FOLDER.
job_id STRING ID de la tâche. Par exemple, bquxjob_1234.
job_stages RECORD Étapes de la requête pour le job.

Remarque : Les valeurs de cette colonne sont vides pour les requêtes lues dans des tables présentant des règles d'accès au niveau des lignes. Pour en savoir plus, consultez les Bonnes pratiques en matière de sécurité au niveau des lignes dans BigQuery.

job_type STRING Type de la tâche. Il peut s'agir de QUERY, LOAD, EXTRACT, COPY ou NULL. Une valeur NULL indique un job interne, tel que l'évaluation d'une instruction de job de script ou l'actualisation d'une vue matérialisée.
labels RECORD Tableau de libellés appliqués au job en tant que paires clé/valeur.
parent_job_id STRING ID de la tâche parente (le cas échéant).
priority STRING Priorité de cette tâche. Les valeurs autorisées sont INTERACTIVE et BATCH.
project_id STRING (Colonne de clustering) ID du projet.
project_number INTEGER Numéro du projet.
query STRING Texte de requête SQL. Seule la vue JOBS_BY_PROJECT contient la colonne de requête.
referenced_tables RECORD Tableau de tables référencées par le job. Rempli uniquement pour les jobs de requête qui ne sont pas des succès de cache.
reservation_id STRING Nom de la réservation principale attribuée à ce job, au format RESERVATION_ADMIN_PROJECT:RESERVATION_LOCATION.RESERVATION_NAME.
Dans ce résultat :
  • RESERVATION_ADMIN_PROJECT : nom du projet Google Cloud qui gère la réservation.
  • RESERVATION_LOCATION : emplacement de la réservation.
  • RESERVATION_NAME : nom de la réservation.
session_info RECORD Les détails de la session dans laquelle ce job a été exécuté, le cas échéant. (Aperçu)
start_time TIMESTAMP Heure de début de ce job, en millisecondes depuis l'époque. Ce champ représente l'heure à laquelle le job passe de l'état PENDING à RUNNING ou DONE.
state STRING État de fonctionnement de la tâche. Les états valides sont les suivants : PENDING, RUNNING et DONE.
statement_type STRING Type d'instruction de requête. Par exemple, DELETE, INSERT, SCRIPT, SELECT ou UPDATE. Consultez la section QueryStatementType pour obtenir la liste des valeurs valides.
timeline RECORD Chronologie de la requête pour le job. Contient des instantanés de l'exécution des requêtes.
total_bytes_billed INTEGER Si le projet est configuré pour utiliser la tarification à la demande, ce champ contient le nombre total d'octets facturés pour le job. Si le projet est configuré pour utiliser la tarification forfaitaire, le nombre d'octets ne vous est pas facturé, et ce champ est fourni à titre d'information seulement.

Remarque : Les valeurs de cette colonne sont vides pour les requêtes lues dans des tables présentant des règles d'accès au niveau des lignes. Pour en savoir plus, consultez les Bonnes pratiques en matière de sécurité au niveau des lignes dans BigQuery.

total_bytes_processed INTEGER

Nombre total d'octets traités par la tâche.

Remarque : Les valeurs de cette colonne sont vides pour les requêtes lues dans des tables présentant des règles d'accès au niveau des lignes. Pour en savoir plus, consultez les Bonnes pratiques en matière de sécurité au niveau des lignes dans BigQuery.

total_modified_partitions INTEGER Nombre total de partitions modifiées par le job. Ce champ est renseigné pour les jobs LOAD et QUERY.
total_slot_ms INTEGER Emplacement des millisecondes pour le job sur toute sa durée à l'état RUNNING, y compris les nouvelles tentatives.
transaction_id STRING ID de la transaction dans laquelle ce job a été exécuté, le cas échéant. (Aperçu)
user_email STRING (Colonne de mise en cluster) Adresse e-mail ou compte de service de l'utilisateur ayant exécuté le job.
query_info.resource_warning STRING Message d'avertissement qui s'affiche si l'utilisation des ressources lors du traitement des requêtes dépasse le seuil interne du système.
Le champ resource_warning peut être rempli pour tout job de requête réussi. resource_warning vous permet d'obtenir des points de données supplémentaires pour optimiser vos requêtes et configurer la surveillance des tendances de performances d'un ensemble de requêtes équivalent à l'aide de query_hashes.
query_info.query_hashes.normalized_literals STRING Contient les hachages de la requête. normalized_literals est un hachage hexadécimal STRING qui ignore les commentaires, les valeurs de paramètre, les fonctions définies par l'utilisateur et les littéraux.
Ce champ apparaît pour les requêtes GoogleSQL réussies qui ne sont pas des succès de cache.
query_info.performance_insights RECORD Insights sur les performances du job.
query_info.optimization_details STRUCT Les optimisations basées sur l'historique associées au job.
transferred_bytes INTEGER Nombre total d'octets transférés pour les requêtes inter-cloud, telles que les tâches de transfert inter-cloud de BigQuery Omni.
materialized_view_statistics RECORD Statistiques des vues matérialisées prises en compte dans un job de requête. (Aperçu)

Conservation des données

Cette vue contient les tâches en cours d'exécution et l'historique des tâches des 180 derniers jours.

Champ d'application et syntaxe

Les requêtes exécutées sur cette vue doivent inclure un qualificatif de région. 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.JOBS_BY_FOLDER Dossier contenant le projet spécifié 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.

Exemple

La requête suivante affiche l'ID, l'heure de création et l'état (PENDING, RUNNING ou DONE) de toutes les tâches interactives du dossier du projet désigné :

SELECT
  job_id,
  creation_time,
  state
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_BY_FOLDER
WHERE
  priority = 'INTERACTIVE';

Le résultat ressemble à ce qui suit :

+--------------+---------------------------+---------------------------------+
| job_id       |  creation_time            |  state                          |
+--------------+---------------------------+---------------------------------+
| bquxjob_1    |  2019-10-10 00:00:00 UTC  |  DONE                           |
| bquxjob_2    |  2019-10-10 00:00:01 UTC  |  DONE                           |
| bquxjob_3    |  2019-10-10 00:00:02 UTC  |  DONE                           |
| bquxjob_4    |  2019-10-10 00:00:03 UTC  |  RUNNING                        |
| bquxjob_5    |  2019-10-10 00:00:04 UTC  |  PENDING                        |
+--------------+---------------------------+---------------------------------+

Obtenir les octets traités par les tâches d'exportation

L'exemple suivant calcule la valeur total_processed_bytes pour les types de tâches EXTRACT. Pour en savoir plus sur les quotas des tâches d'exportation, consultez la page Règles de quotas pour les tâches d'exportation. Le nombre total d'octets traités peut être utilisé pour surveiller l'utilisation globale et s'assurer que les tâches d'exportation restent en dessous de la limite de 50 To par jour:

SELECT
    DATE(creation_time) as day,
    project_id as source_project_id,
    SUM(total_bytes_processed) AS total_bytes_processed
 FROM
   region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT
 WHERE
    creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 8 DAY) AND CURRENT_TIMESTAMP()
    AND job_type = "EXTRACT"
GROUP BY
    day,
    source_project_id
ORDER BY
    day DESC

Consulter l'utilisation des tâches de copie

Pour en savoir plus sur les tâches de copie, consultez la section Copier une table. L'exemple suivant fournit des informations sur l'utilisation de tâches de copie:

SELECT
    DATE(creation_time) as day,
    project_id as source_project_id,
CONCAT(destination_table.project_id,":",destination_table.dataset_id,".",destination_table.table_id) as destination_table,
    COUNT(job_id) AS copy_job_count
 FROM
   region-us.INFORMATION_SCHEMA.JOBS_BY_PROJECT
 WHERE
    creation_time BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 8 DAY) AND CURRENT_TIMESTAMP()
    AND job_type = "COPY"
GROUP BY
    day,
    source_project_id,
    destination_table
ORDER BY
    day DESC

Afficher les insights sur les performances des requêtes

L'exemple suivant renvoie tous les jobs de requête qui ont généré des insights sur les performances à partir du dossier du projet désigné au cours des 30 derniers jours, ainsi qu'une URL renvoyant au graphique d'exécution de la requête dans la console Google Cloud.

SELECT
  `bigquery-public-data`.persistent_udfs.job_url(
    project_id || ':us.' || job_id) AS job_url,
  query_info.performance_insights
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_BY_FOLDER
WHERE
  DATE(creation_time) >= CURRENT_DATE - 30 -- scan 30 days of query history
  AND job_type = 'QUERY'
  AND state = 'DONE'
  AND error_result IS NULL
  AND statement_type != 'SCRIPT'
  AND EXISTS ( -- Only include queries which had performance insights
    SELECT 1
    FROM UNNEST(
      query_info.performance_insights.stage_performance_standalone_insights
    )
    WHERE slot_contention OR insufficient_shuffle_quota
    UNION ALL
    SELECT 1
    FROM UNNEST(
      query_info.performance_insights.stage_performance_change_insights
    )
    WHERE input_data_change.records_read_diff_percentage IS NOT NULL
  );