Administrar empleos

En este documento se describe cómo gestionar las tareas en BigQuery, incluido cómo ver los detalles de una tarea, listar tareas, cancelar una tarea, repetir una tarea y eliminar los metadatos de una tarea.

Acerca de las tareas de BigQuery

Cada vez que cargas, exportas, consultas o copias datos, BigQuery crea, programa y ejecuta automáticamente una tarea que monitoriza el progreso de la tarea.

Como los trabajos pueden tardar mucho en completarse, se ejecutan de forma asíncrona y se puede consultar su estado. Las acciones más cortas, como enumerar recursos u obtener metadatos, no se gestionan como tareas.

Cuando se envía un trabajo, puede tener uno de los siguientes estados:

  • PENDING: el trabajo está programado y pendiente de ejecutarse.
  • RUNNING: el trabajo está en curso.
  • DONE: el trabajo se ha completado. Si la tarea se completa sin errores, BigQuery informa de este estado como SUCCESS. Si la tarea se completa con errores, BigQuery informa de este estado como FAILURE.

Cuotas

Para obtener información sobre las cuotas de trabajos, consulta la documentación del tipo de trabajo en la página Cuotas y límites:

Precios

Cada trabajo está asociado a un proyecto específico que usted indica. La cuenta de facturación vinculada al proyecto asociado se factura por el uso que genere la tarea. Si compartes el acceso a un proyecto, todos los trabajos que se ejecuten en él también se facturarán en la cuenta de facturación.

Por ejemplo, cuando se ejecuta una tarea de consulta, el coste se factura al proyecto que ejecuta la tarea. Por lo tanto, cuando veas el ID de tarea de una tarea de consulta con el formato <project_id>:<region>.<job_id>, el project_id será el ID del proyecto facturado por la consulta.

Para obtener más información, consulta los precios.

Antes de empezar

Concede roles de gestión de identidades y accesos (IAM) que proporcionen a los usuarios los permisos necesarios para realizar cada tarea de este documento.

Roles obligatorios

Para obtener los permisos que necesitas para ejecutar y gestionar trabajos, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos en el proyecto:

  • Ejecutar o repetir una tarea, enumerar tus tareas, ver los detalles de tus tareas y cancelar tus tareas: Usuario de tareas de BigQuery (roles/bigquery.jobUser) o usuario de BigQuery (roles/bigquery.user)
  • Lista todos los trabajos de un proyecto: Administrador de BigQuery (roles/bigquery.admin) o Administrador de recursos de BigQuery (roles/bigquery.resourceAdmin)
  • Ver los detalles de todos los trabajos de un proyecto, cancelar cualquier trabajo del proyecto y eliminar los metadatos de los trabajos: Administrador de BigQuery (roles/bigquery.admin)

Para obtener más información sobre cómo conceder roles, consulta el artículo Gestionar el acceso a proyectos, carpetas y organizaciones.

Estos roles predefinidos contienen los permisos necesarios para ejecutar y gestionar trabajos. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Se necesitan los siguientes permisos para ejecutar y gestionar trabajos:

  • Ejecutar o repetir un trabajo y enumerar tus trabajos: bigquery.jobs.create
  • Ver los detalles de tus tareas: bigquery.jobs.get
  • Cancelar tus tareas: bigquery.jobs.update
  • Para ver los detalles de todos los trabajos de un proyecto, sigue estos pasos:
    • bigquery.jobs.get
    • bigquery.jobs.listAll
  • Lista de todos los trabajos de un proyecto: bigquery.jobs.listAll
  • Para cancelar cualquier trabajo del proyecto, sigue estos pasos:
    • bigquery.jobs.update
    • bigquery.jobs.listAll
  • Eliminar metadatos de tareas:
    • bigquery.jobs.delete
    • bigquery.jobs.listAll

También puedes obtener estos permisos con roles personalizados u otros roles predefinidos.

Para obtener más información sobre los roles y permisos de gestión de identidades y accesos en BigQuery, consulta el artículo sobre roles y permisos predefinidos.

Ver detalles de un trabajo

Puedes ver los detalles de las tareas mediante la consola de Google Cloud , la herramienta de línea de comandos bq, la API o las bibliotecas de cliente. Los detalles incluyen datos y metadatos, como el tipo de trabajo, el estado del trabajo y el usuario que lo creó.

Para ver los detalles de un trabajo, sigue estos pasos:

