Transformación Agregado
La transformación Agregado aplica funciones de agregado, como Average, a los valores de columnas y copia los resultados en la salida de la transformación. Además de las funciones de agregado, la transformación proporciona la cláusula GROUP BY, que se puede usar para especificar los grupos en los que se debe realizar el agregado.
La transformación Agregado se configura en los niveles de transformación, salida y columna.
En el nivel de la transformación, se configura la transformación Agregado a efectos de rendimiento especificando los valores siguientes:
El número de grupos que esperan obtenerse como resultado de la operación GROUP BY.
El número de valores distintos que esperan obtenerse como resultado de la operación COUNT DISTINCT.
El porcentaje en el que la memoria se puede ampliar durante la agregación.
La transformación Agregado también se puede configurar para generar una advertencia en lugar de un error cuando el valor de un divisor es cero.
En el nivel de salida, la transformación Agregado se configura a efectos de rendimiento especificando el número de grupos que se esperan como resultado de una operación GROUP BY. La transformación Agregado admite varias salidas y cada una se puede configurar de forma diferente.
En el nivel de columna, se especifican los valores siguientes:
La agregación que la columna realiza.
Las opciones de comparación de la agregación.
La transformación Agregado también se puede configurar a efectos de rendimiento especificando estos valores:
El número de grupos que se espera obtener como resultado de la operación GROUP BY de la columna.
El número de valores distintos que se espera obtener como resultado de la operación COUNT DISTINCT de la columna.
También puede identificar las columnas como IsBig si una columna contiene valores numéricos grandes o valores numéricos una alta precisión.
La transformación Agregado es asincrónica, lo que significa que no utiliza ni publica datos fila por fila. En lugar de ello, utiliza todo el conjunto de filas, realiza sus agrupaciones y agregaciones, y, seguidamente, publica los resultados.
Esta transformación no pasa por ninguna columna, sino que crea nuevas columnas en el flujo de datos para los datos que publica. Sólo las columnas de entrada a las que se aplican las funciones de agregado o las columnas de entrada que usa la transformación para agrupar se copian en la salida de la transformación. Por ejemplo, una entrada de la transformación Agregado puede tener tres columnas: CountryRegion, City y Population. La transformación agrupa de acuerdo con la columna CountryRegion y aplica la función Sum a la columna Population. Por tanto, la salida no incluye la columna City.
Puede también agregar varias salidas a la transformación Agregado y dirigir cada agregación a una salida diferente. Por ejemplo, si la transformación Agregado aplica las funciones Sum y Average, cada agregación se puede dirigir a una salida diferente.
Puede aplicar varias agregaciones a una sola columna de entrada. Por ejemplo, si desea los valores de suma y promedio de una columna de entrada llamada Sales, puede configurar la transformación para aplicar las funciones Sum y Average a la columna Sales.
La transformación Agregado tiene una entrada y una o varias salidas. No admite una salida de error.
Operaciones
La transformación Agregado admite las siguientes operaciones.
Operación |
Descripción |
---|---|
GROUP BY |
Divide conjuntos de datos en grupos. Se pueden usar columnas de cualquier tipo de datos para la agrupación. Para obtener más información, vea GROUP BY (Transact-SQL). |
SUM |
Suma los valores en una columna. Sólo se pueden sumar las columnas con datos de tipo numérico. Para obtener más información, vea SUM (Transact-SQL). |
AVG |
Devuelve el promedio de los valores de columna en una columna. Sólo se pueden obtener el promedio de las columnas con datos de tipo numérico. Para obtener más información, vea AVG (Transact-SQL). |
COUNT |
Devuelve el número de elementos de un grupo. Para obtener más información, vea COUNT (Transact-SQL). |
COUNT DISTINCT |
Devuelve el número de valores únicos diferentes de NULL de un grupo. Para obtener más información, vea Eliminar duplicados con DISTINCT. |
MIN |
Devuelve el valor mínimo en un grupo. Para obtener más información, vea MIN (Transact-SQL). En comparación con la función MIN de Transact-SQL, esta operación se puede usar únicamente con tipos de datos numéricos, de fecha y hora. |
MAX |
Devuelve el valor máximo en un grupo. Para obtener más información, vea MAX (Transact-SQL). En comparación con la función MAX de Transact-SQL, esta operación se puede usar únicamente con tipos de datos numéricos, de fecha y hora. |
La transformación Agregado controla los valores NULL de la misma forma que el motor de base de datos relacional de SQL Server. Este comportamiento se define en el estándar SQL-92. Se aplican las reglas siguientes:
En una cláusula GROUP BY, los NULLS se tratan como cualquier otro valor de columna. Si la columna de agrupamiento contiene varios valores NULL, éstos se colocan en un grupo individual.
En las funciones COUNT (nombre de columna) y COUNT (nombre de columna DISTINCT), los NULLS se omiten y el resultado excluye las filas que contienen valores NULL en la columna con nombre.
En la función COUNT (*), se cuentan todas las filas, incluso las filas con valores NULL.
Control de números grandes en agregados
Una columna puede contener valores numéricos que requieren una consideración especial debido a su elevado valor o requisitos de precisión. La transformación Agregado incluye la propiedad IsBig, que se puede establecer en columnas de salida para invocar un control especial de números grandes o de alta precisión. Si el valor de la columna puede superar los 4 mil millones o se requiere una precisión más allá del tipo de datos float, IsBig se debe establecer en 1.
Si se establece la propiedad IsBig en 1, esto afecta la salida de la transformación Agregado de las siguientes maneras:
Se usa el tipo de datos DT_R8 en lugar del tipo de datos DT_R4.
Los resultados del recuento se almacenan como el tipo de datos DT_UI8.
Los resultados del recuento diferente se almacenan como el tipo de datos DT_UI4.
[!NOTA]
No se puede establecer IsBig en 1 en columnas que se usan en las operaciones GROUP BY, MAX y MIN.
Consideraciones de rendimiento
La transformación Agregado incluye un conjunto de propiedades que se pueden establecer para mejorar el rendimiento de la transformación.
Cuando realice una operación GROUP BY, defina las propiedades KeysScale o Keys del componente y las salidas de componente. Si utiliza Keys, puede especificar el número exacto de calves que se espera que la transformación administre. (En este contexto, Keys hace referencia al número de grupos que se espera como resultado de una operación GROUP BY). Con KeysScale, puede especificar un número aproximado de claves. Si especifica un valor correcto para Keys o KeyScale, mejorará el rendimiento porque la transformación podrá asignar la memoria adecuada a los datos que almacena en memoria caché.
Cuando realice una operación DISTINCT COUNT, defina las propiedades CountDistinctScale o CountDistinctKeys del componente. Con CountDistinctKeys, puede especificar el número exacto de claves que se espera que la transformación controle en una operación de recuento diferente. (En este contexto, CountDistinctKeys hace referencia al número de valores distintos que se esperan como resultado de una operación DISTINCT COUNT.) Mediante CountDistinctScale, puede especificar una cantidad aproximada de claves para una operación de recuento diferente. Si especifica un valor correcto para CountDistinctKeys o CountDistinctScale, mejorará el rendimiento porque la transformación podrá asignar la memoria adecuada a los datos que almacena en memoria caché.
Configurar la transformación Agregado
Puede establecer propiedades a través del Diseñador SSIS o mediante programación.
Para obtener más información sobre las propiedades que se pueden configurar en el cuadro de diálogo Editor de transformación Agregado, haga clic en uno de los siguientes temas:
El cuadro de diálogo Editor avanzado indica las propiedades que se pueden establecer mediante programación. Para obtener más información acerca de las propiedades que puede establecer a través del cuadro de diálogo Editor avanzado o mediante programación, haga clic en uno de los temas siguientes:
Para obtener más información sobre cómo establecer valores de propiedades, haga clic en uno de los temas siguientes:
Cómo agregar valores en un conjunto de datos mediante la transformación Agregado
Cómo configurar las propiedades de un componente de flujo de datos
Cómo ordenar datos para las transformaciones Mezclar y Combinación de mezcla
|