Ansicht JOBS_TIMELINE_BY_ORGANIZATION

Die Ansicht INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION enthält BigQuery-Metadaten in Echtzeit nach Zeitabschnitt für alle Jobs, die in der Organisation gesendet wurden, die mit dem aktuellen Projekt verknüpft ist. Diese Ansicht enthält derzeit ausgeführte und abgeschlossene Jobs.

Erforderliche Berechtigungen

Zum Abfragen der Ansicht INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION benötigen Sie die IAM-Berechtigung (Identity and Access Management) bigquery.jobs.listAll für das Projekt. Jede der folgenden vordefinierten IAM-Rollen enthält die erforderliche Berechtigung:

  • BigQuery-Ressourcen-Administrator auf Organisationsebene
  • Eigentümer der Organisation
  • Organisationsadministrator

Die Schematabelle JOBS_BY_ORGANIZATION ist nur für Nutzer mit definierten Google Cloud-Organisationen verfügbar.

Weitere Informationen zu BigQuery-Berechtigungen finden Sie unter Zugriffssteuerung mit IAM.

Schema

Wenn Sie die INFORMATION_SCHEMA.JOBS_TIMELINE_BY_*-Ansichten abfragen, enthalten die Ergebnisse eine Zeile für jede Ausführungssekunde des BigQuery-Jobs. Jeder Zeitraum beginnt mit einem ganzen Sekundenintervall und entspricht genau einer Sekunde.

Die Ansicht INFORMATION_SCHEMA.JOBS_TIMELINE_BY_* hat das folgende Schema:

Spaltenname Datentyp Wert
period_start TIMESTAMP Startzeit dieses Zeitraums.
period_slot_ms INTEGER Genutzte Slotmillisekunden in diesem Zeitraum.
project_id STRING (Clustering-Spalte) ID des Projekts.
project_number INTEGER Nummer des Projekts.
user_email STRING (Clustering-Spalte) E-Mail-Adresse oder Dienstkonto des Nutzers, der den Job ausgeführt hat.
job_id STRING ID des Jobs, z. B. bquxjob_1234.
job_type STRING Typ des Jobs. Kann QUERY, LOAD, EXTRACT, COPY oder null sein. Der Jobtyp null gibt einen internen Job an, z. B. die Auswertung einer Anweisung des Skriptjobs oder die Aktualisierung der materialisierten Ansicht.
statement_type STRING Typ der Abfrageanweisung, sofern gültig. Beispiel: SELECT, INSERT, UPDATE oder DELETE.
job_creation_time TIMESTAMP (Partitionierungsspalte) Erstellungszeit dieses Jobs. Die Partitionierung basiert auf der UTC-Zeit dieses Zeitstempels.
job_start_time TIMESTAMP Startzeit dieses Jobs.
job_end_time TIMESTAMP Endzeit dieses Jobs.
state STRING Ausführungsstatus des Jobs am Ende dieses Zeitraums. Gültige Statuswerte sind PENDING, RUNNING und DONE.
reservation_id STRING Name der primären Reservierung, die diesem Job am Ende dieses Zeitraums zugewiesen wird, sofern zutreffend.
total_bytes_processed INTEGER Gesamtzahl der vom Job verarbeiteten Byte.
error_result RECORD Fehlerdetails (falls vorhanden) als ErrorProto. .
cache_hit BOOLEAN Ob die Abfrageergebnisse dieses Jobs aus einem Cache stammen.

Datenaufbewahrung

Diese Ansicht enthält aktuell ausgeführte Jobs und den Jobverlauf der letzten 180 Tage.

Bereich und Syntax

Für Abfragen dieser Ansicht muss ein Regions-Qualifier verwendet werden. Wenn Sie keinen regionalen Qualifizierer angeben, werden Metadaten aus allen Regionen abgerufen. In der folgenden Tabelle wird der Regionsbereich für diese Ansicht erläutert:

Ansichtsname Ressourcenbereich Regionsbereich
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION Organisation, die das angegebene Projekt enthält REGION
Dabei gilt:

  • Optional: PROJECT_ID: Ist die ID Ihres Cloud-Projekts. Wenn keine Angabe erfolgt, wird das Standardprojekt verwendet.
  • REGION: ist ein beliebiger Dataset-Regionsname. Beispiel: region-us

Beispiele

Beispiel: Gesamte Slot-Nutzung pro Minute

Wenn Sie die Abfrage für ein anderes Projekt als Ihr Standardprojekt ausführen möchten, fügen Sie die Projekt-ID im folgenden Format hinzu: .

`PROJECT_ID`.`region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION
Zum Beispiel `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE_BY_ORGANIZATION.

Das folgende Beispiel zeigt die Slotnutzung pro Minute aus Projekten, die YOUR_RESERVATION_ID zugewiesen sind (für alle Jobs übergreifend):

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'
GROUP BY
  period_start
ORDER BY
  period_start DESC;

Das Ergebnis sieht etwa so aus:

+-----------------------+---------------------+---------------+-------------------+
|     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        |
+-----------------------+---------------------+---------------+-------------------+

Beispiel: Slot-Nutzung nach Reservierung

Im folgenden Beispiel wird die Slot-Nutzung pro Minute für jede Reservierung des letzten Tages gezeigt:

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()
GROUP BY
  period_start,
  reservation_id
ORDER BY
  period_start DESC,
  reservation_id;

Das Ergebnis sieht etwa so aus:

+-----------------------+----------------+---------------------+---------------+--------------------+
|     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         |
+-----------------------+----------------+---------------------+---------------+--------------------+