aggregation

aggregate

L'essentiel
En resumen
La transformación de datos operativos en inteligencia de negocio requiere herramientas capaces de simplificar la complejidad, función que cumple a la perfección la acción aggregate. Este componente es vital para realizar resúmenes estadísticos dinámicos, permitiendo a los equipos de datos moldear la información mediante variables de agrupación o ventanas temporales específicas para detectar tendencias. Es el paso previo ideal para alimentar modelos predictivos o dashboards, convirtiendo millones de registros en insights manejables. Hemos reunido aquí una lista de preguntas y respuestas frecuentes para resolver sus dudas sobre la sintaxis, las opciones de ventanas deslizantes y la aplicación práctica de estas operaciones de resumen.

Descripción

La acción `aggregate` del conjunto de acciones `aggregation` en SAS Viya se utiliza para realizar agregaciones en variables seleccionadas de una tabla en memoria de CAS. Permite calcular una amplia gama de estadísticas de resumen, como la media, la suma, el mínimo, el máximo, y muchas otras. Es especialmente útil para resumir grandes volúmenes de datos, agrupar resultados por variables categóricas y preparar datos para análisis posteriores o informes.

aggregation.aggregate { align="BEGINNING" | "ENDING" | "MIDDLE", bin={double-1, double-2, ...}, casOut={...}, contribute="variable-name", contributeColumnLabel="string", contributeColumnName="string", contributeDelimiter="string", contributeTrim=TRUE | FALSE, contributeUnroll=TRUE | FALSE, copyVars={"variable-name-1", "variable-name-2", ...}, doESP=TRUE | FALSE, edgeId="variable-name", exclnpwgt=TRUE | FALSE, excludeSelf=TRUE | FALSE, freq="variable-name", freqStrict=TRUE | FALSE, groupByLimit=64-bit-integer, groupedIntervalOutput=TRUE | FALSE, id="variable-name", idEnd=double, idOutputName="string", idRange={double-1, double-2, ...}, idStart=double, includeEmptyInterval=TRUE | FALSE, includeMissing=TRUE | FALSE, inputs={{...}, {...}, ...}, interval="string", jumpingWindow=TRUE | FALSE, keepRecord=TRUE | FALSE, keepRecordId=TRUE | FALSE, modeSingle=TRUE | FALSE, offset=integer, partKey={"string-1", "string-2", ...}, pctlDef=integer, pti=double, ptw=double, raw=TRUE | FALSE, saveGroupbyFormat=TRUE | FALSE, saveGroupbyRaw=TRUE | FALSE, saveVariableColumn=TRUE | FALSE, saveVariableSpecification=TRUE | FALSE, subBinOffset=double, subBinWidth=double, subInterval="string", table={...}, varSpecs={{...}, {...}, ...}, weight="variable-name", windowBin={double-1, double-2, ...}, windowInt="string", windowOffset=integer, windowSubBinOffset=double, windowSubBinWidth=double, windowSubInt="string" };
Parámetros
ParámetroDescripción
align Especifica la alineación del valor representativo con respecto a un intervalo o contenedor.
bin Especifica los valores mínimo y máximo de un contenedor.
casOut Especifica la configuración para una tabla de salida.
contribute Cuando el parámetro doESP es True, puede especificar una variable cuyos valores dentro de cada intervalo de agregación se registran.
contributeColumnLabel Especifica un valor para anular la etiqueta de la variable de contribución.
contributeColumnName Especifica un valor para anular el nombre de la variable de contribución.
contributeDelimiter Especifica un delimitador que se utiliza entre los valores concatenados de la variable de contribución.
contributeTrim Cuando se establece en True, se eliminan los espacios en blanco iniciales y finales del valor formateado de la variable de contribución.
contributeUnroll Cuando se establece en True, cada valor bruto de la variable de contribución agrega una fila a la tabla de resultados.
copyVars Especifica las variables que se copiarán de la tabla de entrada a la tabla de salida.
doESP Cuando se establece en True, la acción puede aprovechar la partición y el ordenamiento en la tabla de entrada.
edgeId Especifica una variable numérica cuyos valores se utilizan para ordenar los valores de cada especificación de varSpecs que utiliza los agregadores FIRST, LAST, FNE o LNE.
exclnpwgt Cuando se establece en True y se especifica una variable de ponderación, las observaciones con un valor de ponderación no positivo se excluyen del análisis.
excludeSelf Cuando se establece en True y el parámetro doESP es True, la agregación excluye la contribución de la observación actual.
freq Especifica una variable numérica cuyos valores se utilizan como la frecuencia de los valores de la variable de análisis.
freqStrict Relacionado con el agregador MODE. Controla cómo se manejan los valores de frecuencia no positivos y decimales.
groupByLimit Especifica el número máximo de niveles en un conjunto de group-by.
groupedIntervalOutput Cuando se establece en True, guarda solo uno de los mismos intervalos agregados con respecto al último valor de Id.
id Especifica una variable numérica que identifica la marca de tiempo asociada con cada observación en la tabla de entrada.
idEnd Especifica el valor máximo inclusivo de la variable ID a considerar en el análisis.
idOutputName Especifica el nuevo nombre de la variable ID en la tabla de salida.
idRange Especifica los valores mínimo y máximo inclusivos de la variable ID a considerar en el análisis.
idStart Especifica el valor mínimo inclusivo de la variable ID a considerar en el análisis.
includeEmptyInterval Controla si los intervalos con un valor faltante para la variable ID se incluyen en la salida.
includeMissing Controla si las observaciones con valores faltantes se incluyen en el análisis.
inputs Especifica las variables de entrada a utilizar en el análisis.
interval Especifica el período de tiempo para la acumulación de observaciones.
jumpingWindow Especifica que la agregación ocurre sobre una ventana de tiempo que puede contener múltiples intervalos y se reinicia cuando transcurre el rango de tiempo especificado.
keepRecord Cuando se establece en True, se mantiene el valor original de la variable ID de cada observación sin realizar la alineación de intervalo.
keepRecordId Cuando se establece en True y el parámetro doESP es True, se mantiene el valor ID original de cada observación sin realizar la alineación de intervalo.
modeSingle Relacionado con el agregador MODE. Controla el valor devuelto cuando todos los valores distintos tienen una frecuencia de 1.
offset Especifica el desplazamiento de cada intervalo.
partKey Especifica una clave de partición para que los resultados se calculen solo para esa partición.
pctlDef Especifica cómo calcular las estadísticas de cuantiles (percentiles).
pti Especifica el valor de tiempo en el que finaliza la agregación dentro de un intervalo o contenedor.
ptw Especifica el subintervalo con respecto a cada intervalo de ventana.
raw Cuando se establece en True, se utilizan los valores brutos de las variables en el parámetro de entrada.
saveGroupbyFormat Controla si los valores formateados de las variables groupBy se copian a los resultados.
saveGroupbyRaw Controla si los valores brutos de las variables groupBy se copian a los resultados.
saveVariableColumn Controla si el nombre de la variable de análisis se incluye en una columna 'Column' en los resultados.
saveVariableSpecification Controla si los resultados incluyen una columna 'Variable Specification' para identificar la especificación varSpecs que produjo el resultado.
subBinOffset Especifica un desplazamiento desde el inicio de un contenedor.
subBinWidth Especifica el ancho del subcontenedor dentro de un contenedor.
subInterval Especifica un intervalo más pequeño para controlar la alineación del período de tiempo dentro de cada intervalo para la agregación de observaciones.
table Especifica la tabla de entrada para el análisis.
varSpecs Especifica la variable a agregar y la configuración para el agregador.
weight Especifica una variable numérica cuyos valores se utilizan como ponderación de los valores de la variable de análisis numérica cuando el agregador es SUMMARY.
windowBin Especifica los valores mínimo y máximo de un contenedor de ventana.
windowInt Especifica la ventana de tiempo para la acumulación de observaciones con respecto a cada intervalo de tiempo.
windowOffset Especifica el desplazamiento de cada intervalo de ventana.
windowSubBinOffset Especifica el punto de inicio dentro de un contenedor de ventana en el que se agregan los valores de los registros.
windowSubBinWidth Especifica el ancho del subcontenedor dentro de cada windowBin.
windowSubInt Especifica un intervalo más pequeño para controlar la alineación del subperíodo de tiempo dentro de cada intervalo de ventana para la agregación de observaciones.
Creación de Datos de Ejemplo