Consola

  1. Ve a la página BigQuery.

    Ir a BigQuery

  2. Despliega el panel Historial de empleo.

  3. Selecciona el tipo de historial de trabajo que quieras ver:

    • Para ver la información de tus tareas recientes, haz clic en Historial personal.
    • Para ver información sobre las tareas recientes de tu proyecto, haz clic en Historial del proyecto.
  4. Para ver los detalles de un trabajo, haz clic en él.

bq

Ejecuta el comando bq show con la marca --job=true y un ID de tarea.

Cuando proporcione el ID de trabajo, puede usar el ID completo o la forma abreviada. Por ejemplo, los IDs de trabajo que se muestran en la consola Google Cloud están totalmente cualificados, es decir, incluyen el proyecto y la ubicación:

my-project-1234:US.bquijob_123x456_123y123z123c

Los IDs de trabajo de la herramienta de línea de comandos se muestran en formato abreviado. No se incluyen el ID del proyecto ni la ubicación:

bquijob_123x456_123y123z123c

Para especificar la ubicación del trabajo, proporciona la marca --location y asigna el valor a tu ubicación. Esta marca es opcional si usas el ID de trabajo completo. Si incluye la marca --location y usa el ID de trabajo completo, la marca --location se ignora.

El siguiente comando solicita información sobre un trabajo:

bq --location=LOCATION show --job=true JOB_ID

Haz los cambios siguientes:

  • LOCATION: el nombre de la ubicación en la que se ejecuta el trabajo. Por ejemplo, si usas BigQuery en la región de Tokio, asigna el valor asia-northeast1 a la marca. Puede definir un valor predeterminado para la ubicación mediante el archivo .bigqueryrc. Si la ubicación no se especifica como parte del ID de la tarea o mediante la marca --location, se usará la ubicación predeterminada.
  • JOB_ID: el ID del trabajo

Ejemplos

El siguiente comando obtiene información de resumen sobre la tarea US.bquijob_123x456_123y123z123c que se está ejecutando en myproject:

bq show --job=true myproject:US.bquijob_123x456_123y123z123c

El resultado debería ser similar al siguiente:

 Job Type    State      Start Time      Duration      User Email       Bytes Processed   Bytes Billed   Billing Tier   Labels
 ---------- --------- ----------------- ---------- ------------------- ----------------- -------------- -------------- --------
 extract    SUCCESS   06 Jul 11:32:10   0:01:41    user@example.com

Para ver todos los detalles del trabajo, introduce lo siguiente:

bq show --format=prettyjson --job=true myproject:US.bquijob_123x456_789y123z456c

El resultado debería ser similar al siguiente:

{
  "configuration": {
    "extract": {
      "compression": "NONE",
      "destinationUri": "[URI removed]",
      "destinationUris": [
        "[URI removed]"
      ],
      "sourceTable": {
        "datasetId": "github_repos",
        "projectId": "bigquery-public-data",
        "tableId": "commits"
      }
    }
  },
  "etag": "\"[etag removed]\"",
  "id": "myproject:bquijob_123x456_789y123z456c",
  "jobReference": {
    "jobId": "bquijob_123x456_789y123z456c",
    "projectId": "[Project ID removed]"
  },
  "kind": "bigquery#job",
  "selfLink": "https://bigquery.googleapis.com/bigquery/v2/projects/federated-testing/jobs/bquijob_123x456_789y123z456c",
  "statistics": {
    "creationTime": "1499365894527",
    "endTime": "1499365894702",
    "startTime": "1499365894702"
  },
  "status": {
    "errorResult": {
      "debugInfo": "[Information removed for readability]",
      "message": "Operation cannot be performed on a nested schema. Field: author",
      "reason": "invalid"
    },
    "errors": [
      {
        "message": "Operation cannot be performed on a nested schema. Field: author",
        "reason": "invalid"
      }
    ],
    "state": "DONE"
  },
  "user_email": "user@example.com"
}

API

Llama a jobs.get y proporciona los parámetros jobId y projectId. (Opcional) Proporciona el parámetro location y asigna el valor a la ubicación en la que se ejecuta el trabajo. Este parámetro es opcional si usas el ID de trabajo completo que incluye la ubicación, por ejemplo, my-project-1234:US.bquijob_123x456_123y123z123c.

Go

Antes de probar este ejemplo, sigue las Goinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
)

