Organiza tus páginas con colecciones Guarda y categoriza el contenido según tus preferencias.

Introducción a las tablas agrupadas

Las tablas agrupadas en BigQuery son tablas que tienen un orden de clasificación de columnas definido por el usuario mediante columnas agrupadas. Las tablas agrupadas pueden mejorar el rendimiento de las consultas y reducir los costos.

En BigQuery, una columna agrupada es una propiedad de tabla definida por el usuario que ordena los bloques de almacenamiento según los valores de las columnas agrupadas. Los bloques de almacenamiento tienen un tamaño adaptable en función del tamaño de la tabla. Una tabla agrupada en clústeres mantiene las propiedades de clasificación en el contexto de cada operación que la modifica. Las consultas que filtran o agregan según las columnas agrupadas solo analizan los bloques relevantes en función de las columnas agrupadas en lugar de la tabla completa o la partición de tabla. Como resultado, es posible que BigQuery no pueda estimar con precisión los bytes que se procesarán por la consulta o los costos de la consulta, pero intenta reducir los bytes totales en la ejecución.

Cuando agrupas una tabla con varias columnas, el orden de las columnas determina qué columnas tienen prioridad cuando BigQuery ordena y agrupa los datos en bloques de almacenamiento. En el siguiente ejemplo, se compara el diseño de bloques de almacenamiento lógico de una tabla no agrupada con el diseño de tablas agrupadas que tienen una o varias columnas agrupadas:

BigQuery ordena los datos en tablas agrupadas para mejorar el rendimiento de las consultas.

Cuando consultas una tabla agrupada, no recibes una estimación exacta de costos de consulta antes de la ejecución de la consulta, porque no se conoce la cantidad de bloques de almacenamiento que se analizarán antes de la ejecución de la consulta. El costo final se determina después de que se completa la ejecución de la consulta y se basa en los bloques de almacenamiento específicos que se analizaron.

Cuándo usar el agrupamiento en clústeres

Puedes considerar la agrupación en las siguientes situaciones:

  • Por lo general, las consultas filtran columnas específicas. La agrupación acelera las consultas porque la consulta solo analiza los bloques que coinciden con el filtro.
  • Tus consultas filtran las columnas que tienen muchos valores distintos (cardinalidad alta). El agrupamiento acelera estas consultas porque le proporciona a BigQuery metadatos detallados sobre dónde obtener los datos de entrada.
  • No necesitas estimaciones de costos estrictas antes de la ejecución de la consulta.

Puedes considerar alternativas al agrupamiento en las siguientes circunstancias:

  • Necesitas una estimación estricta del costo de la consulta antes de ejecutar una consulta. El costo de las consultas en las tablas agrupadas solo se puede determinar después de ejecutar la consulta.
  • Las tablas de consultas tienen un tamaño menor que 1 GB. Por lo general, el agrupamiento no ofrece ganancias de rendimiento significativas en tablas de menos de 1 GB.

Debido a que el agrupamiento aborda la forma en que se almacena una tabla, suele ser una buena primera opción para mejorar el rendimiento de las consultas. Si necesitas métodos diferentes o adicionales, puedes considerar la partición de la tabla.

Al igual que el agrupamiento, la partición usa columnas de partición definidas por el usuario para especificar cómo se particionan los datos y qué datos se almacenan en cada partición. A diferencia del agrupamiento, la partición proporciona estimaciones detalladas de los costos de las consultas antes de ejecutar una consulta. Al igual que el agrupamiento, la partición no siempre reduce el volumen de datos que se analizan en una consulta. El volumen depende de lo que establezcas como las columnas de partición y cómo se usan esas columnas como filtros de consulta durante la ejecución.

Otro método es combinar el agrupamiento y la partición de tablas. En este enfoque, primero debes segmentar los datos en particiones y, luego, agruparlos en clústeres dentro de cada partición según las columnas de agrupamiento en clústeres. Para obtener más información, consulta Tablas agrupadas y particionadas en este documento.

Tipos y orden de columnas agrupadas

En esta sección, se describen los tipos de columnas y cómo funciona el orden de las columnas en el agrupamiento de tablas.

Tipos de columnas agrupadas

Las columnas agrupadas deben ser de nivel superior, no se deben repetir y deben ser de uno de los tipos siguientes:

  • STRING
  • INT64
  • NUMERIC
  • BIGNUMERIC
  • DATE
  • DATETIME
  • TIMESTAMP
  • BOOL
  • GEOGRAPHY

