Trasformazione dell'aggregatore in Informatica con esempio

⚡ Riepilogo intelligente

In Informatica, la trasformazione Aggregator è l'oggetto attivo che esegue calcoli come somma, media e conteggio su un gruppo di righe, memorizzando tali righe in una cache aggregata fino al completamento di ciascun gruppo.

  • 🧮 Calcolo raggruppato: I gruppi sono definiti in base alle porte e il servizio di integrazione restituisce una riga per ogni combinazione univoca.
  • 💾 Due cache: I valori di gruppo sono memorizzati nella cache degli indici, mentre i dati delle righe sono memorizzati nella cache dei dati.
  • 🧪 Esempio pratico: L'espressione sum(SAL) raggruppata per DEPTNO carica i totali dei dipartimenti in SUM_SAL_DEPTWISE.
  • 🔀 Input ordinato: La pre-selezione in base al gruppo per porte consente al servizio di integrazione di rilasciare ciascun gruppo in anticipo e di memorizzare nella cache molti meno dati.
  • 📈 Prove incrementali: L'aggregazione incrementale riutilizza la cache storica, quindi vengono calcolate solo le nuove righe di origine.
  • 🚫 Limite di annidamento: Una singola trasformazione può contenere funzioni a livello singolo o funzioni annidate, ma mai entrambe.

Trasformazione degli aggregatori in Informatica

Cos'è la trasformazione dell'aggregatore?

La trasformazione Aggregator è una trasformazione attiva che esegue calcoli aggregati come somma, media e conteggio.

Ad esempio, se si desidera calcolare la somma degli stipendi di tutti i dipendenti suddivisi per reparto, è possibile utilizzare la trasformazione Aggregatore.

Le operazioni di aggregazione vengono eseguite su un gruppo di righe, pertanto è necessario un segnaposto temporaneo per archiviare tutti questi record ed eseguire i calcoli.

A tale scopo, viene utilizzata la cache dell'aggregatore. Si tratta di una memoria principale temporanea allocata alla trasformazione Aggregator per eseguire tali operazioni, ed è suddivisa in due parti: la cache degli indici memorizza i valori di gruppo, mentre la cache dei dati memorizza i dati delle righe da aggregare.

La trasformazione è attiva perché modifica il numero di righe nella pipeline. Possono entrarvi diverse migliaia di record di dipendenti e ne esce solo una riga per reparto.

Come utilizzare la trasformazione Aggregator in Informatica

In questo esempio, calcoleremo la somma degli stipendi per reparto. Per questo, abbiamo bisogno di una nuova colonna per memorizzare questa somma. Quindi, prima di tutto, prepareremo una nuova colonna.

Passo 1) Crea una nuova tabella di destinazione del database, ad esempio "sum_sal_deptwise", utilizzando lo script seguente. Vedrai la nuova tabella di destinazione del database creata sotto Targetcartella s nel passaggio successivo.

Scarica il file Create_table_sal_deptwise.txt sopra

Passo 2) Crea un nuovo carta geograficaping “m_sum_sal_deptwise”.

Per creare la nuova mappaping, abbiamo bisogno della tabella sorgente (EMP) e della tabella di destinazione (sum_sal_deptwise) in Mapping Progettista, quindi abbiamo bisogno di

  1. Importa la tabella di destinazione “sum_sal_deptwise” nella mappaping.
  2. Importa la tabella di origine "emp".

Entrambe le definizioni ora appaiono sulla tela, come mostrato di seguito.

Mappaping Progettista con la sorgente EMP, SQ_EMP e la destinazione importata SUM_SAL_DEPTWISE

Passo 3) Nella mappaping,

  1. Dal Qualificatore della fonteElimina le colonne empno, ename, job, mgr, hiredate e comm, lasciando solo le colonne deptno e sal.
  2. Crea una nuova trasformazione Aggregatore utilizzando il menu della casella degli strumenti, come mostrato nello screenshot. Facendo clic sull'icona dell'aggregatore, verrà creata una nuova trasformazione Aggregatore.

Il nuovo oggetto AGGTRANS appare accanto al Source Qualifier troncato.

Icona dell'aggregatore sulla barra degli strumenti che crea AGGTRANS accanto a SQ_EMP troncato

Passo 4) Trascina e rilascia le colonne SAL e DEPTNO dal Source Qualifier (SQ_EMP) alla trasformazione Aggregator. Le due porte sono ora collegate in AGGTRANS.

