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 auf Projekte, Ordner und Organisationen 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:
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_creation_reason.code |
STRING |
Gibt den allgemeinen Grund an, warum ein Job erstellt wurde. Folgende Werte sind möglich:
|
job_id |
STRING |
Die ID des Jobs, falls ein Job erstellt wurde. Andernfalls die Abfrage-ID einer Abfrage, die den Modus für kurze Abfragen verwendet. 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:
|
edition |
STRING |
Die mit der Reservierung verknüpfte Edition, die diesem Job zugewiesen ist. Weitere Informationen zu Editionen finden Sie unter Einführung in BigQuery-Editionen. |
session_info |
RECORD |
Details zur Sitzung, in der dieser Job ausgeführt wurde, sofern vorhanden. |
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.
Der Hashwert unterscheidet sich, wenn sich die zugrunde liegenden Ansichten ändern oder wenn die Abfrage implizit auf Spalten wie SELECT * verweist und sich das Tabellenschema ändert.
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 |
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
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-REGION_NAME`.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-REGION_NAME`.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 );