Views Aggregator Plus
Un plugin de estilo para Views que realiza agregación post-consulta en los resultados de Views, ofreciendo funciones de agregación que no son posibles con Views nativo o la agregación a nivel de base de datos.
views_aggregator
Install
composer require 'drupal/views_aggregator:^2.1'
composer require 'drupal/views_aggregator:^2.0'
Overview
Views Aggregator Plus extiende Drupal Views con potentes capacidades de agregación post-consulta. A diferencia de la agregación nativa de Views que depende de operaciones a nivel de base de datos, este módulo opera sobre el conjunto de resultados después de que la consulta de base de datos se ha ejecutado. Esta diferencia arquitectónica permite funciones de agregación que de otro modo serían imposibles.
El módulo proporciona un plugin de estilo de tabla especializado llamado "Table with aggregation options" que permite a los administradores agrupar y comprimir filas de resultados basándose en valores idénticos en una columna mientras aplican varias funciones de agregación a otras columnas. Por ejemplo, puede agrupar datos de ventas por industria mientras suma valores de facturación y cuenta empresas.
Las capacidades clave incluyen enumeración de miembros de grupo (listando todos los elementos en un grupo), conteo (creando histogramas textuales mostrando recuentos de valores), filtrado de filas usando expresiones regulares, agregación a través de columnas completas con totales mostrados en encabezados/pies de página/títulos, y la capacidad de añadir funciones de agregación personalizadas. El módulo soporta subtotales por grupo sin compresión, permitiendo mostrar filas originales seguidas de subtotales calculados.
El módulo se integra bien con envíos de Webform, campos de Commerce 2.x (incluyendo múltiples monedas), y soporta sintaxis Twig en campos "Global: Custom text" para operaciones matemáticas y formateo.
Features
- Agregación post-consulta que opera sobre resultados renderizados en lugar de valores crudos de base de datos
- Funcionalidad de agrupar y comprimir para colapsar múltiples filas que comparten el mismo valor en filas agregadas únicas
- Funciones de agregación matemática: COUNT, SUM, AVERAGE, MEDIAN, MINIMUM, MAXIMUM, RANGE
- Funciones de agregación de cadenas: Enumerate (listar valores con ordenación opcional y deduplicación), Tally members (recuentos de valores en formato 'Valor (n)'), Display first member
- Filtrar filas usando expresiones regulares para excluir resultados que no coinciden
- Agregación de columnas con totales mostrados en encabezado, pie de página o título de tabla
- Modo de subtotales que muestra resultados agregados después de cada grupo sin comprimir filas
- Opción de agrupación insensible a mayúsculas/minúsculas para la función Group and compress
- Soporte para campos de datos de envío de Webform
- Soporte para campos de precio de Commerce 2.x incluyendo múltiples monedas en columnas únicas
- Integración con tema Bootstrap con opciones de estilo de tabla (bordered, condensed, hover, striped)
- Soporte de sintaxis Twig en campos Global: Custom text con preservación del filtro number_format()
- Columnas ordenables por clic en resultados agregados
- API de función de agregación personalizada via hook_views_aggregation_functions_info()
- Soporte de parámetros para funciones (separadores, expresiones regulares, valores de precisión)
Use Cases
Informe de Ventas por Industria
Agrupar datos de ventas por sector industrial, mostrando ingresos totales (SUM), número de empresas (COUNT) y tamaño promedio de transacción (AVERAGE) por industria. Mostrar totales de columna en el pie de tabla mostrando cifras generales.
Resultados de Encuestas con Conteos
Analizar respuestas de encuestas agrupando por categorías de preguntas y usando TALLY para mostrar la distribución de respuestas en formato 'Respuesta (cantidad)', facilitando ver qué opciones fueron más populares.
Informe de Inventario con Rangos
Agrupar productos por categoría y mostrar rangos de precios (MIN - MAX) y rangos de cantidad por categoría, con rangos generales en el pie de página.
Historial de Pedidos de Clientes con Enumeración
Agrupar pedidos por cliente y enumerar todos los productos comprados en una sola celda, ordenados alfabéticamente con duplicados eliminados, proporcionando una visión rápida de lo que cada cliente ha comprado.
Informe Financiero con Subtotales
Mostrar filas de transacciones detalladas agrupadas por categoría de cuenta, con filas de subtotales después de cada categoría mostrando sumas, mientras mantiene visibles las filas de detalle originales. La fila de totales finales muestra cifras generales.
Resultados Filtrados por Patrón
Usar la función Filter rows con una expresión regular para excluir datos de prueba o entradas internas de los informes, mostrando solo filas que coinciden con patrones específicos como números de orden de producción.
Informe de Commerce Multi-Moneda
Agregar totales de pedidos de Commerce donde diferentes pedidos usan diferentes monedas, con el módulo calculando automáticamente totales separados por moneda y mostrándolos con formato apropiado.
Estadísticas de Envíos de Webform
Analizar envíos de Webform agrupando por un campo de selección y calculando estadísticas (conteo, puntuaciones promedio, etc.) sobre campos de datos numéricos de envío.
Tips
- Siempre asigne 'Group and compress' a exactamente un campo cuando use otras funciones de agregación de grupo (excepto Filter rows que funciona independientemente)
- Use el campo Parameter para personalizar separadores - el predeterminado es '<br/>' para Enumerate y Tally, ' - ' para Range
- Para agrupación insensible a mayúsculas/minúsculas, ingrese 'case-insensitive' como parámetro para la función Group and compress
- La agregación de columna puede usarse independientemente de la agregación de grupo para añadir totales sin agrupar filas
- Cuando use Global: Custom text con sintaxis Twig, coloque number_format() como el último filtro para preservar el formato en resultados agregados
- El campo Counter (Global: Counter) se excluye automáticamente de la ordenación por clic ya que sus valores se recalculan después de ordenar
- Para campos de precio de Commerce con múltiples monedas, el módulo calcula automáticamente totales separados por moneda
Technical Details
Hooks 2
hook_views_aggregation_functions_info
Define funciones de agregación de grupo y columna personalizadas. Cada función se identifica por su nombre de función PHP y puede proporcionar tanto agregación a nivel de grupo (aplicada al agrupar filas) como agregación a nivel de columna (aplicada para crear totales).
hook_views_aggregation_functions_info_alter
Modifica definiciones de funciones de agregación existentes. Use esto para modificar etiquetas, deshabilitar funciones o cambiar configuraciones de renderizado de funciones de agregación existentes.
Troubleshooting 5
Intente cambiar el formateador de campo a 'Plain text' en lugar de 'Default'. Algunos tipos de campo tienen formateadores que no funcionan bien con valores agregados.
Las columnas agregadas son ordenables por clic, pero la ordenación ocurre sobre los valores agregados. Para columnas numéricas, asegúrese de que los datos subyacentes sean numéricos. El módulo compara valores numéricamente cuando es posible (así '$1,000' viene después de '$9.99').
Cuando aplica dos funciones de agregación al mismo campo, la segunda función opera sobre los resultados de la primera, no sobre los datos originales. Considere usar campos separados si necesita cálculos independientes.
Deshabilite la agregación nativa de Views en la sección Advanced (establezca 'Use aggregation: No'). Views Aggregator Plus no está diseñado para funcionar junto con la función de agregación incorporada de Views.
Cuando 'Column aggregation row applies to entire result set' está seleccionado con un paginador habilitado, el módulo debe obtener todos los resultados para calcular totales precisos. Para conjuntos de datos muy grandes, considere usar 'applies to current page' u optimizar los filtros de su View.