Jobs programmatisch ausführen

So führen Sie einen BigQuery-Job mithilfe der REST API oder der Clientbibliotheken programmatisch aus:

  1. Rufen Sie die Methode jobs.insert mit einer eindeutigen Job-ID auf, die von Ihrem Clientcode generiert wird.
  2. Fordern Sie regelmäßig die Jobressource an und überprüfen Sie das Statusattribut, um festzustellen, ob der Job abgeschlossen ist.
  3. Überprüfen Sie, ob der Job erfolgreich beendet wurde.

Erforderliche Berechtigungen

Damit Sie BigQuery-Jobs ausführen können, benötigt bigquery.jobs.create Berechtigungen für das Nutzer- oder Dienstkonto, das zum Übergeben des Jobs verwendet wurde. Sie können Ihrem Konto auch eine vordefinierte IAM-Rolle auf Projektebene zuweisen, die Berechtigungen für bigquery.jobs.create enthält. Die folgenden vordefinierten IAM-Rollen beinhalten Berechtigungen für bigquery.jobs.create:

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

Aktive Jobs

So führen Sie einen Job programmatisch aus:

  1. Starten Sie den Job, indem Sie die Methode jobs.insert aufrufen. Verwenden Sie für den Aufruf der Methode jobs.insert eine Jobressourcendarstellung, die folgende Elemente enthält:

    • Ihren Standort im Attribut location im Abschnitt jobReference.
    • Die Job-ID, die von Ihrem Clientcode generiert wurde. Wenn Sie diesen Schritt auslassen, generiert der Server eine Job-ID für Sie. Es empfiehlt sich aber, die ID auf Clientseite zu generieren, damit der jobs.insert-Aufruf zuverlässig wiederholt werden kann.

      Beispiel:

      {
        "jobReference": {
          "projectId": "my_project",
          "jobId": "job_123",
          “location”: “asia-northeast1”
        },
        "configuration":
        {
          // ..
        },
      }
      

  2. Fügen Sie im Abschnitt configuration der Jobressource ein untergeordnetes Attribut hinzu, das den Jobtyp angibt – Laden, Abfragen, Extrahieren oder Kopieren.

  3. Prüfen Sie nach dem Aufrufen der Methode jobs.insert den Jobstatus, indem Sie jobs.get mit der Job-ID und dem Standort aufrufen und den Wert status.state prüfen, um den Jobstatus zu ermitteln. Wenn für status.state der Status DONE angezeigt wird, wurde die Ausführung des Jobs beendet. Der Status DONE bedeutet jedoch nicht, dass der Job erfolgreich abgeschlossen wurde. Er zeigt lediglich an, dass der Job nicht mehr ausgeführt wird.

  4. Prüfen Sie, ob der Job erfolgreich abgeschlossen wurde. Wenn der Job das Attribut errorResult hat, ist er fehlgeschlagen. Das Attribut status.errorResult enthält dann Informationen über das Fehlschlagen des Jobs. Wenn die Eigenschaft status.errorResult nicht vorhanden ist, wurde der Job erfolgreich abgeschlossen, obwohl einige nicht schwerwiegende Fehler aufgetreten sein können, z. B. Probleme beim Importieren einiger Zeilen eines Ladejobs. Nicht schwerwiegende Fehler werden in der Liste status.errors des Jobs zurückgegeben.

Job-ID erzeugen

Es hat sich bewährt, eine Job-ID unter Verwendung des Clientcodes zu erzeugen und diese Job-ID beim Aufruf von jobs.insert zu senden. Wenn Sie jobs.insert aufrufen, ohne eine Job-ID anzugeben, erzeugt BigQuery eine Job-ID für Sie. Allerdings können Sie dann den Status des Jobs erst überprüfen, wenn der Aufruf zurückgegeben wird. Außerdem könnte es schwierig sein, festzustellen, ob der Job erfolgreich eingefügt wurde. Bei Verwendung Ihrer eigenen Job-ID können Sie den Status des Jobs jederzeit überprüfen und das Ausführen derselben Job-ID wiederholen, um sicherzustellen, dass der Job genau einmal gestartet wird.

Die Job-ID besteht aus einer Reihe von Buchstaben (a-z, A-Z), Ziffern (0-9), Unterstrichen (_) oder Bindestrichen (-) und hat eine maximale Länge von 1.024 Zeichen. Die Job-IDs innerhalb eines Projekts müssen eindeutig sein.

Eine übliche Vorgehensweise zum Erzeugen einer eindeutigen Job-ID besteht darin, ein menschenlesbares Präfix und ein Suffix zu verwenden, das aus einem Zeitstempel oder einer GUID besteht. Beispiel: daily_import_job_1447971251.

Ein Beispiel für eine Methode zum Erzeugen von GUIDs finden Sie im Python UUID-Modul. Ein Beispiel für die Verwendung der Python-Methode uuid4() in Verbindung mit jobs.insert finden Sie unter CSV-Daten aus Cloud Storage laden.

Weitere Informationen

Hat Ihnen diese Seite weitergeholfen? Teilen Sie uns Ihr Feedback mit:

Feedback geben zu...