Ejecutar una consulta

En este documento se explica cómo ejecutar una consulta en BigQuery y saber cuántos datos procesará la consulta antes de ejecutarla mediante una prueba.

Tipos de consultas

Puedes consultar datos de BigQuery con uno de los siguientes tipos de trabajo de consulta:

  • Trabajos de consulta interactiva. De forma predeterminada, BigQuery ejecuta las consultas como tareas de consulta interactivas, que están diseñadas para empezar a ejecutarse lo antes posible.

  • Consultas por lotes. Las consultas por lotes tienen una prioridad inferior a las consultas interactivas. Cuando un proyecto o una reserva utiliza todos los recursos de computación disponibles, es más probable que las consultas por lotes se pongan en cola y permanezcan en ella. Una vez que se inicia una consulta por lotes, se ejecuta igual que una consulta interactiva. Para obtener más información, consulta el artículo sobre colas de consultas.

  • Trabajos de consulta continua. Con estas tareas, la consulta se ejecuta de forma continua, lo que te permite analizar los datos entrantes en BigQuery en tiempo real y, a continuación, escribir los resultados en una tabla de BigQuery o exportarlos a Bigtable o Pub/Sub. Puedes usar esta función para llevar a cabo tareas urgentes, como crear estadísticas y actuar en consecuencia de inmediato, aplicar inferencias de aprendizaje automático (ML) en tiempo real y crear flujos de datos basados en eventos.

Puedes ejecutar trabajos de consulta con los siguientes métodos:

BigQuery guarda los resultados de las consultas en una tabla temporal (opción predeterminada) o en una tabla permanente. Cuando especifica una tabla permanente como tabla de destino de los resultados, puede elegir si quiere añadir datos a una tabla que ya tenga o sobrescribirla, o bien crear una tabla con un nombre único.

Roles obligatorios

Para obtener los permisos que necesitas para ejecutar un trabajo de consulta, pide a tu administrador que te conceda los siguientes roles de gestión de identidades y accesos:

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 una tarea de consulta. Para ver los permisos exactos que se necesitan, despliega la sección Permisos necesarios:

Permisos obligatorios

Para ejecutar una tarea de consulta, se necesitan los siguientes permisos:

  • bigquery.jobs.create en el proyecto desde el que se ejecuta la consulta, independientemente de dónde se almacenen los datos.
  • bigquery.tables.getData en todas las tablas y vistas a las que hace referencia tu consulta. Para consultar vistas, también necesitas este permiso en todas las tablas y vistas subyacentes. Si usa vistas autorizadas o conjuntos de datos autorizados, no necesita acceder a los datos de origen subyacentes.

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

Solución de problemas

Access Denied: Project [project_id]: User does not have bigquery.jobs.create
permission in project [project_id].

Este error se produce cuando una entidad de seguridad no tiene permiso para crear trabajos de consulta en el proyecto.

Solución: Un administrador debe concederte el permiso bigquery.jobs.create en el proyecto que estás consultando. Este permiso es obligatorio, además de cualquier otro permiso necesario para acceder a los datos consultados.

Para obtener más información sobre los permisos de BigQuery, consulta Control de acceso con gestión de identidades y accesos.

Ejecutar una consulta interactiva

Para ejecutar una consulta interactiva, selecciona una de las siguientes opciones:

Consola

  1. Ve a la página BigQuery.

    Ir a BigQuery

  2. Haz clic en Consulta de SQL.

  3. En el editor de consultas, introduce una consulta de GoogleSQL válida.

    Por ejemplo, consulta el conjunto de datos público de BigQuery usa_names para determinar los nombres más comunes en Estados Unidos entre los años 1910 y 2013:

    SELECT
      name, gender,
      SUM(number) AS total
    FROM
      `bigquery-public-data.usa_names.usa_1910_2013`
    GROUP BY
      name, gender
    ORDER BY
      total DESC
    LIMIT
      10;
    

    También puedes usar el panel Referencia para crear nuevas consultas.

  4. Opcional: Para mostrar automáticamente sugerencias de código al escribir una consulta, haz clic en Más y, a continuación, selecciona Autocompletar SQL. Si no necesitas sugerencias de autocompletar, desmarca Autocompletar SQL. También se desactivarán las sugerencias de Autocompletar del nombre del proyecto.

  5. Opcional: Para seleccionar ajustes de consulta adicionales, haz clic en Más y, a continuación, en Ajustes de consulta.

  6. Haz clic en Ejecutar.

    Si no especificas una tabla de destino, la tarea de consulta escribe el resultado en una tabla temporal (caché).

    Ahora puedes consultar los resultados de la consulta en la pestaña Resultados del panel Resultados de la consulta.

  7. Opcional: Para ordenar los resultados de la consulta por columna, haz clic en Abrir menú de ordenación junto al nombre de la columna y selecciona un orden. Si el número de bytes estimados procesados para la ordenación es superior a cero, se muestra en la parte superior del menú.

  8. Opcional: Para ver una visualización de los resultados de tu consulta, ve a la pestaña Visualización. Puedes ampliar o reducir el gráfico, descargarlo como archivo PNG o activar o desactivar la visibilidad de la leyenda.

    En el panel Configuración de la visualización, puede cambiar el tipo de visualización y configurar las medidas y las dimensiones de la visualización. Los campos de este panel se rellenan automáticamente con la configuración inicial inferida del esquema de la tabla de destino de la consulta. La configuración se conserva entre las siguientes ejecuciones de consultas en el mismo editor de consultas.

    En las visualizaciones Líneas, Barras y De dispersión, las dimensiones admitidas son los tipos de datos INT64, FLOAT64, NUMERIC, BIGNUMERIC, TIMESTAMP, DATE, DATETIME, TIME y STRING, mientras que las medidas admitidas son los tipos de datos INT64, FLOAT64, NUMERIC y BIGNUMERIC.

    Si los resultados de tu consulta incluyen el tipo GEOGRAPHY, Mapa es el tipo de visualización predeterminado, que te permite visualizar los resultados en un mapa interactivo.

  9. Opcional: En la pestaña JSON, puedes consultar los resultados de la consulta en formato JSON, donde la clave es el nombre de la columna y el valor es el resultado de esa columna.

