Exécuter des tâches BigQuery de manière automatisée

Pour exécuter une tâche BigQuery de manière automatisée à l'aide de l'API REST ou des bibliothèques clientes, procédez comme suit :

  1. Appelez la méthode jobs.insert en utilisant un ID de tâche unique généré par votre code client.
  2. Faites des demandes régulières de la ressource de tâche et examinez la propriété de l'état pour savoir quand la tâche est terminée.
  3. Vérifiez que la tâche a bien été exécutée.

Autorisations requises

Pour exécuter des tâches BigQuery, vous devez accorder les autorisations bigquery.jobs.create à l'utilisateur ou au compte de service utilisé pour soumettre la tâche ou lui attribuer un rôle IAM prédéfini au niveau du projet qui comprend les autorisations bigquery.jobs.create. Vous trouverez ci-dessous les rôles IAM prédéfinis qui incluent les autorisations bigquery.jobs.create :

Pour plus d'informations sur les rôles IAM et les autorisations de BigQuery, consultez la section Contrôle des accès.

Tâches en cours d'exécution

Pour exécuter une tâche de manière automatisée, procédez comme suit :

  1. Démarrez la tâche en appelant la méthode jobs.insert. Lorsque vous appelez la méthode jobs.insert, incluez une représentation de ressource de tâche contenant les éléments suivants :

    • La zone dans la propriété location de la section jobReference.
    • L'ID de tâche généré par votre code client. Si vous l'omettez, le serveur génère un ID de tâche à votre place. Toutefois, il est recommandé de générer l'ID de tâche côté client pour permettre une nouvelle tentative fiable de l'appel jobs.insert.

      Exemple :

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

  2. Dans la section configuration de la ressource de tâche, incluez une propriété enfant qui spécifie le type de tâche : load (charger), query (interroger), extract (extraire) ou copy (copier).

  3. Après avoir appelé la méthode jobs.insert, vérifiez l'état de la tâche en appelant jobs.get à l'aide de l'ID et la zone de la tâche, puis vérifiez la valeur status.state pour connaître l'état de la tâche. Lorsque status.state est défini sur DONE, la tâche a cessé de s'exécuter ; Cependant, un état DONE ne signifie pas que la tâche a bien été exécutée, mais uniquement qu'elle n'est plus en cours d'exécution.

  4. Vérifiez que votre tâche a bien été exécutée. Si la propriété de la tâche est définie sur status.errorResult, la tâche a échoué. La propriété status.errorResult contient des informations décrivant les problèmes liés à la tâche dont l'exécution a échoué. Si la propriété status.errorResult est absente, la tâche a bien été exécutée. Toutefois, des erreurs non fatales, telles que des problèmes d'importation de lignes lors d'une tâche de chargement, ont pu se produire. Les erreurs non fatales sont renvoyées dans la liste status.errors de la tâche.

Générer un ID de tâche

Nous vous recommandons de générer un ID de tâche à l'aide de votre code client et d'envoyer cet ID lorsque vous appelez jobs.insert. Si vous appelez jobs.insert sans spécifier l'ID de tâche, BigQuery crée un ID de tâche à votre place. Toutefois, vous ne pourrez pas vérifier l'état de cette tâche avant le retour de l'appel. De plus, il peut être difficile de savoir si la tâche a été correctement insérée. Si vous utilisez votre propre ID de tâche, vous pouvez vérifier l'état de la tâche à tout moment. Vous pouvez également réessayer l'opération sur le même ID de tâche pour vous assurer que la tâche a bien démarré une seule fois.

L'ID de tâche est une chaîne comprenant des lettres (a-z, A-Z), des chiffres (0-9), des traits de soulignement (_) ou des tirets (-) d'une longueur maximale de 1 024 caractères. Les ID de tâche doivent être uniques au sein d'un projet.

Une approche courante pour générer un ID de tâche unique consiste à utiliser un préfixe lisible et un suffixe constitué d'un horodatage ou d'un GUID. Par exemple : daily_import_job_1447971251.

Pour obtenir un exemple de méthode générant des GUID, consultez le module UID de Python. Pour obtenir un exemple d'utilisation de la méthode Python uuid4() avec jobs.insert, consultez la section Charger des données depuis Google Cloud Storage.

Étapes suivantes

  • Consultez la section Exécuter des requêtes pour obtenir un exemple de code qui démarre et interroge une tâche de requête.
  • Pour plus d'informations sur la création d'une représentation de ressource de tâche, consultez la page de présentation des tâches dans la documentation de référence sur l'API.
Cette page vous a-t-elle été utile ? Évaluez-la :

Envoyer des commentaires concernant…