// getJobInfo demonstrates retrieval of a job, which can be used to monitor
// completion or print metadata about the job.
func getJobInfo(w io.Writer, projectID, jobID string) error {
	// projectID := "my-project-id"
	// jobID := "my-job-id"
	ctx := context.Background()

	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	job, err := client.JobFromID(ctx, jobID)
	if err != nil {
		return err
	}

	status := job.LastStatus()
	state := "Unknown"
	switch status.State {
	case bigquery.Pending:
		state = "Pending"
	case bigquery.Running:
		state = "Running"
	case bigquery.Done:
		state = "Done"
	}
	fmt.Fprintf(w, "Job %s was created %v and is in state %s\n",
		jobID, status.Statistics.CreationTime, state)
	return nil
}

Java

Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobId;

// Sample to get a job
public class GetJob {

  public static void runGetJob() {
    // TODO(developer): Replace these variables before running the sample.
    String jobName = "MY_JOB_NAME";
    getJob(jobName);
  }

  public static void getJob(String jobName) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      JobId jobId = JobId.of(jobName);
      Job job = bigquery.getJob(jobId);
      System.out.println("Job retrieved successfully");
    } catch (BigQueryException e) {
      System.out.println("Job not retrieved. \n" + e.toString());
    }
  }
}

Node.js

Antes de probar este ejemplo, sigue las Node.jsinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function getJob() {
  // Get job properties.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const jobId = "existing-job-id";

  // Create a job reference
  const job = bigquery.job(jobId);

  // Retrieve job
  const [jobResult] = await job.get();

  console.log(jobResult.metadata.jobReference);
}

Python

Antes de probar este ejemplo, sigue las Pythoninstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

from google.cloud import bigquery


def get_job(
    client: bigquery.Client,
    location: str = "us",
    job_id: str = "abcd-efgh-ijkl-mnop",
) -> None:
    job = client.get_job(job_id, location=location)

    # All job classes have "location" and "job_id" string properties.
    # Use these properties for job operations such as "cancel_job" and
    # "delete_job".
    print(f"{job.location}:{job.job_id}")
    print(f"Type: {job.job_type}")
    print(f"State: {job.state}")
    print(f"Created: {job.created.isoformat()}")

Si necesitas más información para solucionar un problema con un trabajo, consulta las INFORMATION_SCHEMA.JOBS* vistas y los registros.

Mostrar tareas

BigQuery guarda un historial de tareas de seis meses de todas las tareas de un proyecto en todas las ubicaciones. El historial de tareas incluye las tareas que están en el estado RUNNING y las tareas que están DONE (indicadas por el estado SUCCESS o FAILURE).

Para enumerar los trabajos de un proyecto, sigue estos pasos:

Consola

  1. Ve a la página BigQuery.

    Ir a BigQuery

  2. Despliega el panel Historial de empleo.

  3. Para ver una lista de todos los trabajos de un proyecto, haz clic en Historial del proyecto. Si no eres el propietario del proyecto, es posible que no tengas permiso para ver todos los trabajos de un proyecto. Los trabajos más recientes se muestran en primer lugar.

  4. Para ver una lista de tus trabajos, haz clic en Historial personal.

bq

Ejecuta el comando bq ls con una de las siguientes marcas:

  • --jobs=true o -j: identifica las tareas como el tipo de recurso que se va a enumerar.
  • --all=true o -a: muestra los trabajos de todos los usuarios. Para ver los detalles completos (sin censurar) de todos los trabajos, debes tener permisos de bigquery.jobs.listAll.
  • --min_creation_time: muestra los trabajos posteriores a un valor de marca de tiempo proporcionado. Este valor se representa como una marca de tiempo de época de Unix en milisegundos.
  • --max_creation_time: muestra los trabajos anteriores a un valor de marca de tiempo proporcionado. Este valor se representa como una marca de tiempo de época de Unix en milisegundos.
  • --max_results o -n limita los resultados. El valor predeterminado es 50 resultados.
bq ls --jobs=true --all=true \
    --min_creation_time=MIN_TIME \
    --max_creation_time=MAX_TIME \
    --max_results=MAX_RESULTS \
    PROJECT_ID