Le porte SAL e DEPTNO sono state trascinate da SQ_EMP nella trasformazione dell'aggregatore AGGTRANS.

Passo 5) Double-fare clic sulla trasformazione Aggregator per aprirne le proprietà e quindi

  1. Aggiungi una nuova porta nella trasformazione
  2. Rinominare la porta in SUM_SAL
  3. Cambia il tipo di dati di questa nuova porta in double
  4. Rendi questa porta una porta di uscita selezionando la casella di controllo della porta di uscita
  5. Fai clic sull'opzione di espressione

La scheda Porte ora elenca SAL, DEPTNO e la nuova porta di output SUM_SAL.

Scheda Porte di AGGTRANS con la nuova porta di output SUM_SAL impostata sul tipo di dati double

Passo 6) Nella finestra dell'editor di espressioni

  1. Aggiungi l'espressione sum(SAL); devi scrivere tu stesso questa espressione.
  2. Seleziona il pulsante OK; in questo modo verrà visualizzata nuovamente la finestra Modifica trasformazioni.

L'editor di espressioni mostra l'espressione di aggregazione assegnata a SUM_SAL.

Editor di espressioni per la porta SUM_SAL che contiene l'espressione di aggregazione sum(SAL)

Passo 7) Nella finestra Modifica trasformazioni, selezionare l'opzione "Raggruppa per" spuntando la casella di controllo accanto alla colonna deptno e fare clic su OK. Selezionando "Raggruppa per" accanto a deptno, si indica a Informatica di raggruppare gli stipendi per deptno.

Scheda Porte con la casella di controllo Raggruppa per selezionata accanto alla porta DEPTNO

Passo 8) Collega le colonne deptno e sum_sal dalla trasformazione Aggregator alla tabella di destinazione. La mappaping il processo è quindi completo dalla sorgente alla destinazione.

DEPTNO e SUM_SAL sono collegati da AGGTRANS alla definizione di destinazione SUM_SAL_DEPTWISE

Ora salva la mappaping e eseguirlo dopo aver creato un nuovo Sessione per questa mappapingLa tabella di destinazione conterrebbe la somma degli stipendi per dipartimento. In questo modo, possiamo utilizzare la trasformazione Aggregator per calcolare i risultati aggregati.

Raggruppamento per porte nella trasformazione dell'aggregatore

Il passaggio precedente ha contrassegnato una singola porta come "Raggruppa per", trasformando così il totale aziendale in un totale per reparto. Qualsiasi porta di ingresso, ingresso/uscita, uscita o variabile può essere contrassegnata allo stesso modo.

Tre regole disciplinano l'insieme dei risultati:

  • Una riga per gruppo. Quando i valori vengono raggruppati, il servizio di integrazione genera una riga per ogni combinazione univoca di porte di raggruppamento.
  • Nessun raggruppamento, una sola riga. Se non viene selezionata alcuna porta, l'intero input viene trattato come un singolo gruppo e viene restituita una riga per tutte le righe di input.
  • L'ultima fila vince. Insieme al risultato aggregato, il servizio di integrazione di solito trasmette l'ultima riga ricevuta nel gruppo, a meno che una funzione come FIRST non specifichi una riga diversa.

Quando sono contrassegnati più porti, l'ordine dei porti determina il gruppoping ordine, e l'ordine può cambiare il risultato. Gruppoping da DEPTNO e poi JOB non è lo stesso di groupping per JOB e poi DEPTNO, perché i valori della seconda colonna non sono necessariamente univoci.

Proprietà di trasformazione dell'aggregatore

La scheda Proprietà della finestra Modifica trasformazioni contiene le impostazioni che determinano dove risiede la cache e quanta ne viene utilizzata. La tabella seguente le elenca.

Configurazione Cosa controlla
Directory della cache Cartella locale in cui il servizio di integrazione crea i file di indice e di cache dei dati. Il valore predefinito è la variabile di processo $PMCacheDir impostata in Workflow Manager.
TracLivello di ing Quantità di dettagli scritti nel registro di sessione per questa trasformazione.
Input ordinato Dichiara che i dati in entrata sono già ordinati per gruppo per porte. Selezionalo solo quando la mappaping Fornisce davvero dati ordinati.
Dimensione della cache dei dati dell'aggregatore Dimensione della cache dati. Il valore predefinito è 2,000,000 di byte, mentre l'opzione Automatico consente al servizio di integrazione di dimensionarla automaticamente.
Dimensione della cache dell'indice dell'aggregatore Dimensione della cache dell'indice. Il valore predefinito è 1,000,000 di byte, mentre l'opzione Automatico consente al servizio di integrazione di dimensionarla automaticamente.
Ambito della trasformazione Applica la logica a ciascuna transazione o a tutti i dati in ingresso. L'opzione "Tutti gli input" ignora i limiti delle transazioni in ingresso.

Quando l'aggregazione incrementale è abilitata, il servizio di integrazione scrive una copia di backup dei file della cache a ogni esecuzione, quindi la directory della cache deve contenere due set di file anziché uno.

Regole per le espressioni aggregate e suggerimenti per migliorare le prestazioni

Un'espressione aggregata può combinare una funzione aggregata con clausole condizionali e funzioni non aggregate, rendendo possibili somme e conteggi condizionali all'interno di un'unica porta. Due regole limitano ciò che può essere scritto.

  • Un livello di annidamento. È possibile annidare una sola funzione aggregata all'interno di un'altra, e l'espressione interna viene valutata per prima.
  • Nessuna miscelazione. Una trasformazione può contenere funzioni a livello singolo o funzioni annidate, mai entrambe. Se contiene entrambe, il Progettista contrassegna la mappaping non valido, quindi suddividi la logica in due trasformazioni Aggregator.

Per quanto riguarda la messa a punto, tre impostazioni svolgono la maggior parte del lavoro:

  • Input ordinato. Quando le righe arrivano ordinate per gruppo e per porte, ogni gruppo può essere rilasciato non appena arriva la sua ultima riga, riducendo così la quantità di dati memorizzati nella cache e velocizzando l'esecuzione della sessione. L'input ordinato non può essere combinato con l'aggregazione incrementale.
  • Aggregazione incrementale. Le nuove righe sorgente vengono passate attraverso la mappaping e combinato con la cache storica invece di ricalcolare la cronologia, il che si adatta a un caricamento notturno su un totale progressivo.
  • Filtrare in anticipo. Le righe che non contribuiranno mai a un totale devono essere eliminate prima dell'Aggregator, sia nella query Source Qualifier che in un Trasformazione del filtro, perché ogni riga che raggiunge l'Aggregator costa memoria cache. Questo è uno dei controlli standard durante ottimizzazione delle prestazioni.

DOMANDE FREQUENTI

La famiglia aggregata copre AVGCOUNT, FIRST, LAST, MAX, MEDIAN, MIN, PERCENTILE, STDDEV, SUM e VARIANCE. Ciascuno restituisce un valore riassuntivo per i valori non nulli nella porta selezionata.

L'intero input viene trattato come un unico gruppo, quindi viene restituita una singola riga per tutte le righe di input. Tale riga contiene il risultato aggregato insieme all'ultima riga elaborata dalla trasformazione.

La cache degli indici contiene i valori di gruppo, ovvero i valori delle porte contrassegnate come "Raggruppa per". La cache dei dati contiene i dati delle righe utilizzati nel calcolo. L'eventuale overflow di una delle due cache viene scritto nei file di cache.

Trasmette attraverso la mappa solo i nuovi dati di origine.ping e lo combina con la cache storica delle esecuzioni precedenti, in modo che i totali vengano aggiornati anziché ricostruiti. Non è compatibile con l'opzione di input ordinato.

Per impostazione predefinita, il servizio di integrazione tratta i valori nulli come NULL e li ignora, quindi una somma non considera gli stipendi vuoti. Il servizio può invece essere configurato per trattare i valori nulli nelle funzioni di aggregazione come zero.

Nella directory specificata dall'impostazione Directory cache, che per impostazione predefinita corrisponde alla variabile di processo $PMCacheDir configurata in Workflow Manager. Assicurarsi che la directory esista e che disponga di spazio su disco sufficiente.

Gli assistenti IA profilano i dati di origine e la cronologia del carico di lavoro per suggerire a quale gruppo appartiene un totale,ping Le chiavi sono importanti e bisogna individuare dove un calcolo risulta più economico all'interno del database. I sistemi di consulenza basati sull'apprendimento automatico classificano le opzioni, che vengono poi approvate da un ingegnere.

Copilot genera rapidamente espressioni e il relativo codice SQL, risparmiando tempo sulle operazioni ripetitive sulle porte. Non può visualizzare le dimensioni della cache o l'ordine delle porte, quindi è necessario convalidare ogni suggerimento nell'editor di espressioni prima di salvare.

Riassumi questo post con: