Vue JOBS_TIMELINE_BY_ORGANIZATION

La vue INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION contient les métadonnées BigQuery en temps quasi-réel par tranche horaire pour tous les jobs envoyés dans l'organisation associée au projet en cours. Cette vue contient les tâches en cours et terminées.

Autorisations requises

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

  • Administrateur de ressources BigQuery au niveau de l'organisation
  • Propriétaire de l'organisation
  • Administrateur de l'organisation

La table de schéma JOBS_BY_ORGANIZATION n'est disponible que pour les utilisateurs associés à des organisations Google Cloud définies.

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

Schéma

Lorsque vous lancez une requête sur les vues INFORMATION_SCHEMA.JOBS_TIMELINE_BY_*, les résultats de la requête contiennent une ligne pour chaque seconde d'exécution de chaque tâche BigQuery. Chaque période commence à un intervalle d'une seconde et dure exactement une seconde.

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

Nom de la colonne Type de données Valeur
period_start TIMESTAMP Heure de début de la période.
period_slot_ms INTEGER Emplacements de millisecondes consommés au cours de la période.
period_shuffle_ram_usage_ratio FLOAT Taux d'utilisation du brassage au cours de la période sélectionnée.
project_id STRING (Colonne de clustering) ID du projet.
project_number INTEGER Numéro du projet
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 le `1` et le dossier `3` contient `2`.
user_email STRING (Colonne de mise en cluster) Adresse e-mail ou compte de service de l'utilisateur ayant exécuté la tâche.
job_id STRING ID de la tâche. Par exemple, bquxjob_1234.
job_type STRING Type de la tâche. Il peut s'agir de QUERY, LOAD, EXTRACT, COPY ou null. Le type de tâche null indique une tâche interne, telle que l'évaluation d'une instruction de tâche de script ou l'actualisation d'une vue matérialisée.
statement_type STRING Type d'instruction de requête, si celui-ci est valide. Par exemple, SELECT, INSERT, UPDATE ou DELETE.
job_creation_time TIMESTAMP (Colonne de partitionnement) Heure de création de la tâche. Le partitionnement est basé sur l'heure UTC de l'horodatage.
job_start_time TIMESTAMP Heure de début de la tâche.
job_end_time TIMESTAMP Heure de fin de la tâche.
state STRING État d'exécution de la tâche à la fin de la période. Les états valides sont les suivants : PENDING, RUNNING et DONE.
reservation_id STRING Nom de la réservation principale attribuée à la tâche à la fin de la période, le cas échéant.
edition STRING Édition associée à la réservation attribuée à ce job. Pour en savoir plus sur les éditions, consultez la page Présentation des éditions BigQuery.
total_bytes_processed INTEGER Nombre total d'octets traités par la tâche.
error_result RECORD Détails de l'erreur (le cas échéant) en tant que ErrorProto. .
cache_hit BOOLEAN Indique si les résultats de requête de cette tâche ont été mis en cache.
period_estimated_runnable_units INTEGER Unités de travail pouvant être planifiées immédiatement dans cette période. Des emplacements supplémentaires pour ces unités de travail accélèrent votre requête, à condition qu'aucune autre requête de la réservation n'ait besoin d'emplacements supplémentaires.

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. 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.JOBS_TIMELINE_BY_ORGANIZATION Organisation 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 : nom de la région de l'ensemble de données. Par exemple, region-us.

Exemples

Exemple : Afficher l'utilisation totale des emplacements par minute

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.JOBS_TIMELINE_BY_ORGANIZATION
. Par exemple, `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION.

L'exemple suivant montre l'utilisation des emplacements par minute pour les projets attribués à YOUR_RESERVATION_ID pour l'ensemble des tâches :

SELECT
  res.period_start,
  SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes,
  ANY_VALUE(res.slots_assigned) AS slot_assigned,
  ANY_VALUE(res.slots_max_assigned) AS slots_max_assigned
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs
JOIN
  `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res
  ON
    TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start
    AND jobs.reservation_id = res.reservation_id
WHERE
  jobs.job_creation_time
    BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
    AND CURRENT_TIMESTAMP()
  AND res.reservation_id = 'YOUR_RESERVATION_ID'
  AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL)  -- Avoid duplicate byte counting in parent and children jobs.
GROUP BY
  period_start
ORDER BY
  period_start DESC;

Le résultat ressemble à ce qui suit :

+-----------------------+---------------------+---------------+-------------------+
|     period_start      | period_slot_minutes | slots_assigned| slots_max_assigned|
+-----------------------+---------------------+---------------+-------------------+
|2021-06-08 21:33:00 UTC|       100.000       |      100      |        100        |
|2021-06-08 21:32:00 UTC|        96.753       |      100      |        100        |
|2021-06-08 21:31:00 UTC|        41.668       |      100      |        100        |
+-----------------------+---------------------+---------------+-------------------+

Exemple : Utilisation des emplacements par réservation

L'exemple suivant montre l'utilisation des emplacements par minute pour chaque réservation au cours du dernier jour :

SELECT
  res.period_start,
  res.reservation_id,
  SUM(jobs.period_slot_ms) / 1000 / 60 AS period_slot_minutes,
  ANY_VALUE(res.slots_assigned) AS slots_assigned,
  ANY_VALUE(res.slots_max_assigned) AS slots_max_assigned,
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION jobs
JOIN
  `region-us`.INFORMATION_SCHEMA.RESERVATIONS_TIMELINE res
  ON TIMESTAMP_TRUNC(jobs.period_start, MINUTE) = res.period_start
     AND jobs.reservation_id = res.reservation_id
WHERE
  jobs.job_creation_time
  BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 DAY)
  AND CURRENT_TIMESTAMP()
  AND (jobs.statement_type != "SCRIPT" OR jobs.statement_type IS NULL)  -- Avoid duplicate byte counting in parent and children jobs.
GROUP BY
  period_start,
  reservation_id
ORDER BY
  period_start DESC,
  reservation_id;

Le résultat ressemble à ce qui suit :

+-----------------------+----------------+---------------------+---------------+--------------------+
|     period_start      | reservation_id | period_slot_minutes | slot_assigned | slots_max_assigned |
+-----------------------+----------------+---------------------+---------------+--------------------+
|2021-06-08 21:33:00 UTC|     prod01     |       100.000       |      100      |        100         |
|2021-06-08 21:33:00 UTC|     prod02     |       177.201       |      200      |        500         |
|2021-06-08 21:32:00 UTC|     prod01     |        96.753       |      100      |        100         |
|2021-06-08 21:32:00 UTC|     prod02     |       182.329       |      200      |        500         |
+-----------------------+----------------+---------------------+---------------+--------------------+