Haz los cambios siguientes:

  • MIN_TIME: número entero que representa una marca de tiempo Unix epoch en milisegundos.
  • MAX_TIME: número entero que representa una marca de tiempo Unix epoch en milisegundos.
  • MAX_RESULTS: un número entero que indica el número de trabajos devueltos.
  • PROJECT_ID: el ID del proyecto que contiene los trabajos que estás enumerando. Si estableces un proyecto predeterminado, no es necesario que proporciones el parámetro PROJECT_ID.

Ejemplos

El siguiente comando muestra todos los trabajos del usuario actual. Para ejecutar este comando, se necesitan permisos de bigquery.jobs.list.

bq ls --jobs=true myproject

El siguiente comando muestra todos los trabajos de todos los usuarios. Para ejecutar este comando, se necesitan permisos de bigquery.jobs.listAll.

bq ls --jobs=true --all=true myproject

El siguiente comando muestra los 10 trabajos más recientes de myproject:

bq ls --jobs=true --all=true --max_results=10 myproject

El siguiente comando muestra todos los trabajos enviados antes del 3 de marzo del 2032 a las 4:04:00. Esta marca de tiempo (en milisegundos) equivale al siguiente valor entero: 1961899440000.

bq ls --jobs=true --max_creation_time=1961899440000

API

Llama al método jobs.list y proporciona el parámetro projectId. Para mostrar las tareas de todos los usuarios, asigna el valor true al parámetro allUsers. Para definir allUsers como true, se necesitan permisos de bigquery.jobs.listAll. El método jobs.list no devuelve tareas secundarias. Para ver los trabajos secundarios, usa la INFORMATION_SCHEMA.JOBSvista.

Go

Antes de probar este ejemplo, sigue las Goinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

import (
	"context"
	"fmt"
	"io"

	"cloud.google.com/go/bigquery"
	"google.golang.org/api/iterator"
)

// listJobs demonstrates iterating through the BigQuery jobs collection.
func listJobs(w io.Writer, projectID string) error {
	// projectID := "my-project-id"
	// jobID := "my-job-id"
	ctx := context.Background()

	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	it := client.Jobs(ctx)
	// List up to 10 jobs to demonstrate iteration.
	for i := 0; i < 10; i++ {
		j, err := it.Next()
		if err == iterator.Done {
			break
		}
		if err != nil {
			return err
		}
		state := "Unknown"
		switch j.LastStatus().State {
		case bigquery.Pending:
			state = "Pending"
		case bigquery.Running:
			state = "Running"
		case bigquery.Done:
			state = "Done"
		}
		fmt.Fprintf(w, "Job %s in state %s\n", j.ID(), state)
	}
	return nil
}

Java

Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

import com.google.api.gax.paging.Page;
import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Job;

// Sample to get list of jobs
public class ListJobs {

  public static void runListJobs() {
    listJobs();
  }

  public static void listJobs() {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      Page<Job> jobs = bigquery.listJobs(BigQuery.JobListOption.pageSize(10));
      if (jobs == null) {
        System.out.println("Dataset does not contain any jobs.");
        return;
      }
      jobs.getValues().forEach(job -> System.out.printf("Success! Job ID: %s", job.getJobId()));
    } catch (BigQueryException e) {
      System.out.println("Jobs not listed in dataset due to error: \n" + e.toString());
    }
  }
}

Node.js

Antes de probar este ejemplo, sigue las Node.jsinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function listJobs() {
  // Lists all jobs in current GCP project.

  // List the 10 most recent jobs in reverse chronological order.
  //  Omit the max_results parameter to list jobs from the past 6 months.
  const options = {maxResults: 10};
  const [jobs] = await bigquery.getJobs(options);

  console.log('Jobs:');
  jobs.forEach(job => console.log(job.id));
}

Python

Antes de probar este ejemplo, sigue las Pythoninstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.


from google.cloud import bigquery

import datetime

# Construct a BigQuery client object.
client = bigquery.Client()

# List the 10 most recent jobs in reverse chronological order.
# Omit the max_results parameter to list jobs from the past 6 months.
print("Last 10 jobs:")
for job in client.list_jobs(max_results=10):  # API request(s)
    print("{}".format(job.job_id))

# The following are examples of additional optional parameters:

# Use min_creation_time and/or max_creation_time to specify a time window.
print("Jobs from the last ten minutes:")
ten_mins_ago = datetime.datetime.utcnow() - datetime.timedelta(minutes=10)
for job in client.list_jobs(min_creation_time=ten_mins_ago):
    print("{}".format(job.job_id))

