Transformación de agregador en Informatica con ejemplo

⚡ Resumen inteligente

En Informatica, la transformación de agregador es el objeto activo que realiza cálculos como suma, promedio y recuento en un grupo de filas, manteniendo esas filas en una caché de agregados hasta que se complete cada grupo.

  • 🧮 Cálculo agrupado: La agrupación por puertos define los grupos, y el Servicio de Integración devuelve una fila por cada combinación única.
  • 💾 Dos escondites: Los valores de grupo se almacenan en la caché de índices, mientras que los datos de las filas se almacenan en la caché de datos.
  • 🧪 Ejemplo trabajado: La expresión sum(SAL) agrupada por DEPTNO carga los totales de los departamentos en SUM_SAL_DEPTWISE.
  • 🔀 Entrada ordenada: La preclasificación del grupo por puertos permite que el Servicio de Integración libere cada grupo con anticipación y almacene en caché muchos menos datos.
  • 📈 Ejecuciones incrementales: La agregación incremental reutiliza la caché histórica, por lo que solo se calculan las filas de origen nuevas.
  • 🚫 Límite de anidamiento: Una única transformación puede contener funciones de un solo nivel o funciones anidadas, pero nunca ambas.

Transformación de agregador en Informatica

¿Qué es la transformación agregadora?

La transformación de agregación es una transformación activa que realiza cálculos de agregación como suma, promedio y recuento.

Por ejemplo, si desea calcular la suma de los salarios de todos los empleados por departamento, puede utilizar la transformación Agregador.

Las operaciones agregadas se realizan en un grupo de filas, por lo que se requiere un marcador de posición temporal para almacenar todos estos registros y realizar los cálculos.

Para ello, se utiliza la caché del agregador. Se trata de una memoria principal temporal asignada a la transformación Agregador para realizar dichas operaciones, y se divide en dos partes: la caché de índices almacena los valores de grupo, mientras que la caché de datos almacena los datos de las filas que se están agregando.

La transformación está activa porque cambia el número de filas en la canalización. Pueden entrar varios miles de registros de empleados y solo sale una fila por departamento.

Cómo utilizar la transformación de agregación en Informatica

En este ejemplo, calcularemos la suma de los salarios por departamento. Para ello, necesitamos una nueva columna para almacenar esta suma. Por lo tanto, en primer lugar, prepararemos una nueva columna.

Paso 1) Cree una nueva tabla de destino de base de datos, por ejemplo, “sum_sal_deptwise”, utilizando el script a continuación. Verá la nueva tabla de destino de base de datos creada en la Targetcarpeta s en el siguiente paso.

Descargue el archivo Create_table_sal_deptwise.txt anterior

Paso 2) Crear un nuevo mapaping “m_sum_sal_deptwise”.

Para crear el nuevo mapapingNecesitamos la tabla de origen (EMP) y la tabla de destino (sum_sal_deptwise) en el mapa.ping Diseñador, así que necesitamos

  1. Importa la tabla de destino “sum_sal_deptwise” en el mapa.ping.
  2. Importe la tabla fuente "emp".

Ambas definiciones aparecen ahora en el lienzo, como se muestra a continuación.

Mapearping Diseñador con la fuente EMP, SQ_EMP y el destino importado SUM_SAL_DEPTWISE

Paso 3) En el mapaping,

  1. En el campo Calificador de fuente, elimine las columnas empno, ename, job, mgr, hiredate y comm, dejando solo las columnas deptno y sal.
  2. Crea una nueva transformación de Agregador usando el menú de la caja de herramientas, como se muestra en la captura de pantalla. Al hacer clic en el icono del agregador, se creará una nueva transformación de Agregador.

El nuevo objeto AGGTRANS aparece junto al calificador de origen recortado.

Icono de agregador en la barra de herramientas que crea AGGTRANS junto al SQ_EMP recortado.

Paso 4) Arrastre y suelte las columnas SAL y DEPTNO del Calificador de origen (SQ_EMP) en la transformación Agregador. Los dos puertos ahora están vinculados a AGGTRANS.

Los puertos SAL y DEPTNO se arrastraron desde SQ_EMP a la transformación del agregador AGGTRANS.