bq

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Usa el comando bq query. En el siguiente ejemplo, la marca --use_legacy_sql=false te permite usar la sintaxis de GoogleSQL.

    bq query \
        --use_legacy_sql=false \
        'QUERY'

    Sustituye QUERY por una consulta de GoogleSQL válida. Por ejemplo, consulta el conjunto de datos público de BigQuery usa_names para determinar los nombres más comunes en Estados Unidos entre 1910 y 2013:

    bq query \
        --use_legacy_sql=false \
        'SELECT
          name, gender,
          SUM(number) AS total
        FROM
          `bigquery-public-data.usa_names.usa_1910_2013`
        GROUP BY
          name, gender
        ORDER BY
          total DESC
        LIMIT
          10;'
    

    La tarea de consulta escribe el resultado en una tabla temporal (caché).

    También puede especificar la tabla de destino y la ubicación de los resultados de la consulta. Para escribir los resultados en una tabla, incluye la marca adecuada para añadir (--append_table=true) o sobrescribir (--replace=true) la tabla.

    bq query \
        --location=LOCATION \
        --destination_table=TABLE \
        --use_legacy_sql=false \
        'QUERY'

    Haz los cambios siguientes:

    • LOCATION: la región o multirregión de la tabla de destino. Por ejemplo, US.

      En este ejemplo, el conjunto de datos usa_names se almacena en la ubicación multirregional de EE. UU. Si especificas una tabla de destino para esta consulta, el conjunto de datos que contenga la tabla de destino también debe estar en la multirregión de EE. UU. No puedes consultar un conjunto de datos de una ubicación y escribir los resultados en una tabla de otra ubicación.

      Puedes definir un valor predeterminado para la ubicación mediante el archivo.bigqueryrc.

    • TABLE: un nombre para la tabla de destino (por ejemplo,) myDataset.myTable

      Si la tabla de destino es nueva, BigQuery la crea cuando ejecutas la consulta. Sin embargo, debes especificar un conjunto de datos.

      Si la tabla no está en tu proyecto actual, añade el ID del proyecto con el formatoGoogle Cloud PROJECT_ID:DATASET.TABLE (por ejemplo, myProject:myDataset.myTable). Si no se especifica --destination_table, se genera una tarea de consulta que escribe el resultado en una tabla temporal.

  3. API

    Para ejecutar una consulta mediante la API, inserta un nuevo trabajo y rellena la propiedad de configuración del trabajo query. También puedes especificar tu ubicación en la propiedad location de la sección jobReference del recurso Job.

    Consulta los resultados llamando al getQueryResults. Encuesta hasta jobComplete es igual a true. Comprueba si hay errores y advertencias en la lista errors.

    C#

    Antes de probar este ejemplo, sigue las C#instrucciones 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 C# 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.

    
    using Google.Cloud.BigQuery.V2;
    using System;
    
    public class BigQueryQuery
    {
        public void Query(
            string projectId = "your-project-id"
        )
        {
            BigQueryClient client = BigQueryClient.Create(projectId);
            string query = @"
                SELECT name FROM `bigquery-public-data.usa_names.usa_1910_2013`
                WHERE state = 'TX'
                LIMIT 100";
            BigQueryJob job = client.CreateQueryJob(
                sql: query,
                parameters: null,
                options: new QueryOptions { UseQueryCache = false });
            // Wait for the job to complete.
            job = job.PollUntilCompleted().ThrowOnAnyError();
            // Display the results
            foreach (BigQueryRow row in client.GetQueryResults(job.Reference))
            {
                Console.WriteLine($"{row["name"]}");
            }
        }
    }

    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"
    )
    
    // queryBasic demonstrates issuing a query and reading results.
    func queryBasic(w io.Writer, projectID string) error {
    	// projectID := "my-project-id"
    	ctx := context.Background()
    	client, err := bigquery.NewClient(ctx, projectID)
    	if err != nil {
    		return fmt.Errorf("bigquery.NewClient: %v", err)
    	}
    	defer client.Close()
    
    	q := client.Query(
    		"SELECT name FROM `bigquery-public-data.usa_names.usa_1910_2013` " +
    			"WHERE state = \"TX\" " +
    			"LIMIT 100")
    	// Location must match that of the dataset(s) referenced in the query.
    	q.Location = "US"
    	// Run the query and print results when the query job is completed.
    	job, err := q.Run(ctx)
    	if err != nil {
    		return err
    	}
    	status, err := job.Wait(ctx)
    	if err != nil {
    		return err
    	}
    	if err := status.Err(); err != nil {
    		return err
    	}
    	it, err := job.Read(ctx)
    	for {
    		var row []bigquery.Value
    		err := it.Next(&row)
    		if err == iterator.Done {
    			break
    		}
    		if err != nil {
    			return err
    		}
    		fmt.Fprintln(w, row)
    	}
    	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.QueryJobConfiguration;
    import com.google.cloud.bigquery.TableResult;
    
    public class SimpleQuery {
    
      public static void runSimpleQuery() {
        // TODO(developer): Replace this query before running the sample.
        String query = "SELECT corpus FROM `bigquery-public-data.samples.shakespeare` GROUP BY corpus;";
        simpleQuery(query);
      }
    
      public static void simpleQuery(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();
    
          // Create the query job.
          QueryJobConfiguration queryConfig = QueryJobConfiguration.newBuilder(query).build();
    
          // Execute the query.
          TableResult result = bigquery.query(queryConfig);
    
          // Print the results.
          result.iterateAll().forEach(rows -> rows.forEach(row -> System.out.println(row.getValue())));
    
          System.out.println("Query ran successfully");
        } catch (BigQueryException | InterruptedException e) {
          System.out.println("Query did not run \n" + e.toString());
        }
      }
    }

    Para ejecutar una consulta con un proxy, consulta Configurar un proxy.

    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 using default credentials
    const {BigQuery} = require('@google-cloud/bigquery');
    const bigquery = new BigQuery();
    async function query() {
      // Queries the U.S. given names dataset for the state of Texas.
    
      const query = `SELECT name
        FROM \`bigquery-public-data.usa_names.usa_1910_2013\`
        WHERE state = 'TX'
        LIMIT 100`;
    
      // For all options, see https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query
      const options = {
        query: query,
        // Location must match that of the dataset(s) referenced in the query.
        location: 'US',
      };
    
      // Run the query as a job
      const [job] = await bigquery.createQueryJob(options);
      console.log(`Job ${job.id} started.`);
    
      // Wait for the query to finish
      const [rows] = await job.getQueryResults();
    
      // Print the results
      console.log('Rows:');
      rows.forEach(row => console.log(row));
    }

    PHP

    Antes de probar este ejemplo, sigue las PHPinstrucciones 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 PHP 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.

    use Google\Cloud\BigQuery\BigQueryClient;
    use Google\Cloud\Core\ExponentialBackoff;
    
    /** Uncomment and populate these variables in your code */
    // $projectId = 'The Google project ID';
    // $query = 'SELECT id, view_count FROM `bigquery-public-data.stackoverflow.posts_questions`';
    
    $bigQuery = new BigQueryClient([
        'projectId' => $projectId,
    ]);
    $jobConfig = $bigQuery->query($query);
    $job = $bigQuery->startQuery($jobConfig);
    
    $backoff = new ExponentialBackoff(10);
    $backoff->execute(function () use ($job) {
        print('Waiting for job to complete' . PHP_EOL);
        $job->reload();
        if (!$job->isComplete()) {
            throw new Exception('Job has not yet completed', 500);
        }
    });
    $queryResults = $job->queryResults();
    
    $i = 0;
    foreach ($queryResults as $row) {
        printf('--- Row %s ---' . PHP_EOL, ++$i);
        foreach ($row as $column => $value) {
            printf('%s: %s' . PHP_EOL, $column, json_encode($value));
        }
    }
    printf('Found %s row(s)' . PHP_EOL, $i);

    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
    
    # Construct a BigQuery client object.
    client = bigquery.Client()
    
    query = """
        SELECT name, SUM(number) as total_people
        FROM `bigquery-public-data.usa_names.usa_1910_2013`
        WHERE state = 'TX'
        GROUP BY name, state
        ORDER BY total_people DESC
        LIMIT 20
    """
    rows = client.query_and_wait(query)  # Make an API request.
    
    print("The query data:")
    for row in rows:
        # Row values can be accessed by field name or index.
        print("name={}, count={}".format(row[0], row["total_people"]))

    Ruby

    Antes de probar este ejemplo, sigue las Rubyinstrucciones 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 Ruby 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.

    require "google/cloud/bigquery"
    
    def query
      bigquery = Google::Cloud::Bigquery.new
      sql = "SELECT name FROM `bigquery-public-data.usa_names.usa_1910_2013` " \
            "WHERE state = 'TX' " \
            "LIMIT 100"
    
      # Location must match that of the dataset(s) referenced in the query.
      results = bigquery.query sql do |config|
        config.location = "US"
      end
    
      results.each do |row|
        puts row.inspect
      end
    end

Ejecutar una consulta por lotes

Para ejecutar una consulta por lotes, selecciona una de las siguientes opciones:

Consola

  1. Ve a la página BigQuery.

    Ir a BigQuery

  2. Haz clic en Consulta de SQL.

  3. En el editor de consultas, introduce una consulta de GoogleSQL válida.

    Por ejemplo, consulta el conjunto de datos público de BigQuery usa_names para determinar los nombres más comunes en Estados Unidos entre los años 1910 y 2013:

    SELECT
      name, gender,
      SUM(number) AS total
    FROM
      `bigquery-public-data.usa_names.usa_1910_2013`
    GROUP BY
      name, gender
    ORDER BY
      total DESC
    LIMIT
      10;
    
  4. Haz clic en Más y, a continuación, en Configuración de la consulta.

  5. En la sección Gestión de recursos, selecciona Lote.

  6. Opcional: Ajusta la configuración de la consulta.

  7. Haz clic en Guardar.

  8. Haz clic en Ejecutar.

    Si no especificas una tabla de destino, la tarea de consulta escribe el resultado en una tabla temporal (caché).

bq

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Usa el comando bq query y especifica la marca --batch. En el siguiente ejemplo, la marca --use_legacy_sql=false le permite usar la sintaxis de GoogleSQL.

    bq query \
        --batch \
        --use_legacy_sql=false \
        'QUERY'

    Sustituye QUERY por una consulta de GoogleSQL válida. Por ejemplo, consulta el conjunto de datos público de BigQuery usa_names para determinar los nombres más comunes en Estados Unidos entre 1910 y 2013:

    bq query \
        --batch \
        --use_legacy_sql=false \
        'SELECT
          name, gender,
          SUM(number) AS total
        FROM
          `bigquery-public-data.usa_names.usa_1910_2013`
        GROUP BY
          name, gender
        ORDER BY
          total DESC
        LIMIT
          10;'
    

    La tarea de consulta escribe el resultado en una tabla temporal (caché).

    También puede especificar la tabla de destino y la ubicación de los resultados de la consulta. Para escribir los resultados en una tabla, incluye la marca adecuada para añadir (--append_table=true) o sobrescribir (--replace=true) la tabla.

    bq query \
        --batch \
        --location=LOCATION \
        --destination_table=TABLE \
        --use_legacy_sql=false \
        'QUERY'

    Haz los cambios siguientes:

    • LOCATION: la región o multirregión de la tabla de destino. Por ejemplo, US.

      En este ejemplo, el conjunto de datos usa_names se almacena en la ubicación multirregional de EE. UU. Si especificas una tabla de destino para esta consulta, el conjunto de datos que contenga la tabla de destino también debe estar en la multirregión de EE. UU. No puedes consultar un conjunto de datos de una ubicación y escribir los resultados en una tabla de otra ubicación.

      Puedes definir un valor predeterminado para la ubicación mediante el archivo.bigqueryrc.

    • TABLE: un nombre para la tabla de destino (por ejemplo,) myDataset.myTable

      Si la tabla de destino es nueva, BigQuery la crea cuando ejecutas la consulta. Sin embargo, debes especificar un conjunto de datos.

      Si la tabla no está en tu proyecto actual, añade el ID del proyecto con el formatoGoogle Cloud PROJECT_ID:DATASET.TABLE (por ejemplo, myProject:myDataset.myTable). Si no se especifica --destination_table, se genera una tarea de consulta que escribe el resultado en una tabla temporal.

  3. API

    Para ejecutar una consulta mediante la API, inserta un nuevo trabajo y rellena la propiedad de configuración del trabajo query. También puedes especificar tu ubicación en la propiedad location de la sección jobReference del recurso Job.

    Cuando rellenes las propiedades de la tarea de consulta, incluye la propiedad configuration.query.priority y asigna el valor BATCH.

    Consulta los resultados llamando al getQueryResults. Encuesta hasta jobComplete es igual a true. Comprueba si hay errores y advertencias en la lista errors.

    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"
    	"time"
    
    	"cloud.google.com/go/bigquery"
    )
    
    // queryBatch demonstrates issuing a query job using batch priority.
    func queryBatch(w io.Writer, projectID, dstDatasetID, dstTableID string) error {
    	// projectID := "my-project-id"
    	// dstDatasetID := "mydataset"
    	// dstTableID := "mytable"
    	ctx := context.Background()
    	client, err := bigquery.NewClient(ctx, projectID)
    	if err != nil {
    		return fmt.Errorf("bigquery.NewClient: %v", err)
    	}
    	defer client.Close()
    
    	// Build an aggregate table.
    	q := client.Query(`
    		SELECT
      			corpus,
      			SUM(word_count) as total_words,
      			COUNT(1) as unique_words
    		FROM ` + "`bigquery-public-data.samples.shakespeare`" + `
    		GROUP BY corpus;`)
    	q.Priority = bigquery.BatchPriority
    	q.QueryConfig.Dst = client.Dataset(dstDatasetID).Table(dstTableID)
    
    	// Start the job.
    	job, err := q.Run(ctx)
    	if err != nil {
    		return err
    	}
    	// Job is started and will progress without interaction.
    	// To simulate other work being done, sleep a few seconds.
    	time.Sleep(5 * time.Second)
    	status, err := job.Status(ctx)
    	if err != nil {
    		return err
    	}
    
    	state := "Unknown"
    	switch status.State {
    	case bigquery.Pending:
    		state = "Pending"
    	case bigquery.Running:
    		state = "Running"
    	case bigquery.Done:
    		state = "Done"
    	}
    	// You can continue to monitor job progress until it reaches
    	// the Done state by polling periodically.  In this example,
    	// we print the latest status.
    	fmt.Fprintf(w, "Job %s in Location %s currently in state: %s\n", job.ID(), job.Location(), state)
    
    	return nil
    
    }
    

    Java

    Para ejecutar una consulta por lotes, define la prioridad de la consulta como QueryJobConfiguration.Priority.BATCH al crear una QueryJobConfiguration.

    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.QueryJobConfiguration;
    import com.google.cloud.bigquery.TableResult;
    
    // Sample to query batch in a table
    public class QueryBatch {
    
      public static void runQueryBatch() {
        // TODO(developer): Replace these variables before running the sample.
        String projectId = "MY_PROJECT_ID";
        String datasetName = "MY_DATASET_NAME";
        String tableName = "MY_TABLE_NAME";
        String query =
            "SELECT corpus"
                + " FROM `"
                + projectId
                + "."
                + datasetName
                + "."
                + tableName
                + " GROUP BY corpus;";
        queryBatch(query);
      }
    
      public static void queryBatch(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();
    
          QueryJobConfiguration queryConfig =
              QueryJobConfiguration.newBuilder(query)
                  // Run at batch priority, which won't count toward concurrent rate limit.
                  .setPriority(QueryJobConfiguration.Priority.BATCH)
                  .build();
    
          TableResult results = bigquery.query(queryConfig);
    
          results
              .iterateAll()
              .forEach(row -> row.forEach(val -> System.out.printf("%s,", val.toString())));
    
          System.out.println("Query batch performed successfully.");
        } catch (BigQueryException | InterruptedException e) {
          System.out.println("Query batch not performed \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 and create a client
    const {BigQuery} = require('@google-cloud/bigquery');
    const bigquery = new BigQuery();
    
    async function queryBatch() {
      // Runs a query at batch priority.
    
      // Create query job configuration. For all options, see
      // https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfigurationquery
      const queryJobConfig = {
        query: `SELECT corpus
                FROM \`bigquery-public-data.samples.shakespeare\` 
                LIMIT 10`,
        useLegacySql: false,
        priority: 'BATCH',
      };
    
      // Create job configuration. For all options, see
      // https://cloud.google.com/bigquery/docs/reference/rest/v2/Job#jobconfiguration
      const jobConfig = {
        // Specify a job configuration to set optional job resource properties.
        configuration: {
          query: queryJobConfig,
        },
      };
    
      // Make API request.
      const [job] = await bigquery.createJob(jobConfig);
    
      const jobId = job.metadata.id;
      const state = job.metadata.status.state;
      console.log(`Job ${jobId} is currently in state ${state}`);
    }

    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
    
    # Construct a BigQuery client object.
    client = bigquery.Client()
    
    job_config = bigquery.QueryJobConfig(
        # Run at batch priority, which won't count toward concurrent rate limit.
        priority=bigquery.QueryPriority.BATCH
    )
    
    sql = """
        SELECT corpus
        FROM `bigquery-public-data.samples.shakespeare`
        GROUP BY corpus;
    """
    
    # Start the query, passing in the extra configuration.
    query_job = client.query(sql, job_config=job_config)  # Make an API request.
    
    # Check on the progress by getting the job's updated state. Once the state
    # is `DONE`, the results are ready.
    query_job = client.get_job(
        query_job.job_id, location=query_job.location
    )  # Make an API request.
    
    print("Job {} is currently in state {}".format(query_job.job_id, query_job.state))

Ejecutar una consulta continua

Para ejecutar un trabajo de consulta continua, se necesita una configuración adicional. Para obtener más información, consulta el artículo Crear consultas continuas.

Usar el panel Referencia

En el editor de consultas, el panel Referencia muestra de forma dinámica información contextual sobre tablas, copias de seguridad, vistas y vistas materializadas. El panel te permite ver una vista previa de los detalles del esquema de estos recursos o abrirlos en una pestaña nueva. También puedes usar el panel Referencia para crear consultas o editar las que ya tengas insertando fragmentos de consulta o nombres de campos.

Para crear una consulta con el panel Referencia, sigue estos pasos:

  1. En la Google Cloud consola, ve a la página BigQuery.

    Ir a BigQuery

  2. Haz clic en Consulta de SQL.

  3. Haz clic en quick_reference_all Referencia.

  4. Haz clic en una tabla o vista reciente o destacada. También puedes usar la barra de búsqueda para encontrar tablas y vistas.

  5. Haz clic en Ver acciones y, a continuación, en Insertar fragmento de consulta.

    Panel de referencia en el editor de consultas

  6. Opcional: Puedes obtener una vista previa de los detalles del esquema de la tabla o la vista, o bien abrirlos en una pestaña nueva.

  7. Ahora puedes editar la consulta manualmente o insertar nombres de campo directamente en ella. Para insertar un nombre de campo, coloca el cursor en el editor de consultas donde quieras insertarlo y haz clic en el nombre de campo del panel Referencia.

Configuración de consultas

Cuando ejecutas una consulta, puedes especificar los siguientes ajustes:

Modo de creación de tareas opcional

El modo de creación de trabajos opcional puede mejorar la latencia general de las consultas que se ejecutan durante un breve periodo, como las de los paneles de control o las cargas de trabajo de exploración de datos. Este modo ejecuta la consulta y devuelve los resultados insertados para las instrucciones SELECT sin necesidad de usar jobs.getQueryResults para obtener los resultados. Las consultas que usan el modo de creación de trabajos opcional no crean un trabajo cuando se ejecutan, a menos que BigQuery determine que es necesario crear un trabajo para completar la consulta.

Para habilitar el modo de creación de tareas opcional, asigna el valor JOB_CREATION_OPTIONAL al campo jobCreationMode de la instancia QueryRequest en el cuerpo de la solicitud jobs.query.

Si el valor de este campo es JOB_CREATION_OPTIONAL, BigQuery determina si la consulta puede usar el modo de creación de trabajos opcional. Si es así, BigQuery ejecuta la consulta y devuelve todos los resultados en el campo rows de la respuesta. Como no se crea ningún trabajo para esta consulta, BigQuery no devuelve ningún jobReference en el cuerpo de la respuesta. En su lugar, devuelve un campo queryId que puedes usar para obtener estadísticas sobre la consulta mediante la INFORMATION_SCHEMA.JOBSvista. Como no se ha creado ningún trabajo, no hay ningún jobReference que se pueda transferir a las APIs jobs.get y jobs.getQueryResults para buscar estas consultas.

Si BigQuery determina que se necesita una tarea para completar la consulta, se devuelve un jobReference. Puedes inspeccionar el campo job_creation_reason en la vista INFORMATION_SCHEMA.JOBSpara determinar el motivo por el que se ha creado una tarea para la consulta. En este caso, debes usar jobs.getQueryResults para obtener los resultados cuando se complete la consulta.

Si usa el valor JOB_CREATION_OPTIONAL, es posible que el campo jobReference no esté presente en la respuesta. Comprueba si el campo existe antes de acceder a él.

Cuando se especifica JOB_CREATION_OPTIONAL en consultas de varias instrucciones (secuencias de comandos), BigQuery puede optimizar el proceso de ejecución. Como parte de esta optimización, BigQuery puede determinar que puede completar la secuencia de comandos creando menos recursos de tareas que el número de instrucciones individuales, e incluso puede ejecutar toda la secuencia de comandos sin crear ninguna tarea. Esta optimización depende de la evaluación que haga BigQuery de la secuencia de comandos, por lo que puede que no se aplique en todos los casos. El sistema automatiza por completo la optimización. No se requieren controles ni acciones por parte del usuario.

Para ejecutar una consulta con el modo de creación de trabajo opcional, selecciona una de las siguientes opciones:

Consola

  1. Ve a la página BigQuery.

    Ir a BigQuery

  2. Haz clic en Consulta de SQL.

  3. En el editor de consultas, introduce una consulta de GoogleSQL válida.

    Por ejemplo, consulta el conjunto de datos público de BigQuery usa_names para determinar los nombres más comunes en Estados Unidos entre los años 1910 y 2013:

    SELECT
      name, gender,
      SUM(number) AS total
    FROM
      `bigquery-public-data.usa_names.usa_1910_2013`
    GROUP BY
      name, gender
    ORDER BY
      total DESC
    LIMIT
      10;
    
  4. Haz clic en Más y, a continuación, elige el modo de consulta Creación de tareas opcional. Para confirmar esta opción, haz clic en Confirmar.

  5. Haz clic en Ejecutar.

bq

  1. In the Google Cloud console, activate Cloud Shell.

    Activate Cloud Shell

    At the bottom of the Google Cloud console, a Cloud Shell session starts and displays a command-line prompt. Cloud Shell is a shell environment with the Google Cloud CLI already installed and with values already set for your current project. It can take a few seconds for the session to initialize.

  2. Usa el comando bq query y especifica la marca --job_creation_mode=JOB_CREATION_OPTIONAL. En el siguiente ejemplo, la marca --use_legacy_sql=false le permite usar la sintaxis de GoogleSQL.

    bq query \
        --rpc=true \
        --use_legacy_sql=false \
        --job_creation_mode=JOB_CREATION_OPTIONAL \
        --location=LOCATION \
        'QUERY'

    Sustituye QUERY por una consulta de GoogleSQL válida y LOCATION por una región válida en la que se encuentre el conjunto de datos. Por ejemplo, consulta el conjunto de datos público de BigQuery usa_names para determinar los nombres más comunes en Estados Unidos entre 1910 y 2013:

    bq query \
        --rpc=true \
        --use_legacy_sql=false \
        --job_creation_mode=JOB_CREATION_OPTIONAL \
        --location=us \
        'SELECT
          name, gender,
          SUM(number) AS total
        FROM
          `bigquery-public-data.usa_names.usa_1910_2013`
        GROUP BY
          name, gender
        ORDER BY
          total DESC
        LIMIT
          10;'
    

    El trabajo de consulta devuelve la salida insertada en la respuesta.

  3. API

    Para ejecutar una consulta en el modo de creación de tareas opcional mediante la API, ejecuta una consulta de forma síncrona y rellena la propiedad QueryRequest. Incluye la propiedad jobCreationMode y asigna el valor JOB_CREATION_OPTIONAL.

    Comprueba la respuesta. Si jobComplete es igual a true y jobReference está vacío, consulta los resultados del campo rows. También puedes obtener el queryId de la respuesta.

    Si jobReference está presente, puedes consultar jobCreationReason para saber por qué BigQuery ha creado un trabajo. Consulta los resultados llamando al getQueryResults. Encuesta hasta jobComplete es igual a true. Comprueba si hay errores y advertencias en la lista errors.

    Java

    Versión disponible: 2.51.0 y posteriores

    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.JobId;
    import com.google.cloud.bigquery.QueryJobConfiguration;
    import com.google.cloud.bigquery.QueryJobConfiguration.JobCreationMode;
    import com.google.cloud.bigquery.TableResult;
    
    // Sample demonstrating short mode query execution.
    //
    // This feature is controlled by setting the defaultJobCreationMode
    // field in the BigQueryOptions used for the client. JOB_CREATION_OPTIONAL
    // allows for the execution of queries without creating a job.
    public class QueryJobOptional {
    
      public static void main(String[] args) {
        String query =
            "SELECT name, gender, SUM(number) AS total FROM "
                + "bigquery-public-data.usa_names.usa_1910_2013 GROUP BY "
                + "name, gender ORDER BY total DESC LIMIT 10";
        queryJobOptional(query);
      }
    
      public static void queryJobOptional(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.
          BigQueryOptions options = BigQueryOptions.getDefaultInstance();
          options.setDefaultJobCreationMode(JobCreationMode.JOB_CREATION_OPTIONAL);
          BigQuery bigquery = options.getService();
    
          // Execute the query. The returned TableResult provides access information
          // about the query execution as well as query results.
          TableResult results = bigquery.query(QueryJobConfiguration.of(query));
    
          JobId jobId = results.getJobId();
          if (jobId != null) {
            System.out.println("Query was run with job state.  Job ID: " + jobId.toString());
          } else {
            System.out.println("Query was run in short mode.  Query ID: " + results.getQueryId());
          }
    
          // Print the results.
          results
              .iterateAll()
              .forEach(
                  row -> {
                    System.out.print("name:" + row.get("name").getStringValue());
                    System.out.print(", gender: " + row.get("gender").getStringValue());
                    System.out.print(", total: " + row.get("total").getLongValue());
                    System.out.println();
                  });
    
        } catch (BigQueryException | InterruptedException e) {
          System.out.println("Query not performed \n" + e.toString());
        }
      }
    }

    Para ejecutar una consulta con un proxy, consulta Configurar un proxy.

    Python

    Versión disponible: 3.34.0 y posteriores

    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.

    # This example demonstrates executing a query without requiring an associated
    # job.
    from google.cloud import bigquery
    from google.cloud.bigquery.enums import JobCreationMode
    
    # Construct a BigQuery client object, specifying that the library should
    # avoid creating jobs when possible.
    client = bigquery.Client(
        default_job_creation_mode=JobCreationMode.JOB_CREATION_OPTIONAL
    )
    
    query = """
        SELECT
            name,
            gender,
            SUM(number) AS total
        FROM
            bigquery-public-data.usa_names.usa_1910_2013
        GROUP BY
            name, gender
        ORDER BY
            total DESC
        LIMIT 10
    """
    # Run the query.  The returned `rows` iterator can return information about
    # how the query was executed as well as the result data.
    rows = client.query_and_wait(query)
    
    if rows.job_id is not None:
        print("Query was run with job state.  Job ID: {}".format(rows.job_id))
    else:
        print(
            "Query was run without creating a job.  Query ID: {}".format(rows.query_id)
        )
    
    print("The query data:")
    for row in rows:
        # Row values can be accessed by field name or index.
        print("name={}, gender={}, total={}".format(row[0], row[1], row["total"]))

    Node

    Versión disponible: 8.1.0 y versiones posteriores

    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.

    // Demonstrates issuing a query that may be run in short query mode.
    
    // Import the Google Cloud client library
    const {BigQuery} = require('@google-cloud/bigquery');
    const bigquery = new BigQuery({
      // default behavior is to create jobs when using the jobs.query API
      defaultJobCreationMode: 'JOB_CREATION_REQUIRED',
    });
    
    async function queryJobOptional() {
      // SQL query to run.
    
      const sqlQuery = `
        SELECT name, gender, SUM(number) AS total
        FROM bigquery-public-data.usa_names.usa_1910_2013
        GROUP BY name, gender
        ORDER BY total DESC
        LIMIT 10`;
    
      // Run the query
      const [rows, , res] = await bigquery.query({
        query: sqlQuery,
        // Skip job creation to enable short mode.
        jobCreationMode: 'JOB_CREATION_OPTIONAL',
      });
    
      if (!res.jobReference) {
        console.log(`Query was run in short mode. Query ID: ${res.queryId}`);
      } else {
        const jobRef = res.jobReference;
        const qualifiedId = `${jobRef.projectId}.${jobRef.location}.${jobRef.jobId}`;
        console.log(
          `Query was run with job state. Job ID: ${qualifiedId}, Query ID: ${res.queryId}`,
        );
      }
      // Print the results
      console.log('Rows:');
      rows.forEach(row => console.log(row));
    }

    Go

    Versión disponible: 1.69.0 y versiones posteriores

    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"
    )
    
    // queryJobOptional demonstrates issuing a query that doesn't require a
    // corresponding job.
    func queryJobOptional(w io.Writer, projectID string) error {
    	// projectID := "my-project-id"
    	ctx := context.Background()
    	client, err := bigquery.NewClient(ctx, projectID,
    		bigquery.WithDefaultJobCreationMode(bigquery.JobCreationModeOptional),
    	)
    	if err != nil {
    		return fmt.Errorf("bigquery.NewClient: %w", err)
    	}
    	defer client.Close()
    
    	q := client.Query(`
    		SELECT
      			name, gender,
      			SUM(number) AS total
    		FROM
    			bigquery-public-data.usa_names.usa_1910_2013
    		GROUP BY 
    			name, gender
    		ORDER BY
    			total DESC
    		LIMIT 10
    		`)
    	// Run the query and process the returned row iterator.
    	it, err := q.Read(ctx)
    	if err != nil {
    		return fmt.Errorf("query.Read(): %w", err)
    	}
    
    	// The iterator provides information about the query execution.
    	// Queries that were run in short query mode will not have the source job
    	// populated.
    	if it.SourceJob() == nil {
    		fmt.Fprintf(w, "Query was run in optional job mode.  Query ID: %q\n", it.QueryID())
    	} else {
    		j := it.SourceJob()
    		qualifiedJobID := fmt.Sprintf("%s:%s.%s", j.ProjectID(), j.Location(), j.ID())
    		fmt.Fprintf(w, "Query was run with job state.  Job ID: %q, Query ID: %q\n",
    			qualifiedJobID, it.QueryID())
    	}
    
    	// Print row data.
    	for {
    		var row []bigquery.Value
    		err := it.Next(&row)
    		if err == iterator.Done {
    			break
    		}
    		if err != nil {
    			return err
    		}
    		fmt.Fprintln(w, row)
    	}
    	return nil
    }
    

    Controlador JDBC

    Versión disponible: JDBC v1.6.1 y versiones posteriores

    Requiere definir JobCreationMode=2 en la cadena de conexión.

        jdbc:bigquery://https://www.googleapis.com/bigquery/v2:443;JobCreationMode=2;Location=US;
      

    Controlador ODBC

    Versión disponible: ODBC 3.0.7.1016 y versiones posteriores

    Requiere definir JobCreationMode=2 en el archivo .ini.

        [ODBC Data Sources]
        Sample DSN=Simba Google BigQuery ODBC Connector 64-bit
        [Sample DSN]
        JobCreationMode=2
      

Cuotas

Para obtener información sobre las cuotas de las consultas interactivas y por lotes, consulta Tareas de consulta.

Monitorizar consultas

Puedes obtener información sobre las consultas mientras se ejecutan mediante el explorador de trabajos o consultando la vista INFORMATION_SCHEMA.JOBS_BY_PROJECT.

Ejecución de prueba

Una prueba en BigQuery proporciona la siguiente información:

Las pruebas no usan ranuras de consulta y no se te cobra por realizarlas. Puedes usar la estimación devuelta por una prueba para calcular los costes de las consultas en la calculadora de precios.

Realizar una prueba de funcionamiento

Para hacer una prueba de funcionamiento, sigue estos pasos:

Consola

  1. Ve a la página de BigQuery.

    Ir a BigQuery

  2. Escribe tu consulta en el editor de consultas.

    Si la consulta es válida, aparecerá automáticamente una marca de verificación junto con la cantidad de datos que procesará la consulta. Si la consulta no es válida, aparecerá un signo de exclamación junto con un mensaje de error.

bq

Introduce una consulta como la siguiente con la marca --dry_run.

bq query \
--use_legacy_sql=false \
--dry_run \
'SELECT
   COUNTRY,
   AIRPORT,
   IATA
 FROM
   `project_id`.dataset.airports
 LIMIT
   1000'
 

Si la consulta es válida, el comando genera la siguiente respuesta:

Query successfully validated. Assuming the tables are not modified,
running this query will process 10918 bytes of data.

API

Para hacer una prueba con la API, envía una tarea de consulta con el valor true en el campo dryRun del tipo JobConfiguration.

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"
)

// queryDryRun demonstrates issuing a dry run query to validate query structure and
// provide an estimate of the bytes scanned.
func queryDryRun(w io.Writer, projectID string) error {
	// projectID := "my-project-id"
	ctx := context.Background()
	client, err := bigquery.NewClient(ctx, projectID)
	if err != nil {
		return fmt.Errorf("bigquery.NewClient: %v", err)
	}
	defer client.Close()

	q := client.Query(`
	SELECT
		name,
		COUNT(*) as name_count
	FROM ` + "`bigquery-public-data.usa_names.usa_1910_2013`" + `
	WHERE state = 'WA'
	GROUP BY name`)
	q.DryRun = true
	// Location must match that of the dataset(s) referenced in the query.
	q.Location = "US"

	job, err := q.Run(ctx)
	if err != nil {
		return err
	}
	// Dry run is not asynchronous, so get the latest status and statistics.
	status := job.LastStatus()
	if err := status.Err(); err != nil {
		return err
	}
	fmt.Fprintf(w, "This query will process %d bytes\n", status.Statistics.TotalBytesProcessed)
	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.JobInfo;
import com.google.cloud.bigquery.JobStatistics;
import com.google.cloud.bigquery.QueryJobConfiguration;

// Sample to run dry query on the table
public class QueryDryRun {

  public static void runQueryDryRun() {
    String query =
        "SELECT name, COUNT(*) as name_count "
            + "FROM `bigquery-public-data.usa_names.usa_1910_2013` "
            + "WHERE state = 'WA' "
            + "GROUP BY name";
    queryDryRun(query);
  }

  public static void queryDryRun(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();

      QueryJobConfiguration queryConfig =
          QueryJobConfiguration.newBuilder(query).setDryRun(true).setUseQueryCache(false).build();

      Job job = bigquery.create(JobInfo.of(queryConfig));
      JobStatistics.QueryStatistics statistics = job.getStatistics();

      System.out.println(
          "Query dry run performed successfully." + statistics.getTotalBytesProcessed());
    } catch (BigQueryException e) {
      System.out.println("Query not performed \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 queryDryRun() {
  // Runs a dry query of the U.S. given names dataset for the state of Texas.

  const query = `SELECT name
    FROM \`bigquery-public-data.usa_names.usa_1910_2013\`
    WHERE state = 'TX'
    LIMIT 100`;

  // For all options, see https://cloud.google.com/bigquery/docs/reference/rest/v2/jobs/query
  const options = {
    query: query,
    // Location must match that of the dataset(s) referenced in the query.
    location: 'US',
    dryRun: true,
  };

  // Run the query as a job
  const [job] = await bigquery.createQueryJob(options);

  // Print the status and statistics
  console.log('Status:');
  console.log(job.metadata.status);
  console.log('\nJob Statistics:');
  console.log(job.metadata.statistics);
}

PHP

Antes de probar este ejemplo, sigue las PHPinstrucciones 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 PHP 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.

use Google\Cloud\BigQuery\BigQueryClient;

/** Uncomment and populate these variables in your code */
// $projectId = 'The Google project ID';
// $query = 'SELECT id, view_count FROM `bigquery-public-data.stackoverflow.posts_questions`';

// Construct a BigQuery client object.
$bigQuery = new BigQueryClient([
    'projectId' => $projectId,
]);

// Set job configs
$jobConfig = $bigQuery->query($query);
$jobConfig->useQueryCache(false);
$jobConfig->dryRun(true);

// Extract query results
$queryJob = $bigQuery->startJob($jobConfig);
$info = $queryJob->info();

printf('This query will process %s bytes' . PHP_EOL, $info['statistics']['totalBytesProcessed']);

Python

Asigna el valor True a la propiedad QueryJobConfig.dry_run. Client.query() siempre devuelve un QueryJob completado cuando se proporciona una configuración de consulta de prueba.

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

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

job_config = bigquery.QueryJobConfig(dry_run=True, use_query_cache=False)

# Start the query, passing in the extra configuration.
query_job = client.query(
    (
        "SELECT name, COUNT(*) as name_count "
        "FROM `bigquery-public-data.usa_names.usa_1910_2013` "
        "WHERE state = 'WA' "
        "GROUP BY name"
    ),
    job_config=job_config,
)  # Make an API request.

# A dry run query completes immediately.
print("This query will process {} bytes.".format(query_job.total_bytes_processed))

Siguientes pasos