# Use all_users to include jobs run by all users in the project.
print("Last 10 jobs run by all users:")
for job in client.list_jobs(max_results=10, all_users=True):
    print("{} run by user: {}".format(job.job_id, job.user_email))

# Use state_filter to filter by job state.
print("Last 10 jobs done:")
for job in client.list_jobs(max_results=10, state_filter="DONE"):
    print("{}".format(job.job_id))

Cancelar una tarea

Puedes cancelar un trabajo de RUNNING o PENDING. Normalmente, se tarda menos de un minuto en cancelar un trabajo.

Aunque se pueda cancelar el trabajo, no se garantiza que se complete correctamente. Es posible que el trabajo se haya completado cuando se envíe la solicitud de cancelación o que se encuentre en una fase en la que no se pueda cancelar.

Para cancelar un trabajo, sigue estos pasos:

Consola

  1. Ve a la página BigQuery.

    Ir a BigQuery

  2. Haz clic en Redactar nueva consulta e introduce una consulta.

  3. Para ejecutar la consulta, haz clic en Ejecutar.

  4. Para cancelar un trabajo, haz clic en Cancelar.

SQL

Usa el procedimiento del sistema BQ.JOBS.CANCEL:

  CALL BQ.JOBS.CANCEL('JOB_ID');

Sustituye JOB_ID por el ID del trabajo que quieres cancelar.

Si estás en otro proyecto, pero en la misma región que el trabajo que quieres cancelar, también debes incluir el ID del proyecto:

  CALL BQ.JOBS.CANCEL('PROJECT_ID.JOB_ID');

Haz los cambios siguientes:

  • PROJECT_ID: el ID del proyecto que contiene el trabajo que quieres cancelar
  • JOB_ID: el ID del trabajo que quieres cancelar

El procedimiento se devuelve inmediatamente y BigQuery cancela el trabajo poco después. Si la tarea ya se ha completado correctamente o ha fallado, el procedimiento no tendrá ningún efecto.

bq

Ejecuta el comando bq cancel con el argumento JOB_ID. Puedes solicitar la cancelación y la devolución de inmediato mediante la marca --nosync=true. De forma predeterminada, las solicitudes de cancelación esperan a que se completen.

Cuando proporciones el argumento JOB_ID, puedes usar el ID completo o la forma abreviada. Por ejemplo, los IDs de trabajo que se muestran en la consola Google Cloud están totalmente cualificados, es decir, incluyen el proyecto y la ubicación:

my-project-1234:US.bquijob_123x456_123y123z123c

Los IDs de trabajo de la herramienta de línea de comandos bq se muestran en formato abreviado. No se incluyen el ID del proyecto ni la ubicación:

bquijob_123x456_123y123z123c

Para especificar la ubicación del trabajo, proporciona la marca --location y asigna el valor a tu ubicación. Esta marca es opcional si usas el ID de trabajo completo. Si incluye la marca --location y usa el ID de trabajo completo, la marca --location se ignora.

El siguiente comando solicita la cancelación del trabajo y espera a que se complete. Si se proporciona el ID de trabajo completo, se ignora la marca --location:

bq --location=LOCATION cancel JOB_ID

El siguiente comando solicita la cancelación del trabajo y se devuelve inmediatamente. Si se proporciona el ID de trabajo completo, se ignora la marca --location:

bq --location=LOCATION --nosync cancel JOB_ID

Haz los cambios siguientes:

  • LOCATION (opcional): el nombre de la ubicación en la que se ejecuta el trabajo. Por ejemplo, si usas BigQuery en la región de Tokio, asigna el valor asia-northeast1 a la marca. Puede definir un valor predeterminado para la ubicación mediante el archivo .bigqueryrc.
  • JOB_ID: el ID del trabajo que quieres cancelar. Si copias el ID de trabajo de la consola de Google Cloud , el ID de proyecto y la ubicación se incluirán en el ID de trabajo. Por ejemplo, my-project-1234:US.bquijob_123x456_123y123z123c.

Ejemplos

El siguiente comando cancela el trabajo my-project-1234:US.bquijob_123x456_123y123z123c que se está ejecutando en la ubicación multirregional US del proyecto my-project-1234 y espera a que se complete. Como se usa el ID de trabajo completo, no se proporciona la marca de ubicación.

bq cancel my-project-1234:US.bquijob_123x456_123y123z123c

