En entradas anteriores se expuso cómo llevar a cabo una normalización en Informatica PowerCenter. El objetivo de este artículo es el proceso inverso, realizar una denormalización mediante el objeto Aggregator Transformation de PowerCenter.
Aggregator
El aggregator es una transformación que permite realizar sobre un set de datos, distintas operaciones que requieren su agregación. Ejemplos de estas funciones son COUNT, AVG, FIRST, LAST y MIN, entre otros. Las propiedades más importantes de este objeto PowerCenter son:
Ports (In, Out): | Entendemos como puerto, cualquier campo mapeado al objeto, tanto de entrada como de salida |
Group By: | Activado en aquellos campos que forman parte de la clave de agregación |
Datatype: | Cuando se crean los puertos, se les debe asignar el tipo de dato y precisión que corresponde |
Propiedades
De acuerdo a la imagen anterior:
|
La operación de denormalización tiene sentido cuando queremos evitar redundancia en los datos o queremos representarlos de manera agregada, por ejemplo. De esta manera, se facilita también la explotación de los datos por las herramientas reporting.
En la siguiente imagen vemos como ejemplo un set de datos y su resultado al realizar una denormalización por la clave VENDEDOR:
Para realizar correctamente esta operación, es necesario ordenar el flujo de datos previamente a la agregación. Los datos han de ordenarse por los mismos campos que serán clave de agregación, es decir, propiedad Group By activa. Esto lo conseguimos insertando en nuestro mapping un objeto Sorter Transformation antes del aggregator, activando la propiedad Key en dichos campos.
Una vez tenemos nuestro Sorter Transformation, colocamos el Aggregator Transformation y arrastramos los campos que deseamos pasen por la transformación para después modificar sus propiedades:
Según el ejemplo de datos previo, tendremos como Key en la ordenación el campo VENDEDOR, al cual habilitaremos la opción Group By en el aggregator. Los otros dos campos (SEMANA, MONTO) los pondremos como puertos de entrada:
Ahora tenemos todo preparado para realizar la denormalización, así que creamos cuatro campos nuevos (cuatro semanas) con el mismo tipo que MONTO y en cada uno añadiremos el cálculo:
FIRST(MONTO, SEMANA = i) |
Lo que logramos así, es generar un único registro con cuatro columnas para cada VENDEDOR, cada una de las cuales con el MONTO asociado a cada SEMANA (1, 2, 3 o 4).
Al final, solo tendremos que mapear los campos de salida a nuestro Target, quedando nuestro Mapping de la siguiente forma:
En posteriores entradas seguiremos abordando más tips para el desarrollo de ETLs.