Ansicht JOBS_BY_USER

Die Ansicht INFORMATION_SCHEMA.JOBS_BY_USER enthält Metadaten in nahezu Echtzeit zum BigQuery-Job, der vom aktuellen Nutzer im aktuellen Projekt gesendet wurde.

Erforderliche Rolle

Bitten Sie Ihren Administrator, Ihnen die IAM-Rolle BigQuery-Nutzer (roles/bigquery.user) für Ihr Projekt zuzuweisen. Diese Rolle enthält die Berechtigung, die Sie zum Abfragen der Ansicht INFORMATION_SCHEMA.JOBS_BY_USER benötigen. Weitere Informationen zum Zuweisen von Rollen finden Sie unter Zugriff verwalten.

Diese vordefinierte Rolle enthält die Berechtigung bigquery.jobs.list, die zum Abfragen der INFORMATION_SCHEMA.JOBS_BY_USER-Ansicht erforderlich ist.

Sie können diese Berechtigung auch mit benutzerdefinierten Rollen oder anderen vordefinierten Rollen erhalten.

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

Schema

Die zugrunde liegenden Daten werden nach der Spalte creation_time partitioniert und nach project_id und user_email geclustert.

Die Ansicht INFORMATION_SCHEMA.JOBS_BY_USER hat das folgende Schema:

Spaltenname Datentyp Wert
bi_engine_statistics RECORD Wenn das Projekt für die Verwendung der BI Engine-SQL-Schnittstelle konfiguriert ist, dann enthält dieses Feld BiEngineStatistics. Andernfalls NULL.
cache_hit BOOLEAN Ob die Abfrageergebnisse dieses Jobs aus einem Cache stammen. Wenn Sie einen Abfragejob mit mehreren Anweisungen haben, ist cache_hit für Ihre übergeordnete Abfrage NULL.
creation_time TIMESTAMP (Partitionierungsspalte) Erstellungszeit dieses Jobs. Die Partitionierung basiert auf der UTC-Zeit dieses Zeitstempels.
destination_table RECORD Zieltabelle für etwaige Ergebnisse.
dml_statistics RECORD Wenn der Job eine Abfrage mit einer DML-Anweisung ist, ist der Wert ein Eintrag mit den folgenden Feldern:
  • inserted_row_count: Die Anzahl der eingefügten Zeilen.
  • deleted_row_count: Die Anzahl der gelöschten Zeilen.
  • updated_row_count: Die Anzahl der aktualisierten Zeilen.
Bei allen anderen Jobs lautet der Wert NULL.
Diese Spalte ist in den Ansichten INFORMATION_SCHEMA.JOBS_BY_USER und INFORMATION_SCHEMA.JOBS_BY_PROJECT vorhanden.
end_time TIMESTAMP Die Endzeit dieses Jobs in Millisekunden seit der Epoche. Dieses Feld gibt den Zeitpunkt an, zu dem der Job in den Status DONE wechselt.
error_result RECORD Details zu Fehlern als Objekte vom Typ ErrorProto.
job_id STRING Die ID des Jobs. Beispiel: bquxjob_1234.
job_stages RECORD Abfragephasen des Jobs.

Hinweis: Die Werte dieser Spalte sind leer, wenn Sie Abfragen aus Tabellen mit Zugriffsrichtlinien auf Zeilenebene durchgeführt haben. Weitere Informationen finden Sie unter Best Practices für die Sicherheit auf Zeilenebene in BigQuery.

job_type STRING Typ des Jobs. Kann QUERY, LOAD, EXTRACT, COPY oder NULL sein. Ein NULL-Wert gibt einen internen Job an, z. B. die Auswertung einer Anweisung eines Skriptjobs oder die Aktualisierung einer materialisierten Ansicht.
labels RECORD Array aus Labels, die als Schlüssel/Wert-Paare auf den Job angewendet werden.
parent_job_id STRING ID des übergeordneten Jobs, sofern vorhanden.
priority STRING Die Priorität dieses Jobs Zulässige Werte: INTERACTIVE und BATCH.
project_id STRING (Clustering-Spalte) Die ID des Projekts.
project_number INTEGER Die Nummer des Projekts.
query STRING SQL-Abfragetext. Nur die Ansicht JOBS_BY_PROJECT enthält die Abfragespalte.
referenced_tables RECORD Array von Tabellen, auf die der Job verweist. Wird nur für Abfragejobs ausgefüllt, die keine Cache-Treffer sind.
reservation_id STRING Name der primären Reservierung, die diesem Job zugewiesen ist, im Format RESERVATION_ADMIN_PROJECT:RESERVATION_LOCATION.RESERVATION_NAME.
In dieser Ausgabe gilt:
  • RESERVATION_ADMIN_PROJECT: Name des Google Cloud-Projekts, das die Reservierung verwaltet
  • RESERVATION_LOCATION: der Standort der Reservierung
  • RESERVATION_NAME: der Name der Reservierung
session_info RECORD Details zur Sitzung, in der dieser Job ausgeführt wurde, sofern vorhanden. (Vorschau)
start_time TIMESTAMP Die Startzeit dieses Jobs in Millisekunden seit der Epoche. Dieses Feld gibt den Zeitpunkt an, zu dem der Job vom Status PENDING in RUNNING oder DONE wechselt.
state STRING Ausführungsstatus des Jobs. Gültige Statuswerte sind PENDING, RUNNING und DONE.
statement_type STRING Der Typ der Abfrageanweisung. Beispiel: DELETE, INSERT, SCRIPT, SELECT oder UPDATE. Eine Liste der gültigen Werte finden Sie unter QueryStatementType.
timeline RECORD Abfragezeitachse des Jobs. Enthält Snapshots der Abfrageausführung.
total_bytes_billed INTEGER Wenn das Projekt für die Verwendung von On-Demand-Preisen konfiguriert ist, enthält dieses Feld die Gesamtzahl der für den Job in Rechnung gestellten Byte. Wenn das Projekt für die Verwendung von Pauschalpreisen konfiguriert ist, werden Ihnen keine Byte in Rechnung gestellt. Dieses Feld dient nur zur Information.

Hinweis: Die Werte dieser Spalte sind leer, wenn Sie Abfragen aus Tabellen mit Zugriffsrichtlinien auf Zeilenebene durchgeführt haben. Weitere Informationen finden Sie unter Best Practices für die Sicherheit auf Zeilenebene in BigQuery.

total_bytes_processed INTEGER

Gesamtzahl der vom Job verarbeiteten Byte.

Hinweis: Die Werte dieser Spalte sind leer, wenn Sie Abfragen aus Tabellen mit Zugriffsrichtlinien auf Zeilenebene durchgeführt haben. Weitere Informationen finden Sie unter Best Practices für die Sicherheit auf Zeilenebene in BigQuery.

total_modified_partitions INTEGER Gesamtzahl der Partitionen, die der Job geändert hat. Dieses Feld wird für LOAD- und QUERY-Jobs ausgefüllt.
total_slot_ms INTEGER Slotmillisekunden für den Job über seine gesamte Dauer im Status RUNNING, einschließlich Wiederholungen.
transaction_id STRING ID der Transaktion, in der dieser Job ausgeführt wurde (falls vorhanden). (Vorschau)
user_email STRING (Clustering-Spalte) E-Mail-Adresse oder Dienstkonto des Nutzers, der den Job ausgeführt hat.
query_info.resource_warning STRING Die Warnmeldung, die angezeigt wird, wenn die Ressourcennutzung während der Abfrageverarbeitung über dem internen Schwellenwert des Systems liegt.
Bei einem erfolgreichen Abfragejob kann das resource_warning-Feld ausgefüllt sein. Mit resource_warning erhalten Sie zusätzliche Datenpunkte, um Ihre Abfragen zu optimieren und das Monitoring für Leistungstrends eines entsprechenden Abfragesatzes einzurichten. Verwenden Sie dazu query_hashes.
query_info.query_hashes.normalized_literals STRING Enthält die Hashes der Abfrage. normalized_literals ist ein hexadezimaler STRING-Hash, der Kommentare, Parameterwerte, UDFs und Literale ignoriert.
Dieses Feld wird bei erfolgreichen GoogleSQL-Abfragen angezeigt, die keine Cache-Treffer sind.
query_info.performance_insights RECORD Leistungsstatistiken für den Job.
query_info.optimization_details STRUCT Die verlaufsbasierten Optimierungen für den Job.
transferred_bytes INTEGER Gesamtzahl der übertragenen Byte für cloudübergreifende Abfragen, wie die cloudübergreifenden BigQuery Omni-Übertragungsjobs.
materialized_view_statistics RECORD Statistiken von materialisierten Ansichten, die in einem Abfragejob berücksichtigt werden. (Vorschau)

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. In der folgenden Tabelle wird der Regionsbereich für diese Ansicht erläutert:

Ansichtsname Ressourcenbereich Regionsbereich
[PROJECT_ID.]`region-REGION`.INFORMATION_SCHEMA.JOBS_BY_USER Jobs, die vom aktuellen Nutzer im angegebenen Projekt gesendet wurden REGION
Dabei gilt:

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

Beispiel

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_BY_USER
. Dabei gilt:

  • PROJECT_ID: die ID des Projekts.
  • REGION_NAME: Region für Ihr Projekt

Beispiel: `myproject`.`region-us`.INFORMATION_SCHEMA.JOBS_BY_USER.

Ausstehende oder laufende Jobs ansehen

SELECT
  job_id,
  creation_time,
  query
FROM
  `region-us`.INFORMATION_SCHEMA.JOBS_BY_USER
WHERE
  state != 'DONE';

Das Ergebnis sieht etwa so aus:

+--------------+---------------------------+---------------------------------+
| job_id       |  creation_time            |  query                          |
+--------------+---------------------------+---------------------------------+
| bquxjob_1    |  2019-10-10 00:00:00 UTC  |  SELECT ... FROM dataset.table1 |
| bquxjob_2    |  2019-10-10 00:00:01 UTC  |  SELECT ... FROM dataset.table2 |
| bquxjob_3    |  2019-10-10 00:00:02 UTC  |  SELECT ... FROM dataset.table3 |
| bquxjob_4    |  2019-10-10 00:00:03 UTC  |  SELECT ... FROM dataset.table4 |
| bquxjob_5    |  2019-10-10 00:00:04 UTC  |  SELECT ... FROM dataset.table5 |
+--------------+---------------------------+---------------------------------+

Leistungsstatistiken für Abfragen aufrufen

Im folgenden Beispiel werden alle Ihre Abfragejobs zurückgegeben, die in den letzten 30 Tagen Leistungsinformationen erhalten haben, sowie eine URL, die auf das Diagramm zur Abfrageausführung in der Google Cloud Console verweist.

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_USER
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
  );