Reservierungsmetadaten mit INFORMATION_SCHEMA abrufen

INFORMATION_SCHEMA umfasst mehrere Ansichten, über die auf Metadaten von Datasets, Abläufen, Tabellen, Ansichten, Jobs, Reservierungen und Streamingdaten zugegriffen werden kann.

Sie können die INFORMATION_SCHEMA-Reservierungsansichten abfragen, um Echtzeit-Metadaten zu BigQuery-Reservierungen abzurufen. Diese Ansichten enthalten eine Liste der Änderungen an Reservierungen, Zuweisungen und Kapazitätszusicherungen sowie eine Zeitachse für Reservierungen.

Erforderliche Berechtigungen

Zum Abrufen von Reservierungsmetadaten mithilfe von INFORMATION_SCHEMA-Tabellen sind Berechtigungen mit entsprechenden Geltungsbereichen erforderlich:

  • RESERVATION_CHANGES_BY_PROJECT und RESERVATIONS_BY_PROJECT erfordern bigquery.reservations.list für das Projekt und sind in den Rollen BigQuery User, BigQuery Resource Admin und BigQuery Admin verfügbar.
  • CAPACITY_COMMITMENT_CHANGES_BY_PROJECT und CAPACITY_COMMITMENTS_BY_PROJECT erfordern bigquery.capacityCommitments.list für das Projekt und sind in den Rollen BigQuery User, BigQuery Resource Admin und BigQuery Admin verfügbar.
  • ASSIGNMENT_CHANGES_BY_PROJECT und ASSIGNMENTS_BY_PROJECT erfordern bigquery.reservationAssignments.list für das Projekt und sind in den Rollen BigQuery User, BigQuery Resource Admin und BigQuery Admin verfügbar.

Schemas

Wenn Sie die INFORMATION_SCHEMA-Reservierungsansichten abfragen, enthalten die Abfrageergebnisse Informationen zu BigQuery-Reservierungen. Weitere Informationen zu BigQuery-Reservierungen finden Sie auf der Seite Konzepte für Reservierungen.

  • INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT enthält eine Liste aller Änderungen an Reservierungen im Administrationsprojekt. Jede Zeile steht für eine Änderung an einer einzelnen Reservierung.
  • INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT enthält eine 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.
  • INFORMATION_SCHEMA.CAPACITY_COMMITMENT_CHANGES_BY_PROJECT enthält eine Liste aller Änderungen an Kapazitätszusicherungen im Administrationsprojekt. Jede Zeile steht für eine einzelne Änderung an einer einzelnen Kapazitätszusicherung.
  • INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT enthält eine Liste aller aktuellen Kapazitätszusicherungen im Administrationsprojekt. Jede Zeile steht für eine einzelne aktuelle Kapazitätszusicherung. Eine aktuelle Kapazitätszusicherung ist entweder ausstehend oder aktiv und wurde nicht gelöscht.
  • INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT enthält eine Liste aller Änderungen an Zuweisungen im Administrationsprojekt. Jede Zeile steht für eine einzelne Änderung an einer einzelnen Zuweisung.
  • INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT enthält eine Liste aller aktuellen Zuweisungen im Administrationsprojekt. Jede Zeile steht für eine einzelne aktuelle Zuweisung. Eine aktuelle Zuweisung ist entweder ausstehend oder aktiv und wurde nicht gelöscht.

Die Ansicht INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT hat das folgende Schema:

Spaltenname Datentyp Wert
change_timestamp TIMESTAMP Zeit, zu der die Änderung erfolgt ist.
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.
action STRING Typ des Ereignisses, das bei der Reservierung aufgetreten ist. Kann CREATE, UPDATE oder DELETE sein.
slot_capacity INTEGER Mit der Reservierung verknüpfte Slotkapazität.
user_email STRING E-Mail-Adresse des Nutzers, der die Änderung vorgenommen hat. google für von Google vorgenommene Änderungen. NULL, wenn die E-Mail-Adresse unbekannt ist.

Die Ansicht INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT hat das folgende Schema:

Spaltenname Datentyp Wert
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 Mit der Reservierung verknüpfte Slotkapazität.

Die Ansicht INFORMATION_SCHEMA.CAPACITY_COMMITMENT_CHANGES_BY_PROJECT hat das folgende Schema:

Spaltenname Datentyp Wert
change_timestamp TIMESTAMP Zeit, zu der die Änderung erfolgt ist.
project_id STRING ID des Administrationsprojekts.
project_number INTEGER Nummer des Administrationsprojekts.
capacity_commitment_id STRING ID, die die Kapazitätszusicherung eindeutig identifiziert.
commitment_plan STRING Zusicherungstarif der Kapazitätszusicherung.
state STRING Status, in dem sich die Kapazitätszusicherung befindet. Kann PENDING oder ACTIVE sein.
slot_count INTEGER Mit der Kapazitätszusicherung verknüpfte Slotanzahl.
action STRING Typ des Ereignisses, das bei der Kapazitätszusicherung aufgetreten ist. Kann CREATE, UPDATE oder DELETE sein.
user_email STRING E-Mail-Adresse des Nutzers, der die Änderung vorgenommen hat. google für von Google vorgenommene Änderungen. NULL, wenn die E-Mail-Adresse unbekannt ist.
commitment_start_time TIMESTAMP Der Beginn des aktuellen Zusicherungszeitraums. Gilt nur für ACTIVE-Kapazitätszusicherungen, andernfalls NULL.
commitment_end_time TIMESTAMP Das Ende des aktuellen Zusicherungszeitraums. Gilt nur für ACTIVE-Kapazitätszusicherungen, andernfalls NULL.
failure_status RECORD Bei einem FAILED-Zusicherungstarif wird der Fehlergrund angegeben, andernfalls NULL. RECORD besteht aus code und message.
renewal_plan STRING Der Tarif, in den diese Kapazitätszusicherung konvertiert wird, nachdem die commitment_end_time verstrichen ist. Nachdem der Tarif geändert wurde, wird der Zusicherungszeitraum gemäß dem Zusicherungstarif verlängert. Gilt nur für ANNUAL- und TRIAL-Zusicherungen, andernfalls NULL.

Die Ansicht INFORMATION_SCHEMA.CAPACITY_COMMITMENTS_BY_PROJECT hat das folgende Schema:

Spaltenname Datentyp Wert
project_id STRING ID des Administrationsprojekts.
project_number INTEGER Nummer des Administrationsprojekts.
capacity_commitment_id STRING ID, die die Kapazitätszusicherung eindeutig identifiziert.
commitment_plan STRING Zusicherungstarif der Kapazitätszusicherung.
state STRING Status, in dem sich die Kapazitätszusicherung befindet. Kann PENDING oder ACTIVE sein.
slot_count INTEGER Mit der Kapazitätszusicherung verknüpfte Slotanzahl.

Die Ansicht INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT hat das folgende Schema:

Spaltenname Datentyp Wert
change_timestamp TIMESTAMP Zeit, zu der die Änderung erfolgt ist.
project_id STRING ID des Administrationsprojekts.
project_number INTEGER Nummer des Administrationsprojekts.
assignment_id STRING ID, die die Zuweisung eindeutig kennzeichnet.
reservation_name STRING Name der Reservierung, die die Zuweisung verwendet.
job_type STRING Die Art des Jobs, der die Reservierung verwenden kann. Kann PIPELINE oder QUERY sein.
assignee_id STRING ID, die die Ressource des Empfängers der Zuweisung eindeutig identifiziert.
assignee_number INTEGER Zahl, die die Ressource des Empfängers der Zuweisung eindeutig identifiziert.
assignee_type STRING Typ der zugewiesenen Ressource. Kann organization, folder oder project sein.
action STRING Typ des Ereignisses, das bei der Zuweisung aufgetreten ist. Kann CREATE oder DELETE sein.
user_email STRING E-Mail-Adresse des Nutzers, der die Änderung vorgenommen hat. google für von Google vorgenommene Änderungen. NULL, wenn die E-Mail-Adresse unbekannt ist.
state STRING Status der Zuweisung. Kann PENDING oder ACTIVE sein.

Die Ansicht INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT hat das folgende Schema:

Spaltenname Datentyp Wert
project_id STRING ID des Administrationsprojekts.
project_number INTEGER Nummer des Administrationsprojekts.
assignment_id STRING ID, die die Zuweisung eindeutig kennzeichnet.
reservation_name STRING Name der Reservierung, die die Zuweisung verwendet.
job_type STRING Die Art des Jobs, der die Reservierung verwenden kann. Kann PIPELINE oder QUERY sein.
assignee_id STRING ID, die die Ressource des Empfängers der Zuweisung eindeutig identifiziert.
assignee_number INTEGER Zahl, die die Ressource des Empfängers der Zuweisung eindeutig identifiziert.
assignee_type STRING Typ der zugewiesenen Ressource. Kann organization, folder oder project sein.

Datenaufbewahrung

Aktuelle Reservierungen, Kapazitätszusicherungen und Zuweisungen werden so lang in den Reservierungsansichten angezeigt, bis sie gelöscht werden. Gelöschte Reservierungen, Kapazitätszusicherungen und Zuweisungen werden für maximal 41 Tage in den Ansichten RESERVATION_CHANGES_BY_PROJECT, CAPACITY_COMMITMENT_CHANGES_BY_PROJECT und ASSIGNMENT_CHANGES_BY_PROJECT aufbewahrt. Anschließend werden sie aus den Ansichten entfernt.

Regionalität

Die INFORMATION_SCHEMA-Reservierungsansichten von BigQuery sind regionalisiert. Für die Abfrage dieser Ansichten benötigen Sie einen Regions-Qualifier.

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. Weitere Informationen erhalten Sie in diesem Beispiel.

Beispiele

Beispiel 1

Im folgenden Beispiel werden die aktuell zugewiesene Reservierung und die Slotkapazität des Projekts abgerufen. Diese Informationen sind nützlich für das Debugging der Jobleistung. Dazu vergleichen Sie die Slotnutzung des Projekts mit der Slotkapazität der Reservierung.

Die Abfrage sollte in dem Administratorprojekt ausgeführt werden, das Reservierungen enthält. 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.view. Beispiel: `reservation-admin-project`.`region-us`.INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT

So führen Sie die Abfrage aus:

Console

  1. Öffnen Sie in der Cloud Console die Seite "BigQuery".

    Zur Seite "BigQuery"

  2. Geben Sie im Feld Abfrageeditor die folgende Standard-SQL-Abfrage ein. Für INFORMATION_SCHEMA muss die Standard-SQL-Syntax verwendet werden. In der Cloud Console ist Standard-SQL die Standardsyntax.

    SELECT
      reservation.reservation_name,
      reservation.slot_capacity
    FROM
      `reservation-admin-project.region-us`.
      INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT assignment
    INNER JOIN
      `reservation-admin-project.region-us`.
      INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT AS reservation
    ON
      (assignment.reservation_name = reservation.reservation_name)
    WHERE
      assignment.action = "CREATE"
      AND assignment.assignee_id = "my-project"
      AND job_type = "QUERY" /* can also be "PIPELINE */
    ORDER BY
      assignment.change_timestamp DESC,
      reservation.change_timestamp DESC
    LIMIT
      1;
    
  3. Klicken Sie auf Ausführen.

gcloud

Verwenden Sie den Befehl query und geben Sie die Standard-SQL-Syntax mit dem Flag --nouse_legacy_sql oder --use_legacy_sql=false an. Für Abfragen von INFORMATION_SCHEMA ist die Standard-SQL-Syntax erforderlich.

So führen Sie die Abfrage aus:

bq query --nouse_legacy_sql \
'SELECT
  reservation.reservation_name,
  reservation.slot_capacity
FROM
  `reservation-admin-project.region-us`.
  INFORMATION_SCHEMA.ASSIGNMENT_CHANGES_BY_PROJECT assignment
INNER JOIN
  `reservation-admin-project.region-us`.
  INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT AS reservation
ON
  (assignment.reservation_name = reservation.reservation_name)
WHERE
  assignment.action = "CREATE"
  AND assignment.assignee_id = "my-project"
  AND job_type = "QUERY" /* can also be "PIPELINE */
ORDER BY
  assignment.change_timestamp DESC,
  reservation.change_timestamp DESC
LIMIT
  1;'

Beispiel 2

Im folgenden Beispiel wird der Verlauf der Änderungen für eine bestimmte Reservierung abgerufen. Damit erhalten Sie eine Liste der Änderungen, die an dieser Reservierung vorgenommen wurden.

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.view. Beispiel: `reservation-admin-project`.`region-us`.INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT

So führen Sie die Abfrage aus:

Console

  1. Öffnen Sie in der Cloud Console die Seite "BigQuery".

    Zur Seite "BigQuery"

  2. Geben Sie im Feld Abfrageeditor die folgende Standard-SQL-Abfrage ein. Für INFORMATION_SCHEMA muss die Standard-SQL-Syntax verwendet werden. In der Cloud Console ist Standard-SQL die Standardsyntax.

    SELECT
      *
    FROM
      `reservation-admin-project.region-us`.
      INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT
    WHERE
      reservation_name = "..."
    ORDER BY
      change_timestamp DESC;
    
  3. Klicken Sie auf Ausführen.

