Ansicht RESERVATIONS

Die Ansicht INFORMATION_SCHEMA.RESERVATIONS enthält eine nahezu in Echtzeit aktualisierte Liste aller aktuellen Reservierungen im Administrationsprojekt. Jede Zeile steht für eine einzelne aktuelle Reservierung. Eine aktuelle Reservierung ist eine Reservierung, die nicht gelöscht wurde. Weitere Informationen zur Reservierung finden Sie unter Einführung in Reservierungen.

Erforderliche Berechtigung

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

  • roles/bigquery.resourceAdmin
  • roles/bigquery.resourceEditor
  • roles/bigquery.resourceViewer
  • roles/bigquery.user
  • roles/bigquery.admin

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

Schema

Die Ansicht INFORMATION_SCHEMA.RESERVATIONS hat das folgende Schema:

Spaltenname Datentyp Wert
ddl STRING Die zum Erstellen dieser Reservierung verwendete DDL-Anweisung.
project_id STRING ID des Administrationsprojekts.
project_number INTEGER Nummer des Administrationsprojekts.
reservation_name STRING Vom Nutzer bereitgestellter Reservierungsname.
ignore_idle_slots BOOL Bei "false" kann jede Abfrage, die diese Reservierung verwendet, inaktive Slots aus anderen Kapazitätszusicherungen verwenden.
slot_capacity INTEGER Referenz der Reservierung.
target_job_concurrency INTEGER Die Zielanzahl an Abfragen, die gleichzeitig ausgeführt werden können. Diese wird durch die verfügbaren Ressourcen begrenzt. Wenn null, wird dieser Wert automatisch anhand der verfügbaren Ressourcen berechnet.
autoscale STRUCT

Informationen zur Autoscaling-Kapazität der Reservierung. Zu den Feldern gehören:

  • current_slots: die Anzahl der Slots, die durch Autoscaling der Reservierung hinzugefügt wurden.
  • max_slots: die maximale Anzahl an Slots, die der Reservierung durch Autoscaling hinzugefügt werden können.
edition STRING Die mit dieser Reservierung verknüpfte Edition. Weitere Informationen zu Editionen finden Sie unter Einführung in BigQuery-Editionen.

Bereich und Syntax

Für Abfragen dieser Ansicht muss ein Regions-Qualifier verwendet werden. Wenn Sie keinen regionalen Qualifier 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.RESERVATIONS[_BY_PROJECT] auf Projektebene REGION
Ersetzen Sie Folgendes:

  • 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

Reservierungs- und Jobansichten zusammenführen

Die Jobansichten enthalten die Spalte reservation_id. Wenn Ihr Job in einem Projekt mit einer zugewiesenen Reservierung ausgeführt wurde, hat reservation_id folgendes Format: reservation-admin-project:reservation-location.reservation-name.

Wenn Sie die Reservierungs- und Jobansichten verbinden möchten, können Sie die Verbindung zwischen der Spalte für die Jobansichten (reservation_id) und den Spalten für die Reservierungsansichten project_id und reservation_name herstellen. Das folgende Beispiel zeigt ein Beispiel für die Verwendung der JOIN-Klausel zwischen den Reservierungs- und den Jobansichten.

Beispiel

Im folgenden Beispiel sehen Sie die Slotnutzung, Slotkapazität und zugewiesene Reservierung für ein Projekt mit einer Reservierungszuweisung in der letzten Stunde. Die Slot-Nutzung wird in Einheiten von Slot-Millisekunden pro Sekunde angegeben.

WITH
  job_data AS (
  SELECT
    job.period_start,
    job.reservation_id,
    job.period_slot_ms,
    job.job_id,
    job.job_type
  FROM
    `my-project.region-us`.INFORMATION_SCHEMA.JOBS_TIMELINE AS job
  WHERE
    job.period_start > TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR))
SELECT
  reservation.reservation_name AS reservation_name,
  job.period_start,
  reservation.slot_capacity,
  job.period_slot_ms,
  job.job_id,
  job.job_type
FROM
  job_data AS job
INNER JOIN
  `reservation-admin-project.region-us`.INFORMATION_SCHEMA.RESERVATIONS AS reservation
ON
  (job.reservation_id = CONCAT(reservation.project_id, ":", "US", ".", reservation.reservation_name));

Die Ausgabe sieht etwa so aus:

+------------------+---------------------+---------------+----------------+------------------+----------+
| reservation_name |    period_start     | slot_capacity | period_slot_ms |           job_id | job_type |
+------------------+---------------------+---------------+----------------+------------------+----------+
| my_reservation   | 2021-04-30 17:30:54 |           100 |          11131 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:55 |           100 |          49978 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:56 |           100 |           9038 | bquxjob_66707... | QUERY    |
| my_reservation   | 2021-04-30 17:30:57 |           100 |          17237 | bquxjob_66707... | QUERY    |

Bei dieser Abfrage werden mit der Ansicht RESERVATIONS Reservierungsinformationen aufgerufen. Wenn sich die Reservierungen in der letzten Stunde geändert haben, ist die Spalte reservation_slot_capacity möglicherweise nicht korrekt.

Die Abfrage verknüpft RESERVATIONS mit JOBS_TIMELINE, um die Jobzeitabschnitte mit den Reservierungsinformationen zu verknüpfen.