Mit Reservierungszuweisungen arbeiten

Mit der BigQuery Reservations API können Sie dedizierte Slots (sogenannte Zusicherungen) kaufen und Slot-Pools erstellen (sogenannte Reservierungen und diesen Reservierungen Projekte, Ordner und Organisationen zuweisen.

Reservierungszuweisungen erstellen

Um die von Ihnen erworbenen Slots zu verwenden, erstellen Sie eine Zuweisung, die einer Slotreservierung ein Projekt, einen Ordner oder eine Organisation zuweist.

Projekte verwenden die spezifischste Reservierung in der Ressourcenhierarchie, der sie zugewiesen sind. Eine Ordnerzuweisung überschreibt eine Organisationszuweisung und eine Projektzuweisung überschreibt eine Ordnerzuweisung. Ordner- und Organisationszuweisungen sind für Reservierungen der Standardversion nicht verfügbar.

Damit eine Zuweisung für eine Reservierung erstellt werden kann, muss die Reservierung mindestens eines der folgenden Kriterien erfüllen:

  • Sie ist mit einer Anzahl zugewiesener Referenz-Slots ungleich null konfiguriert.

  • Sie ist mit einer Anzahl von Autoscaling-Slots ungleich null konfiguriert.

  • Es ist so konfiguriert, dass inaktive Slots verwendet werden und es inaktive Slots im Projekt gibt.

Wenn Sie versuchen, einer Reservierung eine Ressource zuzuweisen, die mindestens eines dieser Kriterien nicht erfüllt, erhalten Sie die folgende Meldung: Assignment is pending, your project will be executed as on-demand.

Erforderliche Berechtigungen

Zum Erstellen einer Reservierungszuweisung benötigen Sie die folgende IAM-Berechtigung (Identity and Access Management):

  • bigquery.reservationAssignments.create für das Administrationsprojekt und das Projekt, den Ordner oder die Organisation, die der Reservierung zugewiesen werden soll.

Jede der folgenden vordefinierten IAM-Rollen enthält diese Berechtigung:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Weitere Informationen zu IAM-Rollen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Einer Reservierung eine Organisation zuweisen

Console

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.

    BigQuery aufrufen

  2. Gehen Sie im Navigationsbereich zum Abschnitt Kapazitätsverwaltung.

  3. Klicken Sie auf den Tab Reservierungen.

  4. Suchen Sie in der Tabelle der Reservierungen nach der Reservierung.

  5. Maximieren Sie die Option Aktionen.

  6. Klicken Sie auf Aufgabe erstellen.

  7. Klicken Sie im Abschnitt Aufgabe erstellen auf Durchsuchen.

  8. Suchen Sie nach der Organisation und wählen Sie sie aus.

  9. Wählen Sie im Abschnitt Jobtyp einen Jobtyp aus, der dieser Reservierung zugewiesen werden soll. Diese Optionen sind verfügbar:

    • QUERY
    • PIPELINE
    • BACKGROUND
    • ML_EXTERNAL

    Weitere Informationen zu Jobtypen finden Sie unter Reservierungszuweisungen. Dieser Standardwert ist QUERY.

  10. Klicken Sie auf Erstellen.

SQL

Verwenden Sie die DDL-Anweisung CREATE ASSIGNMENT, um einer Reservierung eine Organisation zuzuweisen.

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

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
    OPTIONS (
      assignee = 'organizations/ORGANIZATION_ID',
      job_type = 'JOB_TYPE');
    

    Ersetzen Sie Folgendes:

    • ADMIN_PROJECT_ID: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehört
    • LOCATION: der Standort der Reservierung
    • RESERVATION_NAME: der Name der Reservierung
    • ASSIGNMENT_ID: die ID der Zuweisung

      Die ID muss für das Projekt und den Standort eindeutig sein, mit einem Kleinbuchstaben oder einer Zahl beginnen und enden und darf nur Kleinbuchstaben, Zahlen und Bindestriche enthalten.

    • ORGANIZATION_ID: die Organisations-ID
    • JOB_TYPE: der Typ des Jobs, der dieser Reservierung zugewiesen werden soll, z. B. QUERY, PIPELINE, BACKGROUND oder ML_EXTERNAL

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

bq

Verwenden Sie den Befehl bq mk mit dem Flag --reservation_assignment, um die Jobs einer Organisation einer Reservierung zuzuweisen:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --assignee_id=ORGANIZATION_ID \
    --job_type=JOB_TYPE \
    --assignee_type=ORGANIZATION

Dabei gilt:

  • ADMIN_PROJECT_ID: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehört
  • LOCATION: der Standort der Reservierung
  • RESERVATION_NAME: der Name der Reservierung
  • ORGANIZATION_ID: die Organisations-ID
  • JOB_TYPE: der Typ des Jobs, der dieser Reservierung zugewiesen werden soll, z. B. QUERY, PIPELINE, BACKGROUND oder ML_EXTERNAL

Wenn Sie eine Reservierungszuweisung erstellen, warten Sie mindestens fünf Minuten, bevor Sie eine Abfrage ausführen. Andernfalls wird die Abfrage möglicherweise mit der On-Demand-Abrechnung abgerechnet.

Projekt oder Ordner einer Reservierung zuweisen

Console

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.

    BigQuery aufrufen

  2. Gehen Sie im Navigationsbereich zum Abschnitt Kapazitätsverwaltung.

  3. Klicken Sie auf den Tab Reservierungen.

  4. Suchen Sie in der Tabelle der Reservierungen nach der Reservierung.

  5. Maximieren Sie die Option Aktionen.

  6. Klicken Sie auf Aufgabe erstellen.

  7. Klicken Sie im Abschnitt Aufgabe erstellen auf Durchsuchen.

  8. Suchen Sie nach dem Projekt oder Ordner und wählen Sie es aus.

  9. Wählen Sie im Abschnitt Jobtyp einen Jobtyp aus, der dieser Reservierung zugewiesen werden soll. Diese Optionen sind verfügbar:

    • QUERY
    • PIPELINE
    • BACKGROUND
    • ML_EXTERNAL

    Weitere Informationen zu Jobtypen finden Sie unter Reservierungszuweisungen. Dieser Standardwert ist QUERY.

  10. Klicken Sie auf Erstellen.

SQL

Verwenden Sie die DDL-Anweisung CREATE ASSIGNMENT, um einer Reservierung ein Projekt zuzuweisen.

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

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`
    OPTIONS(
      assignee="projects/PROJECT_ID",
      job_type="JOB_TYPE");
    

    Ersetzen Sie Folgendes:

    • ADMIN_PROJECT_ID: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehört
    • LOCATION: der Standort der Reservierung
    • RESERVATION_NAME: der Name der Reservierung
    • ASSIGNMENT_ID: die ID der Zuweisung

      Die ID muss für das Projekt und den Standort eindeutig sein, mit einem Kleinbuchstaben oder einer Zahl beginnen und enden und darf nur Kleinbuchstaben, Zahlen und Bindestriche enthalten.

    • PROJECT_ID: die ID des Projekts, das der Reservierung zugewiesen werden soll
    • JOB_TYPE: der Typ des Jobs, der dieser Reservierung zugewiesen werden soll, z. B. QUERY, PIPELINE, BACKGROUND oder ML_EXTERNAL

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

bq

Verwenden Sie den Befehl bq mk mit dem Flag --reservation_assignment, um einer Reservierung Jobs zuzuweisen:

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --assignee_id=PROJECT_ID \
    --job_type=JOB_TYPE \
    --assignee_type=PROJECT

Dabei gilt:

  • ADMIN_PROJECT_ID: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehört
  • LOCATION: der Standort der Reservierung
  • RESERVATION_NAME: der Name der Reservierung
  • PROJECT_ID: die ID des Projekts, das der Reservierung zugewiesen werden soll
  • JOB_TYPE: der Typ des Jobs, der dieser Reservierung zugewiesen werden soll, z. B. QUERY, PIPELINE, BACKGROUND oder ML_EXTERNAL

Wenn Sie eine Reservierungszuweisung erstellen, warten Sie mindestens fünf Minuten, bevor Sie eine Abfrage ausführen. Andernfalls wird die Abfrage möglicherweise mit der On-Demand-Abrechnung abgerechnet.

Wenn Sie ein Projekt erstellen möchten, in dem nur inaktive Slots verwendet werden, erstellen Sie eine Reservierung mit zugewiesenen 0-Slots. Führen Sie dann die obigen Schritte aus, um das Projekt dieser Reservierung zuzuweisen.

none ein Projekt zuweisen

Zuweisungen an none weisen darauf hin, dass keine Zuweisung vorhanden ist. Wenn Projekten none zugewiesen ist, wird die On-Demand-Abrechnung verwendet.

SQL

Verwenden Sie die DDL-Anweisung CREATE ASSIGNMENT, um none ein Projekt zuzuweisen.

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

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    CREATE ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.none.ASSIGNMENT_ID`
    OPTIONS(
      assignee="projects/PROJECT_ID",
      job_type="JOB_TYPE");
    

    Dabei gilt:

    • LOCATION: der Standort der Jobs, die On-Demand-Preise verwenden sollen
    • ASSIGNMENT_ID: die ID der Zuweisung

      Die ID muss für das Projekt und den Standort eindeutig sein, mit einem Kleinbuchstaben oder einer Zahl beginnen und enden und darf nur Kleinbuchstaben, Zahlen und Bindestriche enthalten.

    • PROJECT_ID: die ID des Projekts, das der Reservierung zugewiesen werden soll

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

bq

Verwenden Sie zum Zuweisen eines Projekts zu none den Befehl bq mk mit dem Flag --reservation_assignment:

bq mk \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=none \
    --job_type=QUERY \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

Dabei gilt:

  • LOCATION: der Standort der Jobs, die On-Demand-Preise verwenden sollen
  • PROJECT_ID: die ID des Projekts, das none zugewiesen werden soll

BigQuery ML-Arbeitslasten-Slots zuweisen

Die folgenden BigQuery ML-Modelltypen verwenden externe Dienste:

Sie können Abfragen mit diesen Diensten reservierte Slots zuweisen. Verwenden Sie dazu den Zuweisungstyp ML_EXTERNAL. Wenn kein ML_EXTERNAL-Zuweisungstyp gefunden wird, wird der Abfragejob als On-Demand ausgeführt.

Verwenden Sie den Befehl bq mk mit dem Flag --reservation_assignment und setzen Sie das Flag --job_type auf ML_EXTERNAL.

bq mk \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --reservation_id=RESERVATION_NAME \
    --job_type=ML_EXTERNAL\
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

Dabei gilt:

  • ADMIN_PROJECT_ID: die ID des Projekts, dem die Reservierungsressource zugeordnet ist
  • LOCATION: der Standort der Reservierung
  • RESERVATION_NAME: der Name der Reservierung
  • PROJECT_ID: die ID des Projekts, das der Reservierung zugewiesen werden soll

Reservierungszuweisungen suchen

Erforderliche Berechtigungen

Wenn Sie nach einer Reservierungszuweisung für ein bestimmtes Projekt, einen Ordner oder eine Organisation suchen möchten, benötigen Sie die folgende IAM-Berechtigung (Identity and Access Management):

  • bigquery.reservationAssignments.list für das Administrationsprojekt.

Jede der folgenden vordefinierten IAM-Rollen enthält diese Berechtigung:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor
  • BigQuery Resource Viewer
  • BigQuery User

Weitere Informationen zu IAM-Rollen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Reservierungszuweisung eines Projekts suchen

So können Sie herausfinden, ob Ihr Projekt, Ihr Ordner oder Ihre Organisation einer Reservierung zugewiesen wurde:

Console

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.

    BigQuery aufrufen

  2. Gehen Sie im Navigationsbereich zum Abschnitt Kapazitätsverwaltung.

  3. Klicken Sie auf den Tab Reservierungen.

  4. Maximieren Sie in der Tabelle der Reservierungen eine Reservierung, um festzustellen, welche Ressourcen dieser Reservierung zugewiesen sind, oder verwenden Sie das Feld Filter, um nach Ressourcennamen zu filtern.

SQL

Fragen Sie die Ansicht INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT ab, um zu ermitteln, welcher Reservierung die Jobs Ihres Projekts zugewiesen sind.

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

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

      SELECT
        assignment_id
      FROM `region-LOCATION`.INFORMATION_SCHEMA.ASSIGNMENTS_BY_PROJECT
      WHERE
        assignee_id = 'PROJECT_ID'
        AND job_type = 'JOB_TYPE';
    

    Dabei gilt:

    • LOCATION: der Standort der Reservierungen, die angezeigt werden sollen.
    • ADMIN_PROJECT_ID: die Projekt-ID des Administrationsprojekts, dem die Reservierungsressource gehört
    • PROJECT_ID: die ID des Projekts, das der Reservierung zugewiesen werden soll
    • JOB_TYPE: der Typ des Jobs, der dieser Reservierung zugewiesen werden soll, z. B. QUERY, PIPELINE, BACKGROUND oder ML_EXTERNAL

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

bq

Verwenden Sie den Befehl bq show mit dem Flag --reservation_assignment, um zu ermitteln, welcher Reservierung die Jobs Ihres Projekts zugewiesen sind:

bq show \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --job_type=JOB_TYPE \
    --assignee_id=PROJECT_ID \
    --assignee_type=PROJECT

Dabei gilt:

  • ADMIN_PROJECT_ID: die ID des Projekts, dem die Reservierungsressource zugeordnet ist
  • LOCATION: der Standort der Reservierungen, die angezeigt werden sollen.
  • JOB_TYPE: der Typ des Jobs, der dieser Reservierung zugewiesen werden soll, z. B. QUERY, PIPELINE, BACKGROUND oder ML_EXTERNAL
  • PROJECT_ID: die ID des Projekts.

Reservierungszuweisungen aktualisieren

Verschieben einer Aufgabe in eine andere Reservierung

Sie können eine Zuweisung von einer Reservierung in eine andere verschieben.

Zum Verschieben einer Reservierungszuweisung benötigen Sie die folgenden IAM-Berechtigungen (Identity and Access Management) für das Administratorprojekt und die zugewiesene Ressource.

  • bigquery.reservationAssignments.create
  • bigquery.reservationAssignments.delete

Jede der folgenden vordefinierten IAM-Rollen enthält diese Berechtigungen:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Weitere Informationen zu IAM-Rollen in BigQuery finden Sie unter Vordefinierte Rollen und Berechtigungen.

Verwenden Sie den Befehl bq update, um eine Zuweisung zu verschieben:

bq update \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment \
    --destination_reservation_id=DESTINATION_RESERVATION \
    ADMIN_PROJECT_ID:LOCATION.RESERVATION_NAME.ASSIGNMENT_ID

Dabei gilt:

  • ADMIN_PROJECT_ID: die ID des Projekts, dem die Reservierungsressource zugeordnet ist
  • LOCATION: der Standort der neuen Reservierung
  • RESERVATION_NAME: die Reservierung, von der die Zuweisung verschoben werden soll
  • DESTINATION_RESERVATION: die Reservierung, zu der die Zuweisung verschoben werden soll
  • ASSIGNMENT_ID: die ID der Zuweisung

    Informationen zum Abrufen der ID der Zuweisung finden Sie unter Reservierungszuweisung eines Projekts auflisten.

Reservierungszuweisungen löschen

Sie können ein Projekt aus einer Reservierung entfernen, indem Sie die Reservierungszuweisung löschen. Wenn ein Projekt keiner Reservierung zugewiesen ist, werden Zuweisungen von den übergeordneten Ordnern oder Organisationen übernommen. Sind keine übergeordneten Zuweisungen vorhanden, werden On-Demand-Preise verwendet.

Erforderliche Berechtigungen

Zum Löschen einer Reservierungszuweisung benötigen Sie die folgende IAM-Berechtigung (Identity and Access Management):

  • bigquery.reservationAssignments.delete für das Administrationsprojekt und das Projekt, den Ordner oder die Organisation, die der Reservierung zugewiesen werden soll.

Jede der folgenden vordefinierten IAM-Rollen enthält diese Berechtigung:

  • BigQuery Admin
  • BigQuery Resource Admin
  • BigQuery Resource Editor

Projekt aus einer Reservierung entfernen

So entfernen Sie ein Projekt aus einer Reservierung:

Console

  1. Rufen Sie in der Google Cloud Console die Seite „BigQuery“ auf.

    BigQuery aufrufen

  2. Gehen Sie im Navigationsbereich zum Abschnitt Kapazitätsverwaltung.

  3. Klicken Sie auf den Tab Reservierungen.

  4. Erweitern Sie in der Tabelle der Reservierungen die Reservierung, um das Projekt zu finden.

  5. Maximieren Sie die Option Aktionen.

  6. Klicken Sie auf Löschen.

SQL

Verwenden Sie die DDL-Anweisung DROP ASSIGNMENT.

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

    BigQuery aufrufen

  2. Geben Sie im Abfrageeditor die folgende Anweisung ein:

    DROP ASSIGNMENT
      `ADMIN_PROJECT_ID.region-LOCATION.RESERVATION_NAME.ASSIGNMENT_ID`;
    

    Ersetzen Sie Folgendes:

  3. Klicken Sie auf Ausführen.

Informationen zum Ausführen von Abfragen finden Sie unter Interaktive Abfrage ausführen.

bq

Verwenden Sie zum Entfernen eines Projekts aus einer Reservierung den Befehl bq rm mit dem Flag --reservation_assignment:

bq rm \
    --project_id=ADMIN_PROJECT_ID \
    --location=LOCATION \
    --reservation_assignment RESERVATION_NAME.ASSIGNMENT_ID

Dabei gilt:

  • ADMIN_PROJECT_ID: die ID des Projekts, dem die Reservierungsressource zugeordnet ist
  • LOCATION: der Standort der Reservierung
  • RESERVATION_NAME: der Name der Reservierung
  • ASSIGNMENT_ID: die ID der Zuweisung

    Informationen zum Abrufen der ID der Zuweisung finden Sie unter Reservierungszuweisung eines Projekts finden.