Como executar jobs de maneira programática

Para executar um job do BigQuery com programação usando a API REST ou as bibliotecas de cliente, faça o seguinte:

  1. Chame o método jobs.insert usando um ID de job exclusivo que é gerado pelo seu código de cliente.
  2. Solicite periodicamente o recurso do job e verifique a propriedade do status para saber quando o job for concluído.
  3. Verifique se o job foi concluído com sucesso.

Permissões exigidas

Para executar jobs do BigQuery, é necessário ter, no mínimo, as permissões bigquery.jobs.create. Os papéis predefinidos do Cloud IAM a seguir incluem as permissões bigquery.jobs.create:

  • bigquery.user
  • bigquery.jobUser
  • bigquery.admin

Para mais informações sobre os papéis e as permissões do Cloud IAM no BigQuery, consulte Papéis e permissões predefinidos.

Como executar jobs

Para executar um job de maneira programática:

  1. Inicie o job chamando o método jobs.insert. Ao chamar o método jobs.insert, inclua uma representação do recurso do job que contenha estes elementos:

    • O local na propriedade location na seção jobReference.
    • O código do job gerado pelo código do cliente. O servidor gerará um código do job se você omiti-lo, mas a prática recomendada é gerar o código do job no lado do cliente para permitir uma nova tentativa confiável da chamada jobs.insert.

      Por exemplo:

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

  2. Na seção configuration do recurso do job, inclua uma propriedade filha que especifique o tipo de job: load, query, extract ou copy.

  3. Depois de chamar o método jobs.insert, verifique o status do job. Para isso, chame jobs.get com o ID e o local do job. Depois, confira o valor status.state para saber o status do job. Quando status.state for DONE, a execução do job terminou. No entanto, o status DONE não significa que o job foi concluído com sucesso, apenas que ele não está mais em execução.

  4. Verifique o sucesso do job. Se ele tiver uma propriedade errorResult, isso significa que falhou. A propriedade status.errorResult contém informações que descrevem o que deu errado em um job com falha. Se status.errorResult estiver ausente, o job foi concluído com sucesso, mesmo que haja alguns erros não fatais, como problemas ao importar algumas linhas em um job de carregamento. Erros não fatais são retornados na lista status.errors do job.

Como gerar um ID de job

Como prática recomendada, gere um ID de job usando o código de cliente e envie esse ID ao chamar jobs.insert. Quando jobs.insert é chamado sem especificar um ID de job, esse ID é criado pelo BigQuery. No entanto, não é possível verificar o status desse job até o retorno da chamada. Também pode ser difícil informar se o job foi inserido com sucesso. Com um ID de job próprio, é possível verificar o status dele a qualquer momento e tentar novamente com esse mesmo ID para garantir que ele inicie exatamente uma vez.

O ID de job é uma string que contém letras (a-z, A-Z), números (0-9), sublinhados (_) ou traços (-), com tamanho máximo de 1.024 caracteres. Os códigos de job precisam ser exclusivos em um projeto.

Uma abordagem comum para gerar um ID de job exclusivo é usar um prefixo e um sufixo legíveis com um carimbo de data/hora ou um GUID. Por exemplo: daily_import_job_1447971251.

Um exemplo de método para gerar GUIDs pode ser encontrado no módulo UUID do Python (em inglês). Para um exemplo de como usar o método uuid4() do Python com jobs.insert, consulte Como carregar dados do Cloud Storage.

A seguir

  • Consulte Como executar consultas para um exemplo de código que inicie e pesquise um job de consulta.
  • Para mais informações sobre como criar uma representação de recurso do job, consulte a página Visão geral dos jobs na referência da API.
Esta página foi útil? Conte sua opinião sobre:

Enviar comentários sobre…

Precisa de ajuda? Acesse nossa página de suporte.