Exportar datos de tablas a Cloud Storage
En esta página se describe cómo exportar o extraer datos de tablas de BigQuery a Cloud Storage.
Una vez que haya cargado sus datos en BigQuery, podrá exportarlos en varios formatos. BigQuery puede exportar hasta 1 GB de datos lógicos a un solo archivo. Si vas a exportar más de 1 GB de datos, debes hacerlo a varios archivos. Cuando exportas tus datos a varios archivos, el tamaño de los archivos varía.
También puedes exportar los resultados de una consulta mediante la instrucción
EXPORT DATA
. Puedes usar EXPORT DATA OPTIONS
para especificar el formato de los datos exportados.
Por último, puedes usar un servicio como Dataflow para leer datos de BigQuery en lugar de exportarlos de BigLake. Para obtener más información sobre cómo usar Dataflow para leer y escribir en BigQuery, consulta la documentación de E/S de BigQuery.
Limitaciones de exportación
Cuando exporte datos de BigQuery, tenga en cuenta lo siguiente:
- No puedes exportar datos de tablas a un archivo local, a Hojas de cálculo de Google ni a Google Drive. La única ubicación de exportación admitida es Cloud Storage. Para obtener información sobre cómo guardar los resultados de las consultas, consulta el artículo Descargar y guardar resultados de consultas.
- Puede exportar hasta 1 GB de datos de tamaño de tabla lógica a un solo archivo. Si vas a exportar más de 1 GB de datos, usa un comodín para exportar los datos en varios archivos. Cuando exportas datos a varios archivos, el tamaño de los archivos varía. Para limitar el tamaño del archivo exportado, puedes dividir los datos en particiones y exportar cada partición.
- No se garantiza el tamaño del archivo generado al usar la instrucción
EXPORT DATA
. - El número de archivos generados por una tarea de exportación puede variar.
- No puedes exportar datos anidados y repetidos en formato CSV. Se admiten datos anidados y repetidos en las exportaciones de Avro, JSON y Parquet.
- Cuando exportas datos en formato JSON, los tipos de datos INT64 (números enteros) se codifican como cadenas JSON para conservar la precisión de 64 bits cuando otros sistemas leen los datos.
- No puede exportar datos de varias tablas en un solo trabajo de exportación.
- No puedes elegir un tipo de compresión que no sea
GZIP
cuando exportes datos con la consola Google Cloud . - Cuando exportas una tabla en formato JSON, los símbolos
<
,>
y&
se convierten mediante la notación Unicode\uNNNN
, dondeN
es un dígito hexadecimal. Por ejemplo,profit&loss
se convierte enprofit\u0026loss
. Esta conversión Unicode se realiza para evitar vulnerabilidades de seguridad. - No se garantiza el orden de los datos de la tabla exportada a menos que uses la instrucción
EXPORT DATA
y especifiques una cláusulaORDER BY
enquery_statement
. - BigQuery no admite rutas de recursos de Cloud Storage que incluyan varias barras consecutivas después de la barra doble inicial.
Los nombres de los objetos de Cloud Storage pueden contener varias barras (/) consecutivas. Sin embargo, BigQuery convierte varias barras consecutivas en una sola barra. Por ejemplo, la siguiente ruta de recurso, aunque es válida en Cloud Storage, no funciona en BigQuery:
gs://bucket/my//object//name
. - Los datos nuevos que se carguen en BigQuery mientras se esté ejecutando una tarea de exportación no se incluirán en esa tarea. Para exportar los datos nuevos, debes crear un nuevo trabajo de exportación.
Antes de empezar
Concede roles de gestión de identidades y accesos (IAM) que proporcionen a los usuarios los permisos necesarios para realizar cada tarea de este documento.
Permisos obligatorios
Para realizar las tareas de este documento, necesitas los siguientes permisos.
Permisos para exportar datos de una tabla de BigQuery
Para exportar datos de una tabla de BigQuery, necesitas el permiso de gestión de identidades y accesos bigquery.tables.export
.
Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye el permiso bigquery.tables.export
:
roles/bigquery.dataViewer
roles/bigquery.dataOwner
roles/bigquery.dataEditor
roles/bigquery.admin
Permisos para ejecutar una tarea de exportación
Para ejecutar una tarea de exportación, necesitas el permiso de gestión de identidades y accesos bigquery.jobs.create
.
Cada uno de los siguientes roles de gestión de identidades y accesos predefinidos incluye los permisos que necesitas para ejecutar un trabajo de exportación:
roles/bigquery.user
roles/bigquery.jobUser
roles/bigquery.admin
Permisos para escribir los datos en el segmento de Cloud Storage
Para escribir los datos en un segmento de Cloud Storage, necesita los siguientes permisos de gestión de identidades y accesos:
storage.objects.create
storage.objects.delete
Cada uno de los siguientes roles predefinidos de gestión de identidades y accesos incluye los permisos que necesitas para escribir los datos en un bucket de Cloud Storage:
roles/storage.objectAdmin
roles/storage.admin
Para obtener más información sobre los roles y permisos de gestión de identidades y accesos en BigQuery, consulta el artículo sobre roles y permisos predefinidos.
Formatos de exportación y tipos de compresión
BigQuery admite los siguientes formatos de datos y tipos de compresión para los datos exportados.
Formato de datos | Tipos de compresión admitidos | Detalles |
---|---|---|
CSV | GZIP | Puedes controlar el delimitador CSV de los datos exportados con la marca No se admiten datos anidados ni repetidos. |
JSON | GZIP | Se admiten datos anidados y repetidos. |
Avro | DEFLATE, SNAPPY | GZIP no se admite en las exportaciones de Avro. Se admiten datos anidados y repetidos. Consulta los detalles de la exportación a Avro. |
Parquet | SNAPPY, GZIP y ZSTD | Se admiten datos anidados y repetidos. Consulta los detalles de la exportación de Parquet. |
Exportar datos
En las siguientes secciones se explica cómo exportar los datos de una tabla, los metadatos de una tabla y los resultados de una consulta a Cloud Storage.
Exportar datos de una tabla
Para exportar los datos de una tabla, puedes hacer lo siguiente:
- Usar la Google Cloud consola
- Usar el comando
bq extract
en la herramienta de línea de comandos bq - Enviar un trabajo
extract
mediante la API o las bibliotecas de cliente
Selecciona una de las opciones siguientes:
Consola
Abre la página de BigQuery en la Google Cloud consola.
En el panel Explorador, expande tu proyecto y tu conjunto de datos, y selecciona la tabla.
En el panel de detalles, haz clic en Exportar y selecciona Exportar a Cloud Storage.
En el cuadro de diálogo Exportar a Google Cloud Storage, haz lo siguiente:
- En Ubicación de GCS, busque el bucket, la carpeta o el archivo al que quiera exportar los datos.
- En Formato de exportación, elige el formato de los datos exportados: CSV, JSON (delimitado por saltos de línea), Avro o Parquet.
- En Compresión, selecciona un formato de compresión o
None
para no aplicar compresión.
Haz clic en Guardar para exportar la tabla.
Para comprobar el progreso del trabajo, despliega el panel Historial de trabajos y busca el trabajo de tipo EXTRACT
.
Para exportar vistas a Cloud Storage, usa la instrucción EXPORT DATA OPTIONS
.
SQL
Usa la instrucción EXPORT DATA
.
En el siguiente ejemplo se exportan
campos seleccionados de una tabla llamada mydataset.table1
:
En la Google Cloud consola, ve a la página BigQuery.
En el editor de consultas, introduce la siguiente instrucción:
EXPORT DATA OPTIONS ( uri = 'gs://bucket/folder/*.csv', format = 'CSV', overwrite = true, header = true, field_delimiter = ';') AS ( SELECT field1, field2 FROM mydataset.table1 ORDER BY field1 );
Haz clic en
Ejecutar.
Para obtener más información sobre cómo ejecutar consultas, consulta Ejecutar una consulta interactiva.
bq
Usa el comando bq extract
con la marca --destination_format
.
(Opcional) Proporcione la marca --location
y asigne el valor a su ubicación.
Otras marcas opcionales son:
--compression
: el tipo de compresión que se usará en los archivos exportados.--field_delimiter
: el carácter que indica el límite entre las columnas del archivo de salida de las exportaciones CSV. Se permiten tanto\t
comotab
para los delimitadores de tabulación.--print_header
: cuando se especifica, imprime las filas de encabezado de los formatos que tienen encabezados, como CSV.
bq extract --location=location \ --destination_format format \ --compression compression_type \ --field_delimiter delimiter \ --print_header=boolean \ project_id:dataset.table \ gs://bucket/filename.ext
Donde:
- location es el nombre de tu ubicación. La marca
--location
es opcional. Por ejemplo, si usas BigQuery en la región de Tokio, puedes asignar el valorasia-northeast1
a la marca. Puedes definir un valor predeterminado para la ubicación mediante el archivo.bigqueryrc. - format es el formato de los datos exportados:
CSV
,NEWLINE_DELIMITED_JSON
,AVRO
oPARQUET
. - compression_type es un tipo de compresión compatible con el formato de tus datos. Consulta Formatos de exportación y tipos de compresión.
- delimiter es el carácter que indica el límite entre las columnas de las exportaciones de CSV.
\t
ytab
son nombres aceptados para la pestaña. - boolean es
true
ofalse
. Si se define comotrue
, las filas de encabezado se imprimen en los datos exportados si el formato de datos admite encabezados. El valor predeterminado estrue
. - project_id es el ID del proyecto.
- dataset es el nombre del conjunto de datos de origen.
- table es la tabla que vas a exportar. Si usas un decorador de partición, debes incluir la ruta de la tabla entre comillas simples o usar el carácter de escape
$
. - bucket es el nombre del segmento de Cloud Storage al que vas a exportar los datos. El conjunto de datos de BigQuery y el segmento de Cloud Storage deben estar en la misma ubicación.
- filename.ext es el nombre y la extensión del archivo de datos exportado. Puedes exportar a varios archivos mediante un carácter comodín.
Ejemplos:
Por ejemplo, el siguiente comando exporta mydataset.mytable
a un archivo comprimido con gzip llamado myfile.csv
. myfile.csv
se almacena en un segmento de Cloud Storage llamado example-bucket
.
bq extract \ --compression GZIP \ 'mydataset.mytable' \ gs://example-bucket/myfile.csv
El formato de destino predeterminado es CSV. Para exportar a JSON o Avro, usa la marca destination_format
y asigna el valor NEWLINE_DELIMITED_JSON
o AVRO
. Por ejemplo:
bq extract \ --destination_format NEWLINE_DELIMITED_JSON \ 'mydataset.mytable' \ gs://example-bucket/myfile.json
El siguiente comando exporta mydataset.mytable
a un archivo Avro comprimido con Snappy. El archivo se llama myfile.avro
. myfile.avro
se exporta a un segmento de Cloud Storage llamado example-bucket
.
bq extract \ --destination_format AVRO \ --compression SNAPPY \ 'mydataset.mytable' \ gs://example-bucket/myfile.avro
El siguiente comando exporta una sola partición de
mydataset.my_partitioned_table
a un archivo CSV en Cloud Storage:
bq extract \ --destination_format CSV \ 'mydataset.my_partitioned_table$0' \ gs://example-bucket/single_partition.csv
API
Para exportar datos, crea un extract
y rellena su configuración.
(Opcional) Especifica tu ubicación en la propiedad location
de la sección jobReference
del recurso Job.
Crea una tarea de extracción que apunte a los datos de origen de BigQuery y al destino de Cloud Storage.
Especifica la tabla de origen mediante el objeto de configuración
sourceTable
que contiene el ID del proyecto, el ID del conjunto de datos y el ID de la tabla.La propiedad
destination URI(s)
debe estar completa y tener el formatogs://bucket/filename.ext
. Cada URI puede contener un comodín "*" y debe ir después del nombre del contenedor.Especifica el formato de los datos definiendo la propiedad
configuration.extract.destinationFormat
. Por ejemplo, para exportar un archivo JSON, asigna a esta propiedad el valorNEWLINE_DELIMITED_JSON
.Para comprobar el estado de la tarea, llama a jobs.get(job_id) con el ID de la tarea devuelto por la solicitud inicial.
- Si
status.state = DONE
, el trabajo se ha completado correctamente. - Si la propiedad
status.errorResult
está presente, significa que se ha producido un error en la solicitud y que el objeto incluirá información que describe lo que ha fallado. - Si no aparece
status.errorResult
, significa que el trabajo se ha completado correctamente, aunque puede que se hayan producido algunos errores no fatales. Los errores no fatales se indican en la propiedadstatus.errors
del objeto de trabajo devuelto.
- Si
Notas sobre la API:
Como práctica recomendada, genera un ID único y pásalo como
jobReference.jobId
al llamar ajobs.insert
para crear un trabajo. Este enfoque es más sólido ante fallos de red, ya que el cliente puede sondear o volver a intentar la operación con el ID de trabajo conocido.Llamar a
jobs.insert
en un ID de tarea determinado es idempotente. En otras palabras, puedes volver a intentarlo tantas veces como quieras en el mismo ID de tarea y, como mucho, una de esas operaciones se completará correctamente.
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.
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.
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.
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.
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.
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.
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.
Exportar metadatos de una tabla
Para exportar metadatos de tablas Iceberg, usa la siguiente instrucción SQL:
EXPORT TABLE METADATA FROM `[[PROJECT_NAME.]DATASET_NAME.]TABLE_NAME`;
Haz los cambios siguientes:
- PROJECT_NAME: el nombre del proyecto de la tabla. El valor predeterminado es el proyecto que ejecuta esta consulta.
- DATASET_NAME: el nombre del conjunto de datos de la tabla.
- TABLE_NAME: el nombre de la tabla.
Los metadatos exportados se encuentran en la carpeta STORAGE_URI/metadata
, donde STORAGE_URI es la ubicación de almacenamiento de la tabla definida en las opciones.
Exportar resultados de consultas
Puedes exportar los resultados de tus consultas a Cloud Storage en la Google Cloud consola siguiendo estos pasos:
Abre la página de BigQuery en la Google Cloud consola.
Haz clic en
Consulta de SQL.Introduce una consulta de GoogleSQL válida en el área de texto Editor de consultas.
Haz clic en Ejecutar.
Cuando se devuelvan los resultados, haz clic en Guardar resultados > Cloud Storage.
En el cuadro de diálogo Exportar a Google Cloud Storage, haz lo siguiente:
- En Ubicación de GCS, busque el bucket, la carpeta o el archivo al que quiera exportar los datos.
- En Formato de exportación, elige el formato de los datos exportados: CSV, JSON (delimitado por saltos de línea), Avro o Parquet.
- En Compresión, selecciona un formato de compresión o
None
para no aplicar compresión.
Haz clic en Guardar para exportar los resultados de la consulta.
Para comprobar el progreso del trabajo, despliega el panel Historial de trabajos y busca el trabajo de tipo EXTRACT
.
Detalles de la exportación a Avro
BigQuery expresa los datos con formato Avro de las siguientes formas:
- Los archivos de exportación resultantes son archivos de contenedor Avro.
- Cada fila de BigQuery se representa como un registro Avro. Los datos anidados se representan mediante objetos de registro anidados.
- Los campos
REQUIRED
se representan como los tipos Avro correspondientes. Por ejemplo, un tipoINTEGER
de BigQuery se asigna a un tipoLONG
de Avro. - Los campos
NULLABLE
se representan como una unión de Avro del tipo correspondiente y "null". - Los campos
REPEATED
se representan como matrices Avro. - Los tipos de datos
TIMESTAMP
se representan como tipos lógicostimestamp-micros
(anota un tipoLONG
de Avro) de forma predeterminada tanto en las tareas de extracción como en el SQL de exportación de datos. Precaución: puedes añadiruse_avro_logical_types=False
aExport Data Options
para inhabilitar el tipo lógico y que se use el tipostring
en su lugar en la columna de marca de tiempo, pero en los trabajos de extracción siempre se usa el tipo lógico Avro. - Los tipos de datos
DATE
se representan como el tipo lógicodate
(anota los tipos deINT
de Avro) de forma predeterminada en Export Data SQL, pero se representan como el tipostring
de forma predeterminada en los trabajos Extract. Nota: Puedes añadiruse_avro_logical_types=False
aExport Data Options
para inhabilitar el tipo lógico o usar la marca--use_avro_logical_types=True
para habilitar el tipo lógico en los trabajos Extract. - Los tipos de datos
TIME
se representan como tipo lógicotimestamp-micro
(anota tiposLONG
de Avro) de forma predeterminada en Export Data SQL, pero se representan como tipostring
de forma predeterminada en los trabajos de extracción. Nota: Puedes añadiruse_avro_logical_types=False
aExport Data Options
para inhabilitar el tipo lógico o usar la marca--use_avro_logical_types=True
para habilitar el tipo lógico en los trabajos de extracción. - Los tipos de datos
DATETIME
se representan como tiposSTRING
de Avro (un tipo de cadena con el tipo lógico personalizadodatetime
) de forma predeterminada en Export Data SQL, pero se representan como tipostring
de forma predeterminada en las tareas de extracción. Nota: Puedes añadiruse_avro_logical_types=False
aExport Data Options
para inhabilitar el tipo lógico o usar la marca--use_avro_logical_types=True
para habilitar el tipo lógico en los trabajos de extracción. - Los tipos RANGE no se admiten en la exportación de Avro.
Los tipos de datos NUMERIC(P[, S])
y BIGNUMERIC(P[, S])
parametrizados transfieren sus parámetros de tipo de precisión y escala al tipo lógico decimal de Avro.
El formato Avro no se puede usar junto con la compresión GZIP. Para comprimir datos Avro, usa la herramienta de línea de comandos bq o la API y especifica uno de los tipos de compresión admitidos para datos Avro: DEFLATE
o SNAPPY
.
Detalles de la exportación de Parquet
BigQuery convierte los tipos de datos de GoogleSQL en los siguientes tipos de datos de Parquet:
Tipo de datos de BigQuery | Tipo primitivo de Parquet | Tipo lógico de Parquet |
---|---|---|
Entero | INT64 |
NONE |
Numérico | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = 38, scale = 9) |
Numeric(P[, S]) | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = P, scale = S) |
BigNumeric | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = 76, scale = 38) |
BigNumeric(P[, S]) | FIXED_LEN_BYTE_ARRAY |
DECIMAL (precision = P, scale = S) |
Coma flotante | FLOAT |
NONE |
Booleano | BOOLEAN |
NONE |
Cadena | BYTE_ARRAY |
STRING (UTF8) |
Bytes | BYTE_ARRAY |
NONE |
Fecha | INT32 |
DATE |
Fecha y hora | INT64 |
TIMESTAMP (isAdjustedToUTC = false, unit = MICROS) |
Hora | INT64 |
TIME (isAdjustedToUTC = true, unit = MICROS) |
Marca de tiempo | INT64 |
TIMESTAMP (isAdjustedToUTC = false, unit = MICROS) |
Geografía | BYTE_ARRAY |
GEOGRAPHY (edges = spherical) |
El esquema de Parquet representa los datos anidados como un grupo y los registros repetidos como grupos repetidos. Para obtener más información sobre cómo usar datos anidados y repetidos en BigQuery, consulta el artículo sobre cómo especificar columnas anidadas y repetidas.
Puedes usar las siguientes soluciones alternativas para los tipos de DATETIME
:
- Carga el archivo en una tabla de almacenamiento temporal. A continuación, usa una consulta de SQL para convertir el campo a
DATETIME
y guarda el resultado en una tabla nueva. Para obtener más información, consulta Cambiar el tipo de datos de una columna. - Proporciona un esquema para la tabla mediante la marca
--schema
en la tarea de carga. Define la columna de fecha y hora comocol:DATETIME
.
El tipo lógico GEOGRAPHY
se representa con metadatos GeoParquet añadidos a los archivos exportados.
Exportar datos a uno o varios archivos
La propiedad destinationUris
indica una o varias ubicaciones y nombres de archivo en los que BigQuery debe exportar los archivos.
BigQuery admite un único operador comodín (*) en cada URI. El comodín puede aparecer en cualquier parte del componente del nombre de archivo. Al usar el operador comodín, se indica a BigQuery que cree varios archivos fragmentados basados en el patrón proporcionado. El operador comodín se sustituye por un número (empezando por 0) que se rellena con ceros a la izquierda hasta tener 12 dígitos. Por ejemplo, un URI con un comodín al final del nombre de archivo crearía archivos con 000000000000
añadido al primer archivo y 000000000001
añadido al segundo, y así sucesivamente.
En la siguiente tabla se describen varias opciones posibles para la propiedad destinationUris
:
Opciones de destinationUris |
|
---|---|
Un solo URI |
Usa un solo URI si exportas datos de tabla de 1 GB o menos. Esta opción es la más habitual, ya que los datos exportados suelen ser inferiores al valor máximo de 1 GB. Esta opción no se admite en la
declaración
Definición de la propiedad:
Crea: gs://my-bucket/file-name.json |
URI comodín único |
Solo se puede usar un comodín en el componente de nombre de archivo del URI. Utilice un único URI con comodín si cree que los datos exportados superarán el valor máximo de 1 GB. BigQuery fragmenta los datos en varios archivos en función del patrón proporcionado. El tamaño de los archivos exportados variará. Definición de la propiedad:
Crea: gs://my-bucket/file-name-000000000000.json gs://my-bucket/file-name-000000000001.json gs://my-bucket/file-name-000000000002.json ...
Crea: gs://my-bucket/000000000000 gs://my-bucket/000000000001 gs://my-bucket/000000000002 ... |
Limitar el tamaño del archivo exportado
Si exportas más de 1 GB de datos en una sola exportación, debes usar un comodín para exportar los datos en varios archivos. El tamaño de los archivos variará. Si necesitas limitar el tamaño máximo de cada archivo exportado, una opción es particionar tus datos de forma aleatoria y, a continuación, exportar cada partición a un archivo:
- Determina el número de particiones que necesitas, que es igual al tamaño total de tus datos dividido por el tamaño de archivo exportado que hayas elegido. Por ejemplo, si tienes 8000 MB de datos y quieres que cada archivo exportado tenga aproximadamente 20 MB, necesitarás 400 particiones.
Crea una tabla con particiones y agrupada en clústeres por una nueva columna generada aleatoriamente llamada
export_id
. En el siguiente ejemplo se muestra cómo crear unprocessed_table
a partir de una tabla llamadasource_table
, que requieren
particiones para alcanzar el tamaño de archivo elegido:CREATE TABLE my_dataset.processed_table PARTITION BY RANGE_BUCKET(export_id, GENERATE_ARRAY(0, n, 1)) CLUSTER BY export_id AS ( SELECT *, CAST(FLOOR(n*RAND()) AS INT64) AS export_id FROM my_dataset.source_table );
Para cada número entero
i
entre 0 yn-1
, ejecuta una instrucciónEXPORT DATA
en la siguiente consulta:SELECT * EXCEPT(export_id) FROM my_dataset.processed_table WHERE export_id = i;
Extraer tabla comprimida
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.
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.
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.
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.
Caso práctico de ejemplo
En este ejemplo se muestra cómo puedes exportar datos a Cloud Storage.
Supongamos que estás transmitiendo datos a Cloud Storage de forma continua desde los registros de endpoints. Se debe exportar una instantánea diaria a Cloud Storage para crear copias de seguridad y archivarla. La mejor opción es una tarea de extracción, que está sujeta a determinadas cuotas y limitaciones.
Envía un trabajo de extracción con la API o las bibliotecas de cliente y transfiere un ID único como jobReference.jobId
. Los trabajos de extracción son asíncronos.
Consulta el estado del trabajo
con el ID de trabajo único que se ha usado para crearlo. El trabajo se ha completado correctamente
si status.status
es DONE
. Si status.errorResult
está presente, el trabajo ha fallado y debe volver a intentarse.
Procesamiento de datos por lotes
Supongamos que se usa una tarea por lotes nocturna para cargar datos antes de una fecha límite fija. Una vez que se haya completado este trabajo de carga, se materializará una tabla con estadísticas a partir de una consulta, tal como se describe en la sección anterior. Los datos de esta tabla se recuperan y se compilan en un informe en PDF que se envía a un organismo regulador.
Como la cantidad de datos que se deben leer es pequeña, usa la API tabledata.list
para obtener todas las filas de la tabla en formato de diccionario JSON. Si hay más de una página de datos, los resultados tienen definida la propiedad pageToken
. Para obtener la siguiente página de resultados, haz otra llamada tabledata.list
e incluye el valor del token como parámetro pageToken
. Si la llamada a la API falla con un error 5xx, vuelve a intentarlo con un tiempo de espera exponencial. La mayoría de los errores 4xx no se pueden volver a intentar. Para desacoplar mejor la exportación de BigQuery y la generación de informes, los resultados deben conservarse en el disco.
Política de cuotas
Para obtener información sobre las cuotas de los trabajos de exportación, consulta la sección Trabajos de exportación de la página Cuotas y límites.
El uso de las tareas de exportación está disponible en la INFORMATION_SCHEMA
.
La entrada de la tarea en las tablas de sistema JOBS_BY_*
de la tarea de exportación contiene un valor total_bytes_processed
que se puede usar para monitorizar el uso agregado y asegurarse de que no supere los 50 TiB al día. Para saber cómo consultar la vista
INFORMATION_SCHEMA.JOBS
para obtener el valor de total_bytes_processed
, consulta el
esquema de INFORMATION_SCHEMA.JOBS
.
Ver la cuota de uso actual
Para ver el uso actual de las tareas de consulta, carga, extracción o copia, puedes ejecutar una INFORMATION_SCHEMA
consulta para ver los metadatos de las tareas que se han ejecutado durante un periodo específico. Puedes comparar tu uso actual con el límite de cuota para determinar el uso de la cuota de un tipo de trabajo concreto. La siguiente consulta de ejemplo usa la vista INFORMATION_SCHEMA.JOBS
para enumerar el número de tareas de consulta, carga, extracción y copia por proyecto:
SELECT sum(case when job_type="QUERY" then 1 else 0 end) as QRY_CNT, sum(case when job_type="LOAD" then 1 else 0 end) as LOAD_CNT, sum(case when job_type="EXTRACT" then 1 else 0 end) as EXT_CNT, sum(case when job_type="COPY" then 1 else 0 end) as CPY_CNT FROM `region-REGION_NAME`.INFORMATION_SCHEMA.JOBS_BY_PROJECT WHERE date(creation_time)= CURRENT_DATE()
Puedes configurar una política de alertas de Cloud Monitoring que monitorice el número de bytes exportados.
-
En la Google Cloud consola, ve a la página notifications Alertas:
Si usas la barra de búsqueda para encontrar esta página, selecciona el resultado cuya sección sea Monitorización.
En la página Alertas, haz clic en Crear política.
En Modo de configuración de la política, selecciona Editor de código (MQL o PromQL).
En el editor de consultas PromQL, introduce la siguiente consulta:
( sum by (project_id, quota_metric, location) (increase({"serviceruntime.googleapis.com/quota/rate/net_usage", monitored_resource="consumer_quota", service="bigquery.googleapis.com"}[1m])) / max by (project_id, quota_metric, location) ({"serviceruntime.googleapis.com/quota/limit", monitored_resource="consumer_quota", service="bigquery.googleapis.com", limit_name="ExtractBytesPerDay"}) ) > 0.01
Si la opción Ejecución automática no está habilitada, haz clic en Ejecutar consulta.
Configura el resto de la alerta y haz clic en Crear política.
Para obtener información detallada sobre cómo crear políticas de alertas basadas en PromQL, consulta el artículo Crear políticas de alertas basadas en PromQL (consola).
Solución de problemas
Para diagnosticar problemas con los trabajos de extracción, puede usar el Explorador de registros para revisar los registros de un trabajo de extracción específico e identificar posibles errores. El siguiente filtro de Explorador de registros devuelve información sobre tus tareas de extracción:
resource.type="bigquery_resource"
protoPayload.methodName="jobservice.insert"
(protoPayload.serviceData.jobInsertRequest.resource.jobConfiguration.query.query=~"EXPORT" OR
protoPayload.serviceData.jobCompletedEvent.eventName="extract_job_completed" OR
protoPayload.serviceData.jobCompletedEvent.job.jobConfiguration.query.query=~"EXPORT")
Precios
Para obtener información sobre los precios de la exportación de datos, consulta la página de precios de BigQuery.
Una vez que se exportan los datos, se te cobra por almacenarlos en Cloud Storage. Para obtener más información, consulta la página Precios de Cloud Storage.
Seguridad de las tablas
Para controlar el acceso a las tablas de BigQuery, consulta el artículo sobre cómo controlar el acceso a los recursos con la gestión de identidades y accesos.
Siguientes pasos
- Para obtener más información sobre la consola Google Cloud , consulta Usar la consola Google Cloud .
- Para obtener más información sobre la herramienta de línea de comandos bq, consulta el artículo Usar la herramienta de línea de comandos bq.
- Para saber cómo crear una aplicación con las bibliotecas de cliente de la API de BigQuery, consulta la guía de inicio rápido de la biblioteca de cliente.