gcloud

Verwenden Sie den Befehl query und geben Sie die Standard-SQL-Syntax mit dem Flag --nouse_legacy_sql oder --use_legacy_sql=false an. Für Abfragen von INFORMATION_SCHEMA ist die Standard-SQL-Syntax erforderlich.

So führen Sie die Abfrage aus:

bq query --nouse_legacy_sql \
'SELECT
  *
FROM
  `reservation-admin-project.region-us`.
  INFORMATION_SCHEMA.RESERVATION_CHANGES_BY_PROJECT
WHERE
  reservation_name = "..."
ORDER BY
  change_timestamp DESC;'

Beispiel 3

Im folgenden Beispiel werden die Ansichten JOBS_BY_PROJECT und RESERVATIONS_BY_PROJECT miteinander verbunden. Beiden können Sie Informationen zur Slotnutzung durch ein bestimmtes zugewiesenes Projekt in der vergangenen Stunde und der Slotkapazität jeder Reservierung im angegebenen Administrationsprojekt entnehmen. Ein zugewiesenes Projekt ist ein Projekt, dem eine Reservierung zugewiesen ist. Ein Administratorprojekt enthält die Reservierungen. Weitere Informationen finden Sie in der Dokumentation zu Reservierungen. Bei dieser Abfrage werden mit der Ansicht RESERVATIONS_BY_PROJECT 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 sollte mit dem Administratorprojekt ausgeführt werden, das Reservierungen oder das zugewiesene Projekt enthält. Wenn Sie die Abfrage für ein anderes Projekt als das Standardprojekt ausführen möchten, fügen Sie die Projekt-ID im folgenden Format hinzu: `project-id`.`region-region-name`.INFORMATION_SCHEMA.view. Beispiel: `reservation-admin-project`.`region-us`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT.

So führen Sie die Abfrage aus:

Console

  1. Öffnen Sie in der Cloud Console die Seite "BigQuery".

    Zur Seite "BigQuery"

  2. Geben Sie im Feld Abfrageeditor die folgende Standard-SQL-Abfrage ein. Für INFORMATION_SCHEMA muss die Standard-SQL-Syntax verwendet werden. In der Cloud Console ist Standard-SQL die Standardsyntax.

     WITH
      job_data AS (
      SELECT
        job.reservation_id,
        job.total_slot_ms
      FROM
        `assignee-project.region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT AS job
      WHERE
        job.start_time < TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR) )
    SELECT
      reservation.reservation_name AS reservation_name,
      ANY_VALUE(reservation.slot_capacity) AS reservation_slot_capacity,
      SUM(job.total_slot_ms) / (1000 * 60 * 60) AS avg_slots_used_by_hour
    FROM
      job_data AS job
    INNER JOIN
      `admin-project.region-us`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT AS reservation
    ON
      (job.reservation_id = CONCAT(reservation.project_id, ":", "US", ".", reservation.reservation_name))
    GROUP BY
      1
    ORDER BY
      1 DESC;
    
  3. Klicken Sie auf Ausführen.

gcloud

Verwenden Sie den Befehl query und geben Sie die Standard-SQL-Syntax mit dem Flag --nouse_legacy_sql oder --use_legacy_sql=false an. Für Abfragen von INFORMATION_SCHEMA ist die Standard-SQL-Syntax erforderlich.

So führen Sie die Abfrage aus:

bq query --nouse_legacy_sql \
'WITH
   job_data AS (
   SELECT
     job.reservation_id,
     job.total_slot_ms
   FROM
     `assignee-project.region-us`.INFORMATION_SCHEMA.JOBS_BY_PROJECT AS job
   WHERE
     job.start_time < TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR) )
 SELECT
   reservation.reservation_name AS reservation_name,
   ANY_VALUE(reservation.slot_capacity) AS reservation_slot_capacity,
   SUM(job.total_slot_ms) / (1000 * 60 * 60) AS avg_slots_used_by_hour
 FROM
   job_data AS job
 INNER JOIN
   `admin-project.region-us`.INFORMATION_SCHEMA.RESERVATIONS_BY_PROJECT AS reservation
 ON
   (job.reservation_id = CONCAT(reservation.project_id, ":", "US", ".", reservation.reservation_name))
 GROUP BY
   1
 ORDER BY
   1 DESC;'

Tipp