Administra datos de tablas particionadas

En este documento, se describe cómo administrar datos de tablas particionadas en BigQuery.

Decoradores de particiones

Los decoradores de particiones te permiten hacer referencia a una partición en una tabla. Por ejemplo, puedes usarlos para escribir datos en una partición específica.

Un decorador de partición tiene el formato table_name$partition_id, en el que el formato del segmento partition_id depende del tipo de partición:

Tipo de partición Formato Ejemplo
Por hora yyyymmddhh my_table$2021071205
Diario yyyymmdd my_table$20210712
Mensual yyyymm my_table$202107
Anual yyyy my_table$2021
Rango de números enteros range_start my_table$40

Explora los datos en una partición

Para explorar los datos de una partición específica, usa el comando bq head con un decorador de partición.

Por ejemplo, en el siguiente comando, se enumeran todos los campos en las primeras 10 filas de my_dataset.my_table en la partición 24/02/2018:

    bq head --max_rows=10 'my_dataset.my_tablee$20180224'

Escribe datos en una partición específica

Puedes cargar datos en una partición específica si usas el comando bq load con un decorador de partición. En el siguiente ejemplo, se escriben datos en la partición 20160501 (1 de mayo de 2016) de una tabla existente, si suponemos que la tabla ya está particionada por fecha:

bq load --source_format=CSV 'my_dataset.my_table$20160501' data.csv

También puedes escribir los resultados de una consulta en una partición específica:

bq query \
  --use_legacy_sql=false  \
  --destination_table='my_table$20160501' \
  --append_table=true \
  'SELECT * FROM my_dataset.another_table'

Con la partición por tiempo de transferencia, puedes usar esta técnica para cargar datos más antiguos en la partición que corresponda a la hora en que se crearon originalmente los datos.

También puede usar esta técnica para ajustar las zonas horarias. De forma predeterminada, las particiones por tiempo de transferencia se basan en la hora UTC. Si quieres que la hora de partición coincida con una zona horaria en particular, puedes usar decoradores de particiones para compensar el tiempo de transferencia de UTC. Por ejemplo, si te encuentras en la hora estándar del Pacífico (PST), puedes cargar datos que se generaron el 1 de mayo de 2016 PST en la partición para esa fecha mediante el decorador de partición correspondiente, $20160501.

Para las columnas por unidad de tiempo y las tablas particionadas por rango de números enteros, el ID de partición especificado en el decorador debe coincidir con los datos que se escriben. Por ejemplo, si la tabla está particionada en una columna DATE, el decorador debe coincidir con el valor en esa columna. De lo contrario, se produce un error. Sin embargo, si ya sabes que tus datos están en una sola partición, especificar el decorador de partición puede mejorar el rendimiento de la escritura.

Para obtener más información, consulta Introducción a la carga de datos en BigQuery.

Transmitir datos en tablas particionadas

Para obtener información sobre la transmisión de datos a una tabla particionada con el método tabledata.insertAll, consulta Transmite a tablas particionadas.

Exportar datos de tablas

En la exportación de todos los datos de una tabla particionada se realiza el mismo proceso que en la exportación de datos de una tabla no particionada. Para obtener más información, consulta Exporta datos de tablas.

Para exportar datos de una partición individual, agrega el decorador de partición al nombre de la tabla. Por ejemplo, my_table$20160201.

También puedes exportar datos de las particiones __NULL__ y __UNPARTITIONED__ si agregas los nombres de las particiones al nombre de la tabla. Por ejemplo, my_table$__NULL__ o my_table$__UNPARTITIONED__.

Seguridad de la tabla particionada

El control de acceso para las tablas particionadas es el mismo que el de las tablas estándar. Para obtener más información, consulta Introducción a los controles de acceso a tablas.

Próximos pasos

Para obtener más información sobre cómo trabajar con tablas particionadas, consulta estas secciones: