Realiza una ejecución de prueba de una consulta

Cuando ejecutas una consulta en la CLI, puedes usar la marca --dry_run para estimar la cantidad de bytes que lee la consulta. También puedes usar el parámetro dryRun cuando envías un trabajo de consulta mediante la API o las bibliotecas cliente.

Puedes usar la estimación que muestra la ejecución de prueba para calcular los costos de consulta en la calculadora de precios. No se te cobrará por realizar la ejecución de prueba.

Permisos necesarios

Como mínimo, para ejecutar un trabajo de consulta, debes tener los permisos bigquery.jobs.create. Para que el trabajo de consulta se complete con éxito, también debes tener acceso a los conjuntos de datos que contienen las tablas o vistas a las que hace referencia la consulta. Si deseas obtener más información sobre los controles de acceso a conjuntos de datos, consulta la sección sobre Cómo controlar el acceso a los conjuntos de datos.

Las siguientes funciones de Cloud IAM predefinidas incluyen los permisos bigquery.jobs.create:

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

Además, si un usuario tiene permisos bigquery.datasets.create, cuando crea un conjunto de datos, se le otorga el acceso bigquery.dataOwner. El acceso bigquery.dataOwner permite al usuario realizar consultas sobre tablas y vistas en el conjunto de datos.

Para obtener más información sobre las funciones de Cloud IAM en BigQuery, consulta la sección sobre Control de acceso.

Realiza ejecuciones de prueba

Puedes realizar una ejecución de prueba para un trabajo de consulta mediante las siguientes opciones:

  • La marca --dry_run con el comando query en la CLI
  • El parámetro dryRun en la configuración de trabajo cuando usas la API o las bibliotecas cliente

Realiza una ejecución de prueba

Para realizar una ejecución de prueba, haz lo siguiente:

Console

En la actualidad, no puedes realizar una ejecución de prueba con GCP Console.

IU clásica

En la actualidad, no puedes realizar una ejecución de prueba con la IU web.

CLI

Ingresa 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'
 

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 realizar una ejecución de prueba con la API, envía un trabajo de consulta con dryRun establecido en true en la configuración de trabajo.

Go

Antes de probar este ejemplo, sigue las instrucciones de configuración de Go incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la Documentación de referencia de la API de Go de BigQuery.

// To run this sample, you will need to create (or reuse) a context and
// an instance of the bigquery client.  For example:
// import "cloud.google.com/go/bigquery"
// ctx := context.Background()
// client, err := bigquery.NewClient(ctx, "your-project-id")
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 != nil {
	return err
}
fmt.Printf("This query will process %d bytes\n", status.Statistics.TotalBytesProcessed)

Python

Para realizar una ejecución de prueba con la biblioteca cliente de Python, configura la propiedad QueryJobConfig.dry_run como True. Client.query() siempre muestra un QueryJob completado cuando se proporciona una configuración de consulta de ejecución de prueba.

Antes de probar este ejemplo, sigue las instrucciones de configuración de Python incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. A fin de obtener más información, consulta la Documentación de referencia de la API de Python de BigQuery.

# from google.cloud import bigquery
# client = bigquery.Client()

job_config = bigquery.QueryJobConfig()
job_config.dry_run = True
job_config.use_query_cache = False
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"
    ),
    # Location must match that of the dataset(s) referenced in the query.
    location="US",
    job_config=job_config,
)  # API request

# A dry run query completes immediately.
assert query_job.state == "DONE"
assert query_job.dry_run

print("This query will process {} bytes.".format(query_job.total_bytes_processed))
¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

Si necesitas ayuda, visita nuestra página de asistencia.