Introducción a las tablas particionadas

En esta página, se proporciona una descripción general de la compatibilidad de tablas de partición en BigQuery.

Una tabla de partición es una tabla especial que se divide en segmentos, denominados particiones, que facilitan la administración y la consulta de tus datos. Dividir una tabla grande en particiones más pequeñas puede mejorar el rendimiento de la consulta. Además, puedes controlar los costos si reduces el número de bytes que lee una consulta.

Hay dos tipos de partición de tablas en BigQuery:

  • Tablas de partición por tiempo de transferencia: tablas de partición según la fecha de transferencia (carga) o la fecha de llegada de los datos.
  • Tablas particionadas: tablas en las que se hace una partición según una columna TIMESTAMP o DATE.

Tabla de partición por tiempo de transferencia

Cuando creas una tabla de partición por tiempo de transferencia, BigQuery carga los datos en particiones diarias basadas en fechas que reflejan la transferencia de datos o la fecha de llegada de forma automática. Los identificadores de sufijo y pseudocolumna te permiten rectificar (reemplazar) y redireccionar los datos a las particiones de un día específico.

Las tablas de partición por tiempo de transferencia incluyen una pseudocolumna llamada _PARTITIONTIME, que, a su vez, contiene una marca de tiempo basada en la fecha para los datos subidos en la tabla. Las consultas en tablas de partición por tiempo pueden restringir la lectura de datos mediante el suministro de filtros _PARTITIONTIME que representan la ubicación de una partición. La consulta lee todos los datos de la partición especificada, pero el filtro del predicado _PARTITIONTIME restringe la cantidad de particiones analizadas.

Cuando creas tablas de partición por tiempo de transferencia, las particiones tienen la misma definición de esquema que la tabla. Si necesitas subir datos en una partición con un esquema distinto al de la tabla, debes actualizar el esquema de la tabla antes de subir los datos. De forma alternativa, puedes usar las opciones de actualización de esquema para actualizar el esquema de la tabla en un trabajo de carga o de consulta.

Tablas de partición

BigQuery también permite tablas de partición. Las tablas de partición te permiten vincular el esquema de partición a una columna TIMESTAMP o DATE específica. Los datos escritos en una tabla de partición se entregan a la partición apropiada de forma automática según el valor de la fecha (expresado en UTC) en la columna de partición.

Las tablas de partición no necesitan una pseudocolumna _PARTITIONTIME. Las consultas en tablas de partición pueden especificar filtros de predicado según la columna de partición para reducir la cantidad de datos analizados.

Cuando creas tablas de partición, se crean dos particiones especiales:

  • La partición __NULL__ representa filas con valores NULL en la columna de partición.
  • La partición __UNPARTITIONED__ representa datos que existen fuera del rango de fechas permitido.

Con la excepción de las particiones __NULL__ y __UNPARTITIONED__, todos los datos en la columna de partición coinciden con la fecha del identificador de la partición. Esto permite que una consulta determine qué particiones no contienen datos que satisfagan las condiciones del filtro. Las consultas que filtran datos en la columna de partición pueden restringir los valores y reducir las particiones innecesarias por completo.

Partición en comparación con fragmentación

Como alternativa a las tablas de partición, puedes fragmentar las tablas con un enfoque de nombres basado en el tiempo como [PREFIX]_YYYYMMDD. Esto se conoce como la creación de tablas fragmentadas por fecha. Con SQL estándar o SQL heredado, puedes especificar una consulta con un operador UNION para limitar las tablas que analiza la consulta.

Las tablas de partición funcionan mejor que las tablas fragmentadas por fecha. Cuando creas tablas llamadas por fecha, BigQuery debe mantener una copia del esquema y los metadatos para cada tabla llamada por fecha. Además, cuando las tablas llamadas por fecha no se usan, BigQuery puede necesitar verificar los permisos para cada tabla consultada. Esta práctica también aumenta la sobrecarga de la consulta y tiene un impacto en su rendimiento. Se recomienda usar tablas de partición en lugar de tablas fragmentadas por fecha.

Compara opciones de partición

En la siguiente tabla, se comparan tablas fragmentadas y tablas de partición.

Función Tablas fragmentadas Tabla de partición por tiempo de transferencia Tablas de partición
Método de partición Ninguno: fragmentar tablas y consultarlas con un operador UNION puede simular una partición. Partición basada en la fecha de llegada o transferencia de los datos. Se puede hacer referencia a la información de partición con una pseudocolumna. Partición basada en datos en una columna TIMESTAMP o DATE especificada.
Identificadores de partición Ninguno Puedes usar cualquier fecha válida entre 01/01/0001 y 31/12/9999, pero las declaraciones DML no pueden hacer referencia a las fechas anteriores a 01/01/1970 o posteriores a 31/12/2159. Una entrada válida de la columna DATE o TIMESTAMP enlazada. Por el momento, los valores de fecha anteriores a 01/01/1970 y posteriores a 31/12/2159 se colocan en una partición UNPARTITIONED compartida. Los valores NULL residen en una partición NULL explícita.
Limitación de los datos analizados Solo se hace referencia a los fragmentos que necesitas y se limitan los datos mediante la exclusión de las columnas innecesarias de la consulta. Usa la pseudocolumna _PARTITIONTIME para reducir las particiones. Usa filtros de predicado en la columna de partición.
Cantidad de particiones La cantidad de tablas no está restringida, pero las consultas solo pueden hacer referencia hasta a 1,000 tablas. Hasta 4,000 particiones. Hasta 4,000 particiones.
Operaciones de actualización Tienes un límite de 1,000 actualizaciones por día. Una operación individual puede confirmar una sola partición. La última partición (de manera predeterminada) o una especificada con un decorador de partición como [TABLE]$[DATE]. Una operación individual puede confirmar datos hasta en 2,000 particiones distintas.
Inserciones de transmisión Un búfer global para la tabla. Mediante el uso de sufijos de partición, puedes transmitir a particiones dentro de los últimos 31 días pasados y 16 días futuros en relación con la fecha actual, según la hora UTC actual. Puedes transmitir datos entre 1 año en el pasado y 6 meses en el futuro. Los datos fuera de este rango se rechazan. Cuando los datos se transmiten, los datos entre 7 días en el pasado y 3 días en el futuro se colocan en el búfer de transmisión y, luego, se extraen a las particiones correspondientes. Los datos fuera de este período (pero dentro del rango de 1 año y 6 meses) se colocan en la partición UNPARTITIONED. Cuando hay suficientes datos no particionados, se cargan en las particiones correspondientes.
Evaluación de zona horaria Definido por la semántica del usuario. UTC UTC

Cuotas y límites de tablas de partición

Las tablas de partición tienen límites definidos en BigQuery.

Las cuotas y los límites se aplican a los diferentes tipos de trabajos que puedes ejecutar en las tablas de partición, incluidos los siguientes:

Para obtener más información sobre todas las cuotas y límites, consulta Cuotas y límites.

Precios de tablas de partición

Cuando creas y usas tablas de partición en BigQuery, el cobro se basa en la cantidad de datos almacenados en las particiones y en las consultas que ejecutas en ellos.

Muchas operaciones en tablas de partición son gratuitas, como subir datos a particiones, copiarlas y exportar datos desde ellas. A pesar de esto, estas operaciones están sujetas a las Cuotas y límites de BigQuery. Para obtener información sobre todas las operaciones gratuitas, consulta Operaciones gratuitas en la página de precios.

Próximos pasos

¿Te ha resultado útil esta página? Enviar comentarios:

Enviar comentarios sobre...

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