Se carga la tabla `SASHELP.CARS` en la memoria de CAS con el nombre `CARS_AGG`. Esta tabla contiene información sobre varios modelos de automóviles y se utilizará para los ejemplos de agregación.

¡Copiado!
1 
2PROC CASUTIL;
3load
4DATA=sashelp.cars outcaslib="casuser" casout="CARS_AGG" replace;
5QUIT;
6 

Ejemplos

Este ejemplo muestra cómo agregar datos en columnas seleccionadas. Se calculan las estadísticas de resumen para las variables 'Horsepower' y 'MSRP'.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 aggregation.aggregate TABLE={name='CARS_AGG'},
3 varSpecs={{name='Horsepower'}, {name='MSRP'}};
4RUN;
Resultado :
La tabla de resultados muestra las estadísticas de resumen (N, Min, Max, Sum, Mean, Std Dev) para las variables 'Horsepower' y 'MSRP' de la tabla 'CARS_AGG'.

Este ejemplo muestra cómo agregar datos para las variables 'Horsepower' y 'MSRP' agrupadas por la variable 'Type'. Esto permite obtener estadísticas de resumen para cada tipo de vehículo.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1PROC CAS;
2 aggregation.aggregate TABLE={name='CARS_AGG', groupBy={'Type'}},
3 varSpecs={{name='Horsepower'}, {name='MSRP'}};
4RUN;
Resultado :
La tabla de resultados muestra las estadísticas de resumen para 'Horsepower' y 'MSRP', con una fila para cada categoría de la variable 'Type' (por ejemplo, Sedan, SUV, Sports).