El siguiente comando cancela el trabajo bquijob_123x456_123y123z123c que se está ejecutando en la ubicación multirregional US del proyecto my-project-1234 y espera a que se complete. Como se usa la forma abreviada del ID de trabajo, se proporciona la marca --location.

bq --location=US cancel bquijob_123x456_123y123z123c

El siguiente comando cancela el trabajo bquijob_123x456_123y123z123c que se está ejecutando en la ubicación multirregional US del proyecto my-project-1234 y devuelve el resultado inmediatamente. Como se usa el ID de trabajo completo, no se proporciona la marca --location.

bq --nosync cancel my-project-1234:US.bquijob_123x456_123y123z123c

API

Llama a jobs.cancel y proporciona los parámetros jobId y projectId. Proporcione el parámetro location y defina el valor como la ubicación en la que se ejecuta el trabajo.

Go

Antes de probar este ejemplo, sigue las Goinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Go de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

import (
	"context"
	"fmt"

	"cloud.google.com/go/bigquery"
)

// cancelJob demonstrates how a job cancellation request can be issued for a specific
// BigQuery job.
func cancelJob(projectID, jobID string) error {
	// projectID := "my-project-id"
	// jobID := "my-job-id"
	ctx := context.Background()

	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	job, err := client.JobFromID(ctx, jobID)
	if err != nil {
		return nil
	}
	return job.Cancel(ctx)
}

Java

Antes de probar este ejemplo, sigue las Javainstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Java de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

import com.google.cloud.bigquery.BigQuery;
import com.google.cloud.bigquery.BigQueryException;
import com.google.cloud.bigquery.BigQueryOptions;
import com.google.cloud.bigquery.Job;
import com.google.cloud.bigquery.JobId;
import com.google.cloud.bigquery.JobInfo;
import com.google.cloud.bigquery.QueryJobConfiguration;
import java.util.UUID;

// Sample to cancel a job
public class CancelJob {

  public static void runCancelJob() {
    // TODO(developer): Replace these variables before running the sample.
    String query = "SELECT country_name from `bigquery-public-data.utility_us.country_code_iso`";
    cancelJob(query);
  }

  public static void cancelJob(String query) {
    try {
      // Initialize client that will be used to send requests. This client only needs to be created
      // once, and can be reused for multiple requests.
      BigQuery bigquery = BigQueryOptions.getDefaultInstance().getService();

      // Specify a job configuration to set optional job resource properties.
      QueryJobConfiguration queryConfig = QueryJobConfiguration.newBuilder(query).build();

      // The location and job name are optional,
      // if both are not specified then client will auto-create.
      String jobName = "jobId_" + UUID.randomUUID().toString();
      JobId jobId = JobId.newBuilder().setLocation("us").setJob(jobName).build();

      // Create a job with job ID
      bigquery.create(JobInfo.of(jobId, queryConfig));

      // Get a job that was just created
      Job job = bigquery.getJob(jobId);
      if (job.cancel()) {
        System.out.println("Job canceled successfully");
      } else {
        System.out.println("Job was not canceled");
      }
    } catch (BigQueryException e) {
      System.out.println("Job was not canceled.\n" + e.toString());
    }
  }
}

Node.js

Antes de probar este ejemplo, sigue las Node.jsinstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Node.js de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

// Import the Google Cloud client library
const {BigQuery} = require('@google-cloud/bigquery');
const bigquery = new BigQuery();

async function cancelJob() {
  // Attempts to cancel a job.

  /**
   * TODO(developer): Uncomment the following lines before running the sample.
   */
  // const jobId = "existing-job-id";

  // Create a job reference
  const job = bigquery.job(jobId);

  // Attempt to cancel job
  const [apiResult] = await job.cancel();

  console.log(apiResult.job.status);
}

Python

Antes de probar este ejemplo, sigue las Pythoninstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

from google.cloud import bigquery


def cancel_job(
    client: bigquery.Client,
    location: str = "us",
    job_id: str = "abcd-efgh-ijkl-mnop",
) -> None:
    job = client.cancel_job(job_id, location=location)
    print(f"{job.location}:{job.job_id} cancelled")

Eliminar metadatos de una tarea