Para obtener más información sobre los tipos de datos, consulta Tipos de datos de GoogleSQL.

Orden de las columnas agrupadas

El orden de las columnas agrupadas afecta el rendimiento de las consultas. Para beneficiarse del agrupamiento, el orden del filtro de consulta debe coincidir con el orden de las columnas agrupadas y debe incluir al menos la primera columna agrupada.

En el siguiente ejemplo, la tabla de órdenes se agrupa mediante un orden de clasificación de columnas de Order_Date, Country y Status. Una consulta que filtra Order_Date y Country está optimizada para el agrupamiento en clústeres, pero una consulta que filtra solo Country y Status no está optimizada. Para optimizar tus resultados de agrupamiento, debes filtrar desde las columnas agrupadas a partir de la primera columna agrupada.

Las consultas en tablas agrupadas deben incluir columnas agrupadas en orden a partir de la primera.

Combina tablas agrupadas y particionadas

Puedes combinar el agrupamiento de tablas con la partición de tablas a fin de lograr un orden detallado para una mayor optimización de las consultas.

En una tabla particionada, los datos se almacenan en bloques físicos, y cada uno de ellos contiene una partición de datos. Cada tabla particionada mantiene varios metadatos sobre las propiedades de orden en todas las operaciones que la modifican. Los metadatos permiten que BigQuery calcule con mayor precisión un costo de consulta antes de ejecutar la consulta. Sin embargo, la partición requiere que BigQuery mantenga más metadatos que con una tabla sin particiones. A medida que aumenta la cantidad de particiones, aumenta la cantidad de metadatos que se mantendrán.

Cuando creas una tabla agrupada y particionada, puedes lograr una clasificación más detallada, como se muestra en el siguiente diagrama:

Compara tablas que no están agrupadas ni particionadas con tablas que están agrupadas y particionadas.

Reagrupamiento automático

A medida que se agregan datos a una tabla agrupada, los datos nuevos se organizan en bloques, que pueden crear bloques de almacenamiento nuevos o actualizar bloques existentes. La optimización de bloques es necesaria para un rendimiento óptimo de las consultas y el almacenamiento, ya que es posible que los datos nuevos no se agrupen con datos existentes que tienen los mismos valores de agrupamiento.

Para mantener las características de rendimiento de una tabla agrupada, BigQuery realiza un reagrupamiento automático en segundo plano. En las tablas particionadas, el agrupamiento se mantiene para los datos dentro del alcance de cada partición.

Limitaciones

  • Solo se admite GoogleSQL para consultar tablas agrupadas y escribir resultados de consultas en tablas agrupadas.
  • Solo puedes especificar hasta cuatro columnas de agrupamiento. Si necesitas columnas adicionales, considera combinar la agrupación con la partición.
  • Cuando se usan columnas de tipo STRING para el agrupamiento, BigQuery usa solo los primeros 1,024 caracteres a fin de agrupar los datos. Los valores de las columnas pueden tener más de 1,024 caracteres.
  • Si modificas una tabla existente no agrupada para agruparla, los datos existentes no se agruparán. Solo se almacenan datos nuevos con las columnas agrupadas y están sujetos al reagrupamiento automático.

Cuotas y límites de las tablas agrupadas

BigQuery restringe el uso de los recursos compartidos de Google Cloud con cuotas y límites, incluidas las limitaciones en ciertas operaciones de tabla o la cantidad de trabajos que se ejecutan en un día.

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. Para obtener más información sobre las cuotas de trabajo que se aplican a tus tablas, consulta Trabajos en "Cuotas y límites".

Precios de las tablas agrupadas en clústeres

Cuando creas y usas tablas agrupadas en BigQuery, el cobro se basa en la cantidad de datos almacenados en las tablas y en las consultas que ejecutas en ellos. Para obtener más información, consulta Precios de almacenamiento y Precios de consulta.

Al igual que otras operaciones de tablas de BigQuery, las operaciones de tabla agrupadas aprovechan las operaciones gratuitas de BigQuery, como la carga por lotes, la copia de tablas, el reagrupamiento automático y la exportación de datos. Estas operaciones están sujetas a las cuotas y los límites de BigQuery. Para obtener información sobre las operaciones gratuitas, consulta Operaciones gratuitas.

Para obtener un ejemplo detallado de precios de tablas agrupadas, visita Estima los costos de almacenamiento y consultas.

Seguridad de las tablas

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

¿Qué sigue?