En este documento se explica cómo escribir o guardar resultados de consultas.
Tablas temporales y permanentes
BigQuery guarda todos los resultados de las consultas en una tabla, que puede ser permanente o temporal.
Las tablas temporales son tablas con nombres aleatorios que se guardan en conjuntos de datos especiales. Se usan para almacenar en caché los resultados de las consultas. Las tablas temporales tiene un ciclo de vida aproximado de 24 horas. Este tipo de tablas no se pueden compartir ni son visibles si se usa alguno de los métodos de generación de listas estándar o bien otros métodos de manipulación de tablas. No se te cobrará por almacenar tablas temporales.
Las tablas permanentes pueden ser tablas nuevas o existentes en cualquier conjunto de datos al que tengas acceso. Si escribes los resultados de las consultas en una tabla nueva, se te cobrará por almacenar los datos. Cuando escribes los resultados de las consultas en una tabla permanente, las tablas que consultas deben estar en la misma ubicación que el conjunto de datos que contiene la tabla de destino.
Permisos necesarios
Como mínimo, para escribir los resultados de las consultas en una tabla, debes tener los siguientes permisos:
bigquery.tables.create
para crear una tabla nuevabigquery.tables.updateData
para escribir datos en una tabla nueva, reemplazar una tabla o agregar datos a una tablabigquery.jobs.create
para ejecutar un trabajo de consulta
Es posible que se requieran permisos adicionales como bigquery.tables.getData
para acceder a los datos que consultas.
Las siguientes funciones de Cloud IAM predefinidas incluyen los permisos bigquery.tables.create
y bigquery.tables.updateData
:
bigquery.dataEditor
bigquery.dataOwner
bigquery.admin
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 cree un conjunto de datos, se le otorgará el permiso bigquery.dataOwner
para acceder a este.
El acceso bigquery.dataOwner
permite al usuario crear y actualizar tablas en el conjunto de datos.
Para obtener más información sobre las funciones de Cloud IAM y los permisos en BigQuery, consulta Funciones y permisos predefinidos.
Escribir los resultados de las consultas en una tabla permanente
Cuando escribes los resultados de las consultas en una tabla permanente, puedes crear una tabla nueva, agregar los resultados en una tabla existente o reemplazar una tabla existente. Puedes escribir los resultados de las consultas en una tabla permanente a través de alguna de las alternativas siguientes:
- Mediante la GCP Console o la IU web clásica de BigQuery
- Mediante el comando
bq query
de la herramienta de línea de comandos - Mediante una llamada al método de la API
jobs.insert
y la configuración de un trabajo dequery
- Mediante las bibliotecas cliente
Escribe resultados de consultas
Para escribir resultados de consultas en una tabla permanente, sigue estos pasos:
Console
Abre la IU web de BigQuery en GCP Console.
En el panel de navegación, en la sección Recursos, expande tu proyecto y selecciona un conjunto de datos.
Si el editor de consultas está oculto, haz clic en Mostrar editor, en la parte superior derecha de la ventana.
Ingresa una consulta de SQL válida en el área de texto del Editor de consultas.
Haz clic en Más debajo del editor y selecciona Configuración de consulta
Marca la casilla Establecer una tabla de destino para los resultados de la consulta.
En la sección Destino, selecciona el Nombre del proyecto y el Nombre del conjunto de datos adecuados donde se creará la tabla, y elige un Nombre de tabla.
En la sección Preferencia de escritura para la tabla de destino, elige una de las siguientes opciones:
- Escribir si está vacía: escribe los resultados de las consultas en la tabla solo si está vacía.
- Agregar a la tabla: agrega los resultados de las consultas a una tabla existente.
- Reemplazar la tabla: reemplaza una tabla existente que tiene el mismo nombre con los resultados de las consultas.
En Ubicación de procesamiento, haz clic en Selección automática y elige la ubicación (opcional).
Haz clic en Ejecutar consulta. Esta acción crea un trabajo de consulta que escribe los resultados de las consultas en la tabla que especificaste.
Como alternativa, si te olvidas de especificar una tabla de destino antes de ejecutar tu consulta, puedes hacer clic en el botón Guardar resultados debajo del editor para copiar la tabla de resultados almacenados en caché en una permanente.
DDL
Las instrucciones del lenguaje de definición de datos (DDL) te permiten crear y modificar tablas con la sintaxis de consultas de SQLestándar.
Para obtener más información, consulta la página instrucción CREATE TABLE
y el ejemplo CREATE TABLE
: Crear una tabla nueva a partir de una tabla existente.
IU clásica
Ve a la IU web clásica de BigQuery.
Ir a la IU web clásica de BigQueryHaz clic en el botón Redactar consulta.
Ingresa una consulta de SQL válida en el área de texto Consulta nueva.
Haz clic en Mostrar opciones.
En la sección Tabla de destino, haz clic en Seleccionar tabla.
En el cuadro de diálogo Seleccionar tabla de destino, haz lo siguiente:
En Proyecto, elige un proyecto para almacenar el conjunto de datos y la tabla.
En el Conjunto de datos, elige el conjunto de datos para almacenar la tabla.
En el campo ID de tabla, ingresa un nombre de tabla. El nombre debe ser único en el conjunto de datos de destino. El nombre de la tabla puede tener hasta 1,024 caracteres de la A a la Z (mayúsculas o minúsculas), números del 0 al 9 o _ (el carácter de guion bajo).
Haz clic en Aceptar.
En la sección Tabla de destino, en Preferencia de escritura, elige una de las siguientes opciones:
- Escribir si está vacía: escribe los resultados de las consultas en la tabla solo si está vacía.
- Agregar a la tabla: agrega los resultados de las consultas a una tabla existente.
- Reemplazar la tabla: reemplaza una tabla existente que tiene el mismo nombre con los resultados de las consultas.
En Ubicación de procesamiento, haz clic en Sin especificar y elige la ubicación de tus datos (opcional).
Haz clic en Ejecutar consulta. Esta acción crea un trabajo de consulta que escribe los resultados de las consultas en la tabla que especificaste.
Como alternativa, si te olvidas de especificar una tabla de destino antes de ejecutar tu consulta, puedes hacer clic en el botón Guardar como tabla en la ventana de resultados para copiar la tabla temporal en una permanente.
CLI
Ingresa el comando bq query
y especifica la marca --destination_table
para crear una tabla permanente basada en los resultados de las consultas. Especifica la marca use_legacy_sql=false
para usar la sintaxis de SQL estándar. Para escribir los resultados de las consultas en una tabla que no se encuentra en tu proyecto predeterminado, agrega el ID del proyecto al nombre del conjunto de datos con el siguiente formato: project_id:dataset
.
Proporciona la marca --location
y configura el valor según tu ubicación (opcional).
Para controlar la disposición de escritura de una tabla de destino existente, especifica una de las siguientes marcas opcionales:
--append_table
: si existe la tabla de destino, los resultados de las consultas se agregan a ella.--replace
: si existe la tabla de destino, se reemplaza por los resultados de las consultas.
bq --location=location query \ --destination_table project_id:dataset.table \ --use_legacy_sql=false 'query'
En el que:
- location es el nombre de la ubicación que se usa para procesar la consulta.
La marca
--location
es opcional. Por ejemplo, si usas BigQuery en la región de Tokio, puedes configurar el valor de la marca comoasia-northeast1
. Puedes configurar un valor predeterminado para la ubicación con el archivo .bigqueryrc. - project_id es el ID del proyecto.
- dataset es el nombre del conjunto de datos que contiene la tabla en la que escribes los resultados de las consultas.
- table es el nombre de la tabla en la que escribes los resultados de las consultas.
- query es una consulta en la sintaxis de SQL estándar.
Si no se especifica una marca de disposición de escritura, el comportamiento predeterminado es escribir los resultados en la tabla solo si está vacía. Si la tabla existe y no está vacía, se muestra el siguiente error: “Error de BigQuery en la operación de consulta: error durante el procesamiento del trabajo project_id:bqjob_123abc456789_00000e1234f_1': Already
Exists: Table project_id:dataset.table
”.
Ejemplos:
Ingresa el siguiente comando para escribir los resultados de las consultas en una tabla de destino llamada mytable
de mydataset
. El conjunto de datos se encuentra en tu proyecto predeterminado.
Debido a que no se especifica ninguna marca de disposición de escritura en el comando, la tabla debe ser nueva o estar vacía. De lo contrario, se muestra un error Already exists
. La consulta recupera datos del conjunto de datos públicos Datos de nombres de EE.UU.
bq query \ --destination_table mydataset.mytable \ --use_legacy_sql=false \ 'SELECT name, number FROM `bigquery-public-data`.usa_names.usa_1910_current WHERE gender = "M" ORDER BY number DESC'
Ingresa el siguiente comando a fin de usar los resultados de las consultas para reemplazar una tabla de destino llamada mytable
de mydataset
. El conjunto de datos se encuentra en tu proyecto predeterminado. El comando usa la marca --replace
para reemplazar la tabla de destino.
bq query \ --destination_table mydataset.mytable \ --replace \ --use_legacy_sql=false \ 'SELECT name, number FROM `bigquery-public-data`.usa_names.usa_1910_current WHERE gender = "M" ORDER BY number DESC'
Ingresa el siguiente comando para agregar los resultados de las consultas a una tabla de destino llamada mytable
de mydataset
. El conjunto de datos se encuentra en my-other-project
, no en tu proyecto predeterminado. El comando usa la marca --append
para agregar los resultados de las consultas a la tabla de destino.
bq query \ --append \ --use_legacy_sql=false \ --destination_table my-other-project:mydataset.mytable \ 'SELECT name, number FROM `bigquery-public-data`.usa_names.usa_1910_current WHERE gender = "M" ORDER BY number DESC'
El resultado de cada uno de estos ejemplos se verá de la siguiente manera. Para facilitar la lectura, algunos resultados se truncaron.
Waiting on bqjob_r123abc456_000001234567_1 ... (2s) Current status: DONE +---------+--------+ | name | number | +---------+--------+ | Robert | 10021 | | John | 9636 | | Robert | 9297 | | ... | +---------+--------+
API
Si quieres guardar los resultados de las consultas en una tabla permanente, llama al método jobs.insert
, configura un trabajo query
y, por último, incluye un valor para la propiedad destinationTable
. A fin de controlar la disposición de escritura de una tabla de destino existente, configura la propiedad writeDisposition
.
Si quieres controlar la ubicación de procesamiento para el trabajo de consulta, especifica la propiedad location
en la sección jobReference
del recurso 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. Para obtener más información, consulta la Documentación de referencia de la API de Go de BigQuery.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. Para obtener más información, consulta la Documentación de referencia de la API de Java de BigQuery.
Para guardar los resultados de las consultas en una tabla permanente, configura la tabla de destino con el TableId que desees en una QueryJobConfiguration.
Python
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. Para obtener más información, consulta la Documentación de referencia de la API de Python de BigQuery.
Para guardar los resultados de las consultas en una tabla permanente, crea una QueryJobConfig y establece el destino con la TableReference que desees. Pasa la configuración del trabajo al método de consulta.
Cómo escribir resultados de consultas grandes
Por lo general, las consultas tienen un tamaño de respuesta máximo. Si planeas ejecutar una consulta que podría mostrar resultados más grandes, puedes hacer lo siguiente:
- En SQL estándar, especifica una tabla de destino para los resultados de las consultas.
- En SQL heredado, especifica una tabla de destino y configura la opción
allowLargeResults
.
Cuando especificas una tabla de destino para los resultados de las consultas grandes, se te cobra por almacenar los datos.
Limitaciones
En SQL heredado, la escritura de resultados grandes está sujeta a las siguientes limitaciones:
- Debes especificar una tabla de destino.
- No puedes especificar una cláusula
ORDER BY
,TOP
niLIMIT
de nivel superior. Si lo haces, se anula el beneficio de usarallowLargeResults
porque el resultado de la consulta ya no se puede procesar en paralelo. - Las funciones analíticas solo pueden mostrar resultados de consultas grandes si se usan con una cláusula
PARTITION BY
.
Escribe resultados grandes con SQL heredado
Para escribir conjuntos de resultados grandes mediante SQL heredado, sigue estos pasos:
Console
Abre la IU web de BigQuery en GCP Console.
Ir a GCP ConsoleHaz clic en Redactar consulta nueva.
Ingresa una consulta de SQL válida en el área de texto del Editor de consultas. Usa el prefijo
#legacySQL
o asegúrate de que la opción Usar SQL heredado esté marcada en la configuración de la consulta.Haz clic en Más (More) y selecciona Configuración de consulta (Query settings).
En Destino (Destination), marca Establecer una tabla de destino para los resultados de la consulta (Set a destination table for query results).
En Nombre del proyecto, elige el proyecto en el que se creará la tabla de destino.
En Nombre del conjunto de datos, elige el conjunto de datos en el que se almacenará la tabla.
En el campo Nombre de la tabla, ingresa un nombre de tabla.
Si escribes un conjunto de resultados grandes en una tabla existente, puedes usar las opciones Preferencia de escritura para la tabla de destino (Destination table write preference) a fin de controlar la disposición de escritura de la tabla de destino:
- Escribir si está vacía (Write if empty): escribe los resultados de las consultas en la tabla solo si está vacía.
- Agregar a la tabla (Append to table): agrega los resultados de las consultas a una tabla existente.
- Reemplazar tabla (Overwrite table): reemplaza una tabla existente que tiene el mismo nombre con los resultados de las consultas.
En Tamaño de los resultados (Results Size), marca Permitir resultados grandes, sin límite de tamaño (Allow Large Results, no size limit).
En Ubicación de procesamiento (Processing Location), haz clic en Selección automática (Auto-select) y elige la ubicación de tus datos (opcional).
Haz clic en Guardar para actualizar la configuración de la consulta.
Haz clic en Ejecutar. Esta acción crea un trabajo de consulta que escribe el conjunto de resultados grandes en la tabla que especificaste.
IU clásica
Ve a la IU web de BigQuery.
Ir a la IU web de BigQueryHaz clic en el botón Redactar consulta.
Ingresa una consulta válida de SQL en BigQuery en el área de texto Consulta nueva. Usa el prefijo
#legacySQL
o asegúrate de que la opción Usar SQL heredado esté marcada en las opciones de la consulta.Haz clic en Mostrar opciones.
En Tabla de destino, haz clic en Seleccionar tabla.
En el cuadro de diálogo Seleccionar tabla de destino, haz lo siguiente:
En Proyecto, elige el proyecto en el que se creará la tabla de destino.
En Conjunto de datos, elige el conjunto de datos que almacenará la tabla.
En el campo ID de tabla, ingresa un nombre de tabla.
Haz clic en Aceptar.
Si escribes un conjunto de resultados grandes en una tabla existente, puedes usar la opción Preferencia de escritura (Write Preference) para controlar la disposición de escritura de la tabla de destino:
- Escribir si está vacía: escribe los resultados de las consultas en la tabla solo si está vacía.
- Agregar a la tabla: agrega los resultados de las consultas a una tabla existente.
- Reemplazar la tabla: reemplaza una tabla existente que tiene el mismo nombre con los resultados de las consultas.
En Tamaño de los resultados (Results Size), marca Permitir resultados grandes (Allow Large Results).
En Ubicación de procesamiento, haz clic en Sin especificar y elige la ubicación de tus datos (opcional).
Haz clic en Ejecutar consulta. Esta acción crea un trabajo de consulta que escribe el conjunto de resultados grandes en la tabla que especificaste.
CLI
Usa la marca --allow_large_results
con la marca --destination_table
para crear una tabla de destino que contenga el conjunto de resultados grandes. Debido a que la opción --
allow_large_results
solo se aplica al SQL heredado, también debes especificar la marca --use_legacy_sql=true
. A fin de escribir los resultados de las consultas en una tabla que no se encuentra en tu proyecto predeterminado, agrega el ID del proyecto al nombre del conjunto de datos con el siguiente formato: [PROJECT_ID]:[DATASET]
. Proporciona la marca --
location
y configura el valor según tu ubicación.
Para controlar la disposición de escritura de una tabla de destino existente, especifica una de las siguientes marcas opcionales:
--append_table
: si existe la tabla de destino, los resultados de las consultas se agregan a ella.--replace
: si existe la tabla de destino, se reemplaza por los resultados de las consultas.
bq --location=location query \ --destination_table project_id:dataset.table \ --use_legacy_sql=true \ --allow_large_results "query"
En el que:
- location es el nombre de la ubicación que se usa para procesar la consulta. La marca
--location
es opcional. Por ejemplo, si usas BigQuery en la región de Tokio, puedes configurar el valor de la marca comoasia-northeast1
. Puedes configurar un valor predeterminado para la ubicación con el archivo .bigqueryrc. - project_id es el ID del proyecto.
- dataset es el nombre del conjunto de datos que contiene la tabla en la que escribes los resultados de las consultas.
- table es el nombre de la tabla en la que escribes los resultados de las consultas.
- query es una consulta en la sintaxis de SQL heredado.
Ejemplos:
Ingresa el siguiente comando para escribir los resultados de las consultas grandes en una tabla de destino llamada mytable
de mydataset
. El conjunto de datos se encuentra en tu proyecto predeterminado. Debido a que no se especifica ninguna marca de disposición de escritura en el comando, la tabla debe ser nueva o estar vacía. De lo contrario, se muestra un error Already exists
. La consulta recupera datos del conjunto de datos públicos Datos de nombres de EE.UU. Esta consulta se usa solo como ejemplo. El conjunto de resultados que se muestra no excede el tamaño de respuesta máximo.
bq query \
--destination_table mydataset.mytable \
--use_legacy_sql=true \
--allow_large_results \
"SELECT
name,
number
FROM
[bigquery-public-data:usa_names.usa_1910_current]
WHERE
gender = 'M'
ORDER BY
number DESC"
Ingresa el siguiente comando a fin de usar los resultados de las consultas grandes para reemplazar una tabla de destino llamada mytable
de mydataset
. El conjunto de datos se encuentra en myotherproject
, no en tu proyecto predeterminado. El comando usa la marca --replace
para reemplazar la tabla de destino.
bq query \
--destination_table mydataset.mytable \
--replace \
--use_legacy_sql=true \
--allow_large_results \
"SELECT
name,
number
FROM
[bigquery-public-data:usa_names.usa_1910_current]
WHERE
gender = 'M'
ORDER BY
number DESC"
Ingresa el siguiente comando para agregar los resultados de las consultas grandes a una tabla de destino llamada mytable
de mydataset
. El conjunto de datos se encuentra en myotherproject
, no en tu proyecto predeterminado. El comando usa la marca --append
para agregar los resultados de las consultas a la tabla de destino.
bq query \
--destination_table myotherproject:mydataset.mytable \
--append \
--use_legacy_sql=true \
--allow_large_results \
"SELECT
name,
number
FROM
[bigquery-public-data:usa_names.usa_1910_current]
WHERE
gender = 'M'
ORDER BY
number DESC"
API
Para escribir resultados grandes en una tabla de destino, llama al método jobs.insert
, configura un trabajo query
y establece la propiedad allowLargeResults
como true
.
Especifica la tabla de destino con la propiedad destinationTable
. A fin de controlar la disposición de escritura de una tabla de destino existente, configura la propiedad writeDisposition
.
Especifica tu ubicación en la propiedad location
, en la sección jobReference
del recurso 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.
Java
Para permitir resultados grandes, configura permitir resultados grandes como true
y establece la tabla de destino con el TableId que desees en una QueryJobConfiguration.
Python
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.
Cómo descargar y guardar los resultados de las consultas
Después de ejecutar una consulta de SQL, puedes descargar los resultados en un archivo en tu máquina local, guardarlos en Google Drive, en Hojas de cálculo de Google o en una tabla permanente en BigQuery.
Limitaciones
Si quieres descargar y guardar los resultados de las consultas, debes tener en cuenta las siguientes limitaciones:
- Solo puedes descargar los resultados de las consultas en un archivo local o en Hojas de cálculo de Google en la IU web clásica de BigQuery. Para descargar los resultados en Google Drive, usa GCP Console.
- Para descargar los resultados de las consultas con la IU web clásica de BigQuery, el conjunto de resultados debe contener menos de 16,000 filas y ocupar 10 MB o menos. Si tus resultados contienen más de 16,000 filas o bien ocupan más de 10 MB, puedes guardarlos en una tabla.
- Solo puedes descargar los resultados de las consultas localmente en formato CSV o JSON delimitado por saltos de línea.
- No puedes descargar resultados de consultas que contengan datos anidados y repetidos en formato CSV.
- No puedes guardar resultados de consultas que contengan datos anidados y repetidos en Hojas de cálculo de Google.
- Cuando guardes los resultados de las consultas en Hojas de cálculo de Google con la IU web clásica de BigQuery, el conjunto de resultados deberá contener menos de 16,000 filas y ocupar 10 MB o menos. Si tus resultados contienen más de 16,000 filas o bien ocupan más de 10 MB, puedes guardarlos en una tabla.
- La herramienta de línea de comandos y la API no admiten el almacenamiento de resultados en un archivo local, en Hojas de cálculo de Google ni en Google Drive.
- Para guardar los resultados de las consultas en Google Drive con GCP Console, el conjunto de resultados debe ocupar 1 GB o menos. Si los resultados ocupan más de 1 GB, puedes guardarlos en una tabla.
- Solo puedes guardar los resultados de las consultas en Google Drive en formato CSV o JSON delimitado por saltos de línea.
Cómo descargar los resultados de las consultas en un archivo local
La herramienta de línea de comandos y la API no admiten la descarga de resultados de consultas en un archivo local.
Para descargar los resultados de las consultas como un archivo CSV o JSON delimitado por saltos de línea con la IU web, sigue estos pasos:
Console
Abre la IU web de BigQuery en GCP Console.
Ir a GCP ConsoleHaz clic en Redactar consulta nueva.
Ingresa una consulta de SQL válida en el área de texto del Editor de consultas.
Para cambiar la ubicación de procesamiento, haz clic en Más y selecciona Configuración de consulta (opcional). Debajo de Ubicación de procesamiento, haz clic en Selección automática y elige la ubicación de tus datos.
Haz clic en Ejecutar.
Cuando se muestren los resultados, haz clic en Guardar resultados y selecciona el formato o la ubicación en los que desees guardarlos.
El archivo se descarga en la ubicación de descarga predeterminada de tu navegador predeterminado.
IU clásica
Ve a la IU web de BigQuery.
Ir a la IU web de BigQueryHaz clic en el botón Redactar consulta.
Ingresa una consulta de SQL válida en el área de texto Consulta nueva.
Haz clic en Mostrar opciones.
En Ubicación de procesamiento, haz clic en Sin especificar y elige la ubicación de tus datos (opcional).
Haz clic en Ejecutar consulta.
Cuando se muestren los resultados, haz clic en el botón Descargar como CSV o Descargar como JSON ubicado arriba de los resultados de la consulta.
El archivo se descarga en la ubicación de descarga predeterminada de tu navegador predeterminado.
Cómo guardar los resultados de las consultas en Google Drive
La herramienta de línea de comandos, la API y la IU web clásica de BigQuery no admiten que los resultados de las consultas se guarden en Google Drive.
Sigue estos pasos para guardar los resultados de las consultas en Google Drive con GCP Console:
Console
Abre la IU web de BigQuery en GCP Console.
Ingresa una consulta de SQL válida en el área de texto del Editor de consultas.
Haz clic en Ejecutar.
Cuando se muestren los resultados, haz clic en Guardar resultados.
Selecciona CSV (Google Drive) o JSON (Google Drive). Cuando guardas los resultados en Google Drive, no puedes elegir la ubicación. Los resultados siempre se guardan en la ubicación raíz “Mi unidad”.
Guardar los resultados en Google Drive puede tardar unos minutos. Cuando se guardan los resultados, recibes un mensaje emergente que incluye el nombre del archivo:
bq-results-[TIMESTAMP]-[RANDOM_CHARACTERS].[CSV or JSON]
.En el mensaje emergente, haz clic en Abrir (Open) para abrir el archivo o navega hasta Google Drive y haz clic en Mi unidad.
Cómo guardar los resultados de las consultas en una tabla
Para guardar los resultados de las consultas como una tabla, sigue estos pasos:
Console
Abre la IU web de BigQuery en GCP Console.
En el panel de navegación, en la sección Recursos, expande tu proyecto y selecciona un conjunto de datos.
Si el editor de consultas está oculto, haz clic en Mostrar editor, en la parte superior derecha de la ventana.
Ingresa una consulta de SQL válida en el área de texto del Editor de consultas.
Haz clic en Más debajo del editor y selecciona Configuración de consulta
Marca la casilla Establecer una tabla de destino para los resultados de la consulta.
En la sección Destino, selecciona el Nombre del proyecto y el Nombre del conjunto de datos adecuados donde se creará la tabla, y elige un Nombre de tabla.
En la sección Preferencia de escritura para la tabla de destino, elige una de las siguientes opciones:
- Escribir si está vacía: escribe los resultados de las consultas en la tabla solo si está vacía.
- Agregar a la tabla: agrega los resultados de las consultas a una tabla existente.
- Reemplazar la tabla: reemplaza una tabla existente que tiene el mismo nombre con los resultados de las consultas.
En Ubicación de procesamiento, haz clic en Selección automática y elige la ubicación (opcional).
Haz clic en Ejecutar consulta. Esta acción crea un trabajo de consulta que escribe los resultados de las consultas en la tabla que especificaste.
Como alternativa, si te olvidas de especificar una tabla de destino antes de ejecutar tu consulta, puedes hacer clic en el botón Guardar resultados debajo del editor para copiar la tabla de resultados almacenados en caché en una permanente.
DDL
Las instrucciones del lenguaje de definición de datos (DDL) te permiten crear y modificar tablas con la sintaxis de consultas de SQLestándar.
Para obtener más información, consulta la página instrucción CREATE TABLE
y el ejemplo CREATE TABLE
: Crear una tabla nueva a partir de una tabla existente.
IU clásica
Ve a la IU web clásica de BigQuery.
Ir a la IU web clásica de BigQueryHaz clic en el botón Redactar consulta.
Ingresa una consulta de SQL válida en el área de texto Consulta nueva.
Haz clic en Mostrar opciones.
En la sección Tabla de destino, haz clic en Seleccionar tabla.
En el cuadro de diálogo Seleccionar tabla de destino, haz lo siguiente:
En Proyecto, elige un proyecto para almacenar el conjunto de datos y la tabla.
En el Conjunto de datos, elige el conjunto de datos para almacenar la tabla.
En el campo ID de tabla, ingresa un nombre de tabla. El nombre debe ser único en el conjunto de datos de destino. El nombre de la tabla puede tener hasta 1,024 caracteres de la A a la Z (mayúsculas o minúsculas), números del 0 al 9 o _ (el carácter de guion bajo).
Haz clic en Aceptar.
En la sección Tabla de destino, en Preferencia de escritura, elige una de las siguientes opciones:
- Escribir si está vacía: escribe los resultados de las consultas en la tabla solo si está vacía.
- Agregar a la tabla: agrega los resultados de las consultas a una tabla existente.
- Reemplazar la tabla: reemplaza una tabla existente que tiene el mismo nombre con los resultados de las consultas.
En Ubicación de procesamiento, haz clic en Sin especificar y elige la ubicación de tus datos (opcional).
Haz clic en Ejecutar consulta. Esta acción crea un trabajo de consulta que escribe los resultados de las consultas en la tabla que especificaste.
Como alternativa, si te olvidas de especificar una tabla de destino antes de ejecutar tu consulta, puedes hacer clic en el botón Guardar como tabla en la ventana de resultados para copiar la tabla temporal en una permanente.
CLI
Ingresa el comando bq query
y especifica la marca --destination_table
para crear una tabla permanente basada en los resultados de las consultas. Especifica la marca use_legacy_sql=false
para usar la sintaxis de SQL estándar. Para escribir los resultados de las consultas en una tabla que no se encuentra en tu proyecto predeterminado, agrega el ID del proyecto al nombre del conjunto de datos con el siguiente formato: project_id:dataset
.
Proporciona la marca --location
y configura el valor según tu ubicación (opcional).
Para controlar la disposición de escritura de una tabla de destino existente, especifica una de las siguientes marcas opcionales:
--append_table
: si existe la tabla de destino, los resultados de las consultas se agregan a ella.--replace
: si existe la tabla de destino, se reemplaza por los resultados de las consultas.
bq --location=location query \ --destination_table project_id:dataset.table \ --use_legacy_sql=false 'query'
En el que:
- location es el nombre de la ubicación que se usa para procesar la consulta.
La marca
--location
es opcional. Por ejemplo, si usas BigQuery en la región de Tokio, puedes configurar el valor de la marca comoasia-northeast1
. Puedes configurar un valor predeterminado para la ubicación con el archivo .bigqueryrc. - project_id es el ID del proyecto.
- dataset es el nombre del conjunto de datos que contiene la tabla en la que escribes los resultados de las consultas.
- table es el nombre de la tabla en la que escribes los resultados de las consultas.
- query es una consulta en la sintaxis de SQL estándar.
Si no se especifica una marca de disposición de escritura, el comportamiento predeterminado es escribir los resultados en la tabla solo si está vacía. Si la tabla existe y no está vacía, se muestra el siguiente error: “Error de BigQuery en la operación de consulta: error durante el procesamiento del trabajo project_id:bqjob_123abc456789_00000e1234f_1': Already
Exists: Table project_id:dataset.table
”.
Ejemplos:
Ingresa el siguiente comando para escribir los resultados de las consultas en una tabla de destino llamada mytable
de mydataset
. El conjunto de datos se encuentra en tu proyecto predeterminado.
Debido a que no se especifica ninguna marca de disposición de escritura en el comando, la tabla debe ser nueva o estar vacía. De lo contrario, se muestra un error Already exists
. La consulta recupera datos del conjunto de datos públicos Datos de nombres de EE.UU.
bq query \ --destination_table mydataset.mytable \ --use_legacy_sql=false \ 'SELECT name, number FROM `bigquery-public-data`.usa_names.usa_1910_current WHERE gender = "M" ORDER BY number DESC'
Ingresa el siguiente comando a fin de usar los resultados de las consultas para reemplazar una tabla de destino llamada mytable
de mydataset
. El conjunto de datos se encuentra en tu proyecto predeterminado. El comando usa la marca --replace
para reemplazar la tabla de destino.
bq query \ --destination_table mydataset.mytable \ --replace \ --use_legacy_sql=false \ 'SELECT name, number FROM `bigquery-public-data`.usa_names.usa_1910_current WHERE gender = "M" ORDER BY number DESC'
Ingresa el siguiente comando para agregar los resultados de las consultas a una tabla de destino llamada mytable
de mydataset
. El conjunto de datos se encuentra en my-other-project
, no en tu proyecto predeterminado. El comando usa la marca --append
para agregar los resultados de las consultas a la tabla de destino.
bq query \ --append \ --use_legacy_sql=false \ --destination_table my-other-project:mydataset.mytable \ 'SELECT name, number FROM `bigquery-public-data`.usa_names.usa_1910_current WHERE gender = "M" ORDER BY number DESC'
El resultado de cada uno de estos ejemplos se verá de la siguiente manera. Para facilitar la lectura, algunos resultados se truncaron.
Waiting on bqjob_r123abc456_000001234567_1 ... (2s) Current status: DONE +---------+--------+ | name | number | +---------+--------+ | Robert | 10021 | | John | 9636 | | Robert | 9297 | | ... | +---------+--------+
API
Si quieres guardar los resultados de las consultas en una tabla permanente, llama al método jobs.insert
, configura un trabajo query
y, por último, incluye un valor para la propiedad destinationTable
. A fin de controlar la disposición de escritura de una tabla de destino existente, configura la propiedad writeDisposition
.
Si quieres controlar la ubicación de procesamiento para el trabajo de consulta, especifica la propiedad location
en la sección jobReference
del recurso 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. Para obtener más información, consulta la Documentación de referencia de la API de Go de BigQuery.
Java
Antes de probar este ejemplo, sigue las instrucciones de configuración de Java incluidas en la Guía de inicio rápido de BigQuery con bibliotecas cliente. Para obtener más información, consulta la Documentación de referencia de la API de Java de BigQuery.
Para guardar los resultados de las consultas en una tabla permanente, configura la tabla de destino con el TableId que desees en una QueryJobConfiguration.
Python
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. Para obtener más información, consulta la Documentación de referencia de la API de Python de BigQuery.
Para guardar los resultados de las consultas en una tabla permanente, crea una QueryJobConfig y establece el destino con la TableReference que desees. Pasa la configuración del trabajo al método de consulta.
Cómo guardar los resultados de las consultas en Hojas de cálculo de Google
La herramienta de línea de comandos y la API no admiten que los resultados de las consultas se guarden en Hojas de cálculo de Google.
Para guardar los resultados de las consultas en Hojas de cálculo de Google mediante la IU web, sigue estos pasos:
Console
Abre la IU web de BigQuery en GCP Console.
Ir a la IU web de BigQueryHaz clic en Redactar consulta nueva.
Ingresa una consulta de SQL válida en el área de texto del Editor de consultas.
Para cambiar la ubicación de procesamiento, haz clic en Más y selecciona Configuración de consulta (opcional). Debajo de Ubicación de procesamiento, haz clic en Selección automática y elige la ubicación de tus datos.
Haz clic en Ejecutar.
Cuando se muestren los resultados, haz clic en Guardar resultados y selecciona Hojas de cálculo de Google.
Si es necesario, sigue las indicaciones para acceder a tu Cuenta de Google y haz clic en Permitir si quieres darle permiso a BigQuery para que escriba los datos en tu carpeta
MY Drive
de Google Drive.Tras seguir las indicaciones, deberías recibir un correo electrónico con el asunto “Herramientas cliente de BigQuery conectadas a tu Cuenta de Google”. El correo electrónico contiene información sobre los permisos que otorgaste y los pasos que tienes que seguir para quitarlos.
Cuando se guardan los resultados, aparece un mensaje similar al siguiente debajo de los resultados de las consultas en la IU web de BigQuery:
Saved to Sheets as "results-20190225-103531. Open
. Haz clic en el vínculo del mensaje para ver tus resultados en Hojas de cálculo de Google o navega a tu carpetaMy Drive
y abre el archivo de forma manual.Cuando guardas los resultados de las consultas en las Hojas de cálculo de Google, el nombre del archivo comienza con
results-[DATE]
, en el que[DATE]
es la fecha actual en formatoYYYYMMDD
.
IU clásica
Ve a la IU web de BigQuery.
Ir a la IU web de BigQueryHaz clic en el botón Redactar consulta.
Ingresa una consulta de SQL válida en el área de texto Consulta nueva.
Haz clic en Mostrar opciones.
En Ubicación de procesamiento, haz clic en Sin especificar y elige la ubicación de tus datos (opcional).
Haz clic en Ejecutar consulta.
Cuando se muestren los resultados, haz clic en el botón Guardar en Hojas de cálculo de Google (Save to Google Sheets) arriba de los resultados de las consultas.
Si es necesario, sigue las indicaciones para acceder a tu Cuenta de Google y haz clic en Permitir si quieres darle permiso a BigQuery para que escriba los datos en tu carpeta
MY Drive
de Google Drive.Tras seguir las indicaciones, deberías recibir un correo electrónico con el asunto “Herramientas cliente de BigQuery conectadas a tu Cuenta de Google”. El correo electrónico contiene información sobre los permisos que otorgaste y los pasos que tienes que seguir para quitarlos.
Cuando se guardan los resultados, aparece un mensaje como el que se presenta a continuación arriba de los resultados de las consultas en la IU web clásica de BigQuery:
Results saved to Google Sheets. Click to view
. Haz clic en el vínculo del mensaje para ver tus resultados en Hojas de cálculo de Google o navega a tu carpetaMY Drive
y abre el archivo de forma manual.Cuando guardas los resultados de las consultas en las Hojas de cálculo de Google, el nombre del archivo comienza con
results-[DATE]
, en el que[DATE]
es la fecha actual en formatoYYYYMMDD
.