Puede eliminar los metadatos de un trabajo específico mediante la herramienta de línea de comandos bq y la biblioteca de cliente de Python. BigQuery conserva un historial de las tareas ejecutadas en los últimos seis meses. Puedes usar este método para eliminar información sensible que pueda estar presente en las instrucciones de consulta. Los metadatos de los trabajos solo se pueden eliminar una vez que se hayan completado. Si un trabajo ha creado trabajos secundarios, estos también se eliminarán. No se permite eliminar tareas secundarias. Solo se pueden eliminar los trabajos principales o de nivel superior.

Para eliminar metadatos de un trabajo, sigue estos pasos:

bq

Ejecuta el comando bq rm con la marca -j y un ID de tarea.

Cuando proporcione el ID de trabajo, puede usar el ID completo o la forma abreviada. Por ejemplo, los IDs de trabajo que se muestran en la consola Google Cloud están totalmente cualificados, es decir, incluyen el proyecto y la ubicación:

my-project-1234:US.bquijob_123x456_123y123z123c

Los IDs de trabajo de la herramienta de línea de comandos bq se muestran en formato abreviado. No se incluyen el ID del proyecto ni la ubicación:

bquijob_123x456_123y123z123c

Para especificar la ubicación del trabajo, proporciona la marca --location y asigna el valor a tu ubicación. Esta marca es opcional si usas el ID de trabajo completo. Si incluye la marca --location y usa el ID de trabajo completo, la marca --location se ignora.

El siguiente comando elimina un trabajo:

bq --location=location \
    --project_id=project_id \
    rm -j job_id

Python

Antes de probar este ejemplo, sigue las Pythoninstrucciones de configuración de la guía de inicio rápido de BigQuery con bibliotecas de cliente. Para obtener más información, consulta la documentación de referencia de la API Python de BigQuery.

Para autenticarte en BigQuery, configura las credenciales predeterminadas de la aplicación. Para obtener más información, consulta el artículo Configurar la autenticación para bibliotecas de cliente.

from google.api_core import exceptions
from google.cloud import bigquery

# TODO(developer): Set the job ID to the ID of the job whose metadata you
#                  wish to delete.
job_id = "abcd-efgh-ijkl-mnop"

# TODO(developer): Set the location to the region or multi-region
#                  containing the job.
location = "us-east1"

client = bigquery.Client()

client.delete_job_metadata(job_id, location=location)

try:
    client.get_job(job_id, location=location)
except exceptions.NotFound:
    print(f"Job metadata for job {location}:{job_id} was deleted.")

Repetir tareas

No se puede repetir un trabajo con el mismo ID. En su lugar, crea un nuevo trabajo con la misma configuración. Cuando envías el nuevo trabajo en la consola deGoogle Cloud o en la herramienta de línea de comandos bq, se le asigna un nuevo ID de trabajo. Cuando envíes el trabajo mediante la API o las bibliotecas de cliente, debes generar un nuevo ID de trabajo.

Para repetir un trabajo, sigue estos pasos:

Consola

Para repetir un trabajo de consulta, sigue estos pasos:

  1. Ve a la página BigQuery.

    Ir a BigQuery

  2. Despliega el panel Historial de empleo.

  3. Para ver todos tus trabajos, haz clic en Historial personal. Para ver todas las tareas de un proyecto, haz clic en Historial del proyecto.

  4. Haz clic en un trabajo de consulta para abrir sus detalles.

  5. Para repetir una consulta, haz clic en Abrir como consulta nueva.

  6. Haz clic en Ejecutar.

Para repetir un trabajo de carga, sigue estos pasos:

  1. Ve a la página BigQuery.

    Ir a BigQuery

  2. Despliega el panel Historial de empleo.

  3. Para ver todos tus trabajos, haz clic en Historial personal. Para ver todas las tareas de un proyecto, haz clic en Historial del proyecto.

  4. Haz clic en un trabajo de carga para abrir sus detalles.

  5. Para repetir un trabajo, haz clic en Repetir trabajo de carga.

bq

Vuelve a enviar el comando y BigQuery generará automáticamente una tarea con un nuevo ID.

API

No hay un método de una sola llamada para repetir una tarea. Si quieres repetir una tarea específica, sigue estos pasos:

  1. Llama a jobs.get para obtener el recurso del trabajo que se va a repetir.

  2. Quita los campos id, status y statistics. Cambia el campo jobId por un nuevo valor generado por tu código de cliente. Cambia cualquier otro campo según sea necesario.

  3. Llama a jobs.insert con el recurso modificado y el nuevo ID de trabajo para iniciar el nuevo trabajo.

Siguientes pasos