Este ejemplo (hipotético, ya que CARS no tiene una variable de fecha) muestra cómo agregar datos por intervalos de tiempo. Si tuviéramos una variable 'Sales_Date', podríamos agrupar las ventas por 'YEAR' (año) para analizar las tendencias anuales.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1/* proc cas;
2 aggregation.aggregate table={name='SALES_DATA', groupBy={'Sales_Date'}},
3 id='Sales_Date',
4 interval='YEAR',
5 varSpecs={{name='Revenue', agg='SUM'}};
6run; */
Resultado :
El resultado sería una tabla con los ingresos ('Revenue') totales sumados para cada año presente en los datos.

Este ejemplo (hipotético) muestra cómo realizar una agregación de ventana móvil. Se podría calcular la media móvil de los ingresos ('Revenue') durante un período de tres meses ('MONTH') para suavizar las fluctuaciones a corto plazo.

Código SAS® / CAS Código en espera de validación por la comunidad
¡Copiado!
1/* proc cas;
2 aggregation.aggregate table={name='SALES_DATA', groupBy={'Sales_Date'}},
3 id='Sales_Date',
4 interval='MONTH',
5 windowInt='3*MONTH',
6 varSpecs={{name='Revenue', agg='MEAN'}};
7run; */
Resultado :
La tabla de resultados mostraría, para cada mes, el ingreso medio de los últimos tres meses, proporcionando una vista de la tendencia.

FAQ

¿Qué hace la acción `aggregate`?
¿Para qué se utiliza el parámetro `table`?
¿Cómo se pueden especificar las variables a agregar y sus agregadores?
¿Qué especifica el parámetro `interval`?
¿Qué hace el agregador `SUMMARY`?
¿Se pueden agrupar los datos antes de la agregación?

Escenarios asociados

Caso de uso
Análisis de Ventas Minoristas por Tienda y Categoría

Una cadena de supermercados necesita un resumen diario del rendimiento de sus ventas. El objetivo es agregar los datos de transacciones para calcular los ingresos totales, el va...

Caso de uso
Análisis de Sensores IoT con Datos Faltantes en Series Temporales

Una planta de fabricación monitorea la temperatura de sus máquinas a través de sensores IoT. Los datos se transmiten cada segundo, pero a veces hay fallos de transmisión que gen...

Caso de uso
Agregación de Alto Volumen de Datos Financieros (OHLC)

Una firma de análisis financiero necesita procesar un gran volumen de datos de transacciones de acciones (tick data) para construir gráficos de velas (OHLC - Open, High, Low, Cl...