Introducción a las tablas agrupadas

En este documento se proporciona una descripción general sobre la capacidad de agrupamiento en clústeres de las tablas en BigQuery.

Descripción general

Cuando creas una tabla agrupada en clústeres en BigQuery, los datos de la tabla se organizan de forma automática en función del contenido de una o más columnas en el esquema de la tabla. Las columnas que especificas se usan para colocar datos relacionados. Cuando agrupas una tabla en clústeres a través de varias columnas, el orden de las columnas que especifiques es importante. El orden de las columnas especificadas determina la clasificación de los datos.

El agrupamiento en clústeres puede mejorar el rendimiento de ciertos tipos de consultas, como las consultas que usan cláusulas de filtro y las que agregan datos. Cuando los datos se escriben en una tabla agrupada en clústeres a través de un trabajo de consulta o de carga, BigQuery ordena los datos mediante los valores de las columnas de agrupamiento en clústeres. Estos valores se usan con el fin de organizar los datos en diferentes bloques en el almacenamiento de BigQuery. Cuando envías una búsqueda que contiene una cláusula que filtra los datos en función de las columnas de agrupamiento en clústeres, BigQuery usa los bloques ordenados para eliminar análisis de datos innecesarios. Es posible que no veas una diferencia significativa en el rendimiento de las búsquedas entre una tabla agrupada y una no agrupada en clústeres si la tabla o la partición está por debajo de 1 GB.

De la misma manera, cuando envías una consulta que agrega datos en función de los valores de las columnas de agrupamiento en clústeres, el rendimiento mejora, ya que los bloques ordenados ubican filas con valores similares.

Cuándo usar el agrupamiento en clústeres

Tanto la partición como el agrupamiento en clústeres pueden mejorar el rendimiento y reducir el costo de la consulta.

Usa el agrupamiento en clústeres en las siguientes circunstancias:

  • Cuando no necesites garantías de costos estrictas antes de ejecutar la consulta.
  • Cuando necesites un nivel de detalle mayor que el que permite la partición. Si quieres obtener beneficios de agrupamiento en clústeres, además de los beneficios de la partición, puedes usar la misma columna para la partición y el agrupamiento en clústeres.
  • Por lo general, tus consultas usan filtros o agregación en varias columnas en particular.
  • La cardinalidad de la cantidad de valores en una columna o un grupo de columnas es grande.

Usa la partición en las siguientes circunstancias:

  • Deseas conocer los costos de consulta antes de que esta se ejecute. La reducción de la partición se realiza antes de que se ejecute la búsqueda, por lo que puedes obtener el costo de la búsqueda después de reducir la partición a través de una ejecución de prueba. La reducción del clúster se realiza cuando se ejecuta la búsqueda, por lo que el costo se conocerá una vez que finalice la búsqueda.

  • Cuando necesites administración a nivel de partición. Por ejemplo, deseas establecer un tiempo de vencimiento de partición, cargar datos en una partición específica o borrar particiones.

  • Cuando desees especificar cómo se realizará la partición de los datos y qué datos se incluirán en cada partición. Por ejemplo, deseas definir el nivel de detalle del tiempo o definir los rangos usados para particionar la tabla en la partición por rango de números enteros.

Usa el agrupamiento en clústeres en partición en las siguientes circunstancias:

  • La partición da como resultado una pequeña cantidad de datos por partición (aproximadamente menos de 1 GB).
  • La partición genera una gran cantidad de particiones más allá de los límites de las tablas particionadas.
  • La partición hace que tus operaciones de mutación modifiquen la mayoría de las particiones de la tabla con frecuencia (por ejemplo, cada pocos minutos).

También puedes combinar la partición con el agrupamiento en clústeres. Primero, se particionan los datos y, luego, las columnas de agrupamiento en clústeres agrupan los datos de cada partición en clústeres.

Cuando se consulta la tabla, la partición establece un límite superior para el costo de la búsqueda en función de la reducción de la partición. Puede haber otros ahorros en el costo de la búsqueda cuando esta se ejecuta, debido a la reducción del clúster.

Agrupa tablas particionadas en clústeres

En una tabla particionada, los datos se almacenan en bloques físicos, y cada uno de ellos contiene una partición de datos. Una tabla particionada mantiene estas propiedades a través de todas las operaciones que la modifiquen: trabajos de consulta, declaraciones de lenguaje de manipulación de datos (DML), declaraciones de lenguaje de definición de datos (DDL), trabajos de carga y trabajos de copia. Para ello, BigQuery debe mantener más metadatos que una tabla no particionada. A medida que se incrementa el número de particiones, aumenta la cantidad de sobrecarga de metadatos.

Si bien se deben mantener más metadatos, cuando se garantiza que los datos se particionan de forma global, BigQuery puede estimar con mayor precisión los bytes procesados por una consulta antes de que la ejecutes. Este cálculo de costos proporciona un límite superior en el costo final de la consulta.

En una tabla agrupada en clústeres, BigQuery ordena de forma automática los datos según los valores de las columnas de agrupamiento en clústeres y los organiza en bloques de almacenamiento de tamaño ideal. Puedes lograr una clasificación más detallada si creas una tabla agrupada en clústeres y particionada. Una tabla agrupada en clústeres mantiene las propiedades de clasificación en el contexto de cada operación que la modifica. Como resultado, es posible que BigQuery no pueda estimar con precisión los bytes que se procesaron en la consulta o los costos de la consulta. Cuando se borran bloques de datos durante una consulta, BigQuery proporciona una reducción de los costos de la consulta basada en el mejor esfuerzo.

Reagrupamiento en clústeres automático

A medida que se agregan datos a una tabla agrupada en clústeres, los datos recién insertados se pueden escribir en bloques que contengan rangos de claves que se superpongan con los de bloques anteriores. Estas claves superpuestas debilitan la propiedad de clasificación de la tabla.

A fin de mantener las características de rendimiento de una tabla agrupada en clústeres, BigQuery realiza un reagrupamiento en clústeres automático en segundo plano para restablecer la propiedad de clasificación de la tabla. En las tablas particionadas, el agrupamiento en clústeres se mantiene para los datos dentro del alcance de cada partición.

Cuotas y límites de tablas agrupadas en clústeres

Cuando utilizas la función de tabla agrupada con una tabla particionada, estás sujeto a los límites de las tablas particionadas.

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

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

Precios de las tablas agrupadas

Cuando creas y usas tablas agrupadas en BigQuery, se te cobra según la cantidad de datos almacenados en las tablas y las consultas que ejecutas en ellos.

Muchas operaciones en las tablas agrupadas en clústeres son gratuitas, como la carga de datos en tablas agrupadas en clústeres, la copia de tablas y particiones, y la exportación de datos. 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.

Para obtener ejemplos detallados de precios de tablas agrupadas, consulta la página Precios.

Seguridad de las tablas

Para controlar el acceso a las tablas en BigQuery, consulta Introducción a los controles de acceso a las tablas.

Próximos pasos