Paso 5) Double-haga clic en la transformación Agregador para abrir sus propiedades y luego

  1. Agregar un nuevo puerto en la transformación.
  2. Cambie el nombre del puerto a SUM_SAL.
  3. Cambie el tipo de datos de este nuevo puerto a doble
  4. Convierta este puerto en un puerto de salida seleccionando la casilla de verificación del puerto de salida.
  5. Haga clic en la opción de expresión

La pestaña Puertos ahora muestra SAL, DEPTNO y el nuevo puerto de salida SUM_SAL.

Pestaña Puertos de AGGTRANS con el nuevo puerto de salida SUM_SAL configurado al tipo de datos double.

Paso 6) En la ventana del Editor de expresiones

  1. Agregue la expresión sum(SAL); usted mismo debe escribir esta expresión.
  2. Seleccione el botón Aceptar; esto hará que vuelva a aparecer la ventana Editar transformaciones.

El editor de expresiones muestra la expresión agregada asignada a SUM_SAL.

Editor de expresiones para el puerto SUM_SAL que contiene la expresión agregada sum(SAL).

Paso 7) En la ventana Editar transformaciones, seleccione la opción "Agrupar por" marcando la casilla de verificación junto a la columna deptno y haga clic en Aceptar. Al seleccionar "Agrupar por" junto a deptno, le indicamos a Informatica que agrupe los salarios por deptno.

Pestaña Puertos con la casilla de verificación Agrupar por seleccionada junto al puerto DEPTNO.

Paso 8) Vincula las columnas deptno y sum_sal de la transformación Agregador a la tabla de destino. El mapaping Entonces se completa el proceso desde el origen hasta el destino.

DEPTNO y SUM_SAL vinculados desde AGGTRANS a la definición de destino SUM_SAL_DEPTWISE

Ahora guarda el mapa.ping y ejecutarlo después de crear uno nuevo durante toda la sesión. para este mapapingLa tabla de destino contendría la suma de los salarios por departamento. De esta forma, podemos utilizar la transformación Agregador para calcular los resultados agregados.

Agrupar por puertos en la transformación del agregador

El paso anterior marcó un único puerto como Agrupar por, lo que convirtió el total de toda la empresa en un total por departamento. Cualquier puerto de entrada, entrada/salida, salida o variable puede marcarse de la misma manera.

Tres reglas rigen el conjunto de resultados:

  • Una fila por grupo. Cuando se agrupan los valores, el Servicio de Integración genera una fila para cada combinación única del grupo por puertos.
  • Sin agrupar por, una fila. Si no se marca ningún puerto, toda la entrada se trata como un solo grupo y se devuelve una fila por cada fila de entrada.
  • Gana la última fila. Junto con el resultado agregado, el Servicio de Integración suele pasar la última fila recibida en el grupo, a menos que una función como FIRST especifique una fila diferente.

Cuando se marcan varios puertos, el orden de los puertos decide el grupo.ping orden, y el orden puede cambiar el resultado. Grupoping por DEPTNO y luego JOB no es lo mismo que grouping por JOB y luego DEPTNO, porque los valores de la segunda columna no son necesariamente únicos.

Propiedades de transformación del agregador

La pestaña Propiedades de la ventana Editar transformaciones contiene la configuración que determina dónde se almacena la caché y cuánto se utiliza. La tabla siguiente enumera estas opciones.

Configuración Lo que controla
Directorio de caché Directorio local donde el Servicio de Integración crea los archivos de índice y caché de datos. Por defecto, se utiliza la variable de proceso $PMCacheDir configurada en el Administrador de flujos de trabajo.
TracNivel de ing Cantidad de detalles registrados en el archivo de registro de la sesión para esta transformación.
Entrada ordenada Declara que los datos entrantes ya están ordenados por grupo por puertos. Selecciónelo solo cuando el mapaping Realmente proporciona datos ordenados.
Tamaño de la caché de datos del agregador Tamaño de la caché de datos. El valor predeterminado es de 2,000,000 bytes, y la opción Automático permite que el Servicio de Integración ajuste su tamaño.
Tamaño de la caché del índice del agregador Tamaño de la caché de índices. El valor predeterminado es 1,000,000 de bytes, y la opción Automático permite que el Servicio de Integración determine su tamaño.
Alcance de la transformación Aplica la lógica a cada transacción o a todos los datos entrantes. La opción "Todas las entradas" elimina los límites de las transacciones entrantes.

Cuando se habilita la agregación incremental, el Servicio de Integración escribe una copia de seguridad de los archivos de caché en cada ejecución, por lo que el directorio de caché debe contener dos conjuntos de archivos en lugar de uno.

Reglas de expresiones agregadas y consejos de rendimiento

Una expresión agregada puede combinar una función agregada con cláusulas condicionales y funciones no agregadas, lo que permite realizar sumas y recuentos condicionales dentro de un mismo puerto. Dos reglas limitan lo que se puede escribir.

  • Un nivel de anidamiento. Solo se puede anidar una función agregada dentro de otra, y la expresión interna se evalúa primero.
  • Sin mezclar. Una transformación puede contener funciones de un solo nivel o funciones anidadas, nunca ambas. Si contiene ambas, el Diseñador marca el mapa.ping No es válido, así que divida la lógica en dos transformaciones de Agregador.

En lo que respecta a la afinación, tres ajustes hacen la mayor parte del trabajo:

  • Entrada ordenada. Cuando las filas llegan ordenadas por grupo según los puertos, cada grupo se libera en cuanto llega su última fila, lo que reduce considerablemente el almacenamiento en caché y acelera la sesión. La entrada ordenada no se puede combinar con la agregación incremental.
  • Agregación incremental. Las nuevas filas de origen se pasan a través del mapa.ping y combinado con la caché histórica en lugar de recalcular el historial, lo que resulta adecuado para una carga nocturna sobre un total acumulado.
  • Filtrar temprano. Las filas que nunca contribuirán a un total deben eliminarse antes del Agregador, ya sea en la consulta del Calificador de origen o en un Transformación de filtro, porque cada fila que llega al Agregador consume memoria caché. Esta es una de las comprobaciones estándar durante la optimización del rendimiento.

Preguntas Frecuentes

La familia agregada abarca AVG, CONTEO, PRIMERO, ÚLTIMO, MÁXIMO, MEDIANA, MÍNIMO, PERCENTIL, DESVIACIÓN ESTÁNDAR, SUMA y VARIANZA. Cada una devuelve un valor resumen para los valores no nulos en el puerto seleccionado.

La entrada completa se trata como un solo grupo, por lo que se devuelve una sola fila para todas las filas de entrada. Esa fila contiene el resultado agregado junto con la última fila que recibió la transformación.

La caché de índices almacena los valores de grupo, es decir, los valores de los puertos marcados como Agrupar por. La caché de datos almacena los datos de fila utilizados en el cálculo. El desbordamiento de cualquiera de las dos se escribe en archivos de caché.

Solo transmite nuevos datos de origen a través del mapa.ping y lo combina con el historial de ejecuciones anteriores, de modo que los totales se actualizan en lugar de reconstruirse. No se puede combinar con la opción de entrada ordenada.

Por defecto, el Servicio de Integración trata los valores nulos como NULL y los omite, por lo que la suma ignora los salarios vacíos. El servicio puede configurarse para que trate los valores nulos en las funciones de agregación como cero.

En el directorio especificado por la configuración de Directorio de caché, que por defecto es la variable de proceso $PMCacheDir configurada en Workflow Manager. Asegúrese de que dicho directorio exista y tenga suficiente espacio libre en el disco.

Los asistentes de IA perfilan los datos de origen y el historial de carga de trabajo para sugerir dónde pertenece un total, qué grupoping Las claves son importantes y determina dónde resulta más económico realizar un cálculo en la base de datos. Los asesores basados ​​en aprendizaje automático clasifican las opciones y un ingeniero las aprueba.

Copilot genera rápidamente expresiones y el código SQL correspondiente, lo que ahorra tiempo en tareas repetitivas de gestión de puertos. No puede ver el tamaño de la caché ni el orden de los puertos, así que valide cada sugerencia en el Editor de expresiones antes de guardarla.

Resumir este post con: