Aggregator transformation i Informatica med eksempel

⚡ Smart opsummering

Aggregatortransformation i Informatica er det aktive objekt, der udfører beregninger som sum, gennemsnit og antal på tværs af en gruppe af rækker og holder disse rækker i en aggregeret cache, indtil hver gruppe er komplet.

  • 🧮 Grupperet beregning: Gruppér efter porte definerer grupperne, og integrationstjenesten returnerer én række for hver unikke kombination.
  • 💾 To cacher: Gruppeværdier opbevares i indekscachen, mens rækkedata opbevares i datacachen.
  • 🧪 Udarbejdet eksempel: Udtrykket sum(SAL) grupperet efter DEPTNO indlæser afdelingstotaler i SUM_SAL_DEPTWISE.
  • 🔀 Sorteret input: Forsortering af gruppen efter porte gør det muligt for integrationstjenesten at frigive hver gruppe tidligt og cachelagre langt mindre data.
  • 📈 Trinvise løb: Trinvis aggregering genbruger den historiske cache, så kun nye kilderækker beregnes.
  • 🚫 Indlejringsgrænse: En enkelt transformation kan indeholde funktioner på ét niveau eller indbyggede funktioner, aldrig begge dele.

Aggregator transformation i Informatica

Hvad er Aggregator Transformation?

Aggregatortransformation er en aktiv transformation, der udfører aggregerede beregninger såsom sum, gennemsnit og antal.

Hvis du for eksempel vil beregne summen af ​​lønninger for alle medarbejdere afdelingsvis, kan du bruge Aggregator-transformationen.

De samlede operationer udføres over en gruppe rækker, så en midlertidig pladsholder er påkrævet for at gemme alle disse poster og udføre beregningerne.

Til dette formål bruges aggregator-cachen. Dette er en midlertidig hovedhukommelse, der er allokeret til aggregator-transformationen for at udføre sådanne operationer, og den består af to dele: indekscachen gemmer gruppeværdierne, mens datacachen gemmer de rækkedata, der aggregeres.

Transformationen er aktiv, fordi den ændrer antallet af rækker i pipelinen. Flere tusinde medarbejderposter kan indtastes, og kun én række pr. afdeling forlader den.

Sådan bruger du aggregatortransformation i Informatica

I dette eksempel vil vi beregne summen af ​​lønafdelingen. Til dette kræver vi en ny kolonne for at gemme denne sum. Så først og fremmest vil vi forberede en ny kolonne.

Trin 1) Opret en ny databasemåltabel, for eksempel "sum_sal_deptwise", ved hjælp af scriptet nedenfor. Du vil se den nye databasemåltabel, der er oprettet under Targets-mappen i næste trin.

Download ovenstående Create_table_sal_deptwise.txt-fil

Trin 2) Opret en ny kortping "m_sum_sal_dybdevis".

For at oprette det nye kortping, vi skal bruge kildetabellen (EMP) og måltabellen (sum_sal_deptwise) i Mapping Designer, så vi er nødt til at

  1. Importer måltabellen “sum_sal_deptwise” i kortetping.
  2. Importer kildetabellen "emp".

Begge definitioner vises nu på lærredet, som vist nedenfor.

Kortping Designer med EMP-kilden, SQ_EMP og det importerede SUM_SAL_DEPTWISE-mål

Trin 3) På kortetping,

  1. På hjemmesiden for oprettelse af en konto skal du indtaste postnummeret for dit service-eller faktureringsområde i feltet, der er markeret (A) på billedet ovenfor. Kildekvalifikation, slet kolonnerne empno, ename, job, grer, hiredate og comm, så kun kolonnerne deptno og sal efterlades.
  2. Opret en ny Aggregator-transformation ved hjælp af værktøjsmenuen som vist på skærmbilledet. Når du klikker på aggregatorikonet, oprettes en ny Aggregator-transformation.

Det nye AGGTRANS-objekt vises ved siden af ​​den trimmede kildekvalifikator.

Aggregatorikon på værktøjslinjen opretter AGGTRANS ved siden af ​​den trimmede SQ_EMP

Trin 4) Træk og slip kolonnerne SAL og DEPTNO fra kildekvalifikatoren (SQ_EMP) til aggregatortransformationen. De to porte er nu linket til AGGTRANS.

SAL- og DEPTNO-porte trukket fra SQ_EMP ind i AGGTRANS Aggregator-transformationen

Trin 5) Double-klik på Aggregator-transformationen for at åbne dens egenskaber, og klik derefter

  1. Tilføj en ny port i transformationen
  2. Omdøb porten til SUM_SAL
  3. Skift datatypen for denne nye port til det dobbelte
  4. Gør denne port til en outputport ved at markere afkrydsningsfeltet for outputporten.
  5. Klik på udtryksindstillingen

Fanen Porte viser nu SAL, DEPTNO og den nye SUM_SAL-outputport.

Fanen Porte i AGGTRANS med den nye SUM_SAL outputport indstillet til den double datatype

Trin 6) I vinduet Udtrykseditor

  1. Læg udtrykket sum(SAL) sammen; du skal selv skrive dette udtryk.
  2. Vælg OK-knappen. Dette vil bringe vinduet Rediger transformationer tilbage.

Udtrykseditoren viser det samlede udtryk, der er tildelt SUM_SAL.

Udtrykseditor for SUM_SAL-porten, der indeholder det samlede udtryk sum(SAL)

Trin 7) I vinduet Rediger transformationer skal du vælge indstillingen "Gruppér efter" ved at markere afkrydsningsfeltet ud for afdelingsnr.-kolonnen og klikke på OK. Ved at vælge grupper efter ud for afdelingsnr. instruerer vi Informatica i at gruppere lønninger efter afdelingsnr.

Fanen Porte med afkrydsningsfeltet Gruppér efter markeret ud for DEPTNO-porten

Trin 8) Link kolonnerne deptno og sum_sal fra Aggregator-transformationen til måltabellen. Kortetping er derefter komplet fra kilde til mål.

DEPTNO og SUM_SAL linket fra AGGTRANS til SUM_SAL_DEPTWISE måldefinitionen

Gem nu kortetping og udføre den efter at have oprettet en ny Session for dette kortpingMåltabellen ville indeholde summen af ​​lønninger fordelt på afdelinger. På denne måde kan vi bruge Aggregator-transformationen til at beregne aggregerede resultater.

Gruppér efter porte i aggregatortransformation

Ovenstående trin markerede en enkelt port som Gruppér efter, hvilket gjorde en virksomhedsomfattende total til én total pr. afdeling. Enhver input-, input/output-, output- eller variabelport kan markeres på samme måde.

Tre regler styrer resultatsættet:

  • Én række pr. gruppe. Når værdier grupperes, producerer integrationstjenesten én række for hver unikke kombination af gruppen efter porte.
  • Ingen gruppering efter, én række. Hvis ingen port er markeret, behandles hele inputtet som en enkelt gruppe, og én række returneres for alle inputrækker.
  • Den sidste række vinder. Sammen med det samlede resultat sender integrationstjenesten normalt den sidste række, der er modtaget i gruppen, medmindre en funktion som FIRST navngiver en anden række.

Hvor flere havne er markeret, bestemmer havnerækkefølgen gruppenping rækkefølge, og rækkefølgen kan ændre resultatet. Gruppeping af DEPTNO og så er JOB ikke det samme som groupping af JOB og derefter AFD.NR., fordi værdierne i den anden kolonne ikke nødvendigvis er unikke.

Egenskaber for aggregatortransformation

Fanen Egenskaber i vinduet Rediger transformationer indeholder de indstillinger, der bestemmer, hvor cachen befinder sig, og hvor meget af den der bruges. Tabellen nedenfor viser dem.

Lokal område Hvad den kontrollerer
Cache-mappe Lokal mappe, hvor integrationstjenesten opretter indeks- og datacachefiler. Standardværdien er procesvariablen $PMCacheDir, der er angivet i Workflow Manager.
Tracniveau Mængden af ​​detaljer, der er skrevet til sessionsloggen for denne transformation.
Sorteret input Erklærer, at indgående data allerede er sorteret efter gruppen efter porte. Vælg det kun, når kortetping leverer virkelig sorterede data.
Størrelse på aggregatordatacache Størrelsen på datacachen. Standardværdien er 2,000,000 bytes, og Auto lader integrationstjenesten bestemme størrelsen.
Størrelse på aggregatorindekscache Størrelsen på indekscachen. Standardværdien er 1,000,000 bytes, og Auto lader integrationstjenesten angive størrelsen.
Transformationsomfang Anvender logikken på hver transaktion eller på alle indgående data. Alt input fjerner grænserne for indgående transaktioner.

Når trinvis aggregering er aktiveret, skriver integrationstjenesten en sikkerhedskopi af cachefilerne ved hver kørsel, så cachemappen skal indeholde to sæt filer i stedet for ét.

Regler for samlede udtryk og ydeevnetips

Et aggregeret udtryk kan kombinere en aggregeret funktion med betingede klausuler og ikke-aggregerede funktioner, hvilket gør betingede summer og antal mulige inden for én port. To regler begrænser, hvad der kan skrives.

  • Et niveau af redebygning. Kun én aggregeret funktion kan være indlejret i en anden, og det indre udtryk evalueres først.
  • Ingen blanding. En transformation kan indeholde funktioner på ét niveau eller indbyggede funktioner, aldrig begge dele. Hvis den indeholder begge, markerer designeren kortetping ugyldig, så opdel logikken på tværs af to Aggregator-transformationer.

På tuningsiden er der tre indstillinger, der klarer det meste af arbejdet:

  • Sorteret input. Når rækker ankommer sorteret efter gruppen og porte, kan hver gruppe frigives, så snart den sidste række ankommer, så der caches langt mindre data, og sessionen kører hurtigere. Sorteret input kan ikke kombineres med trinvis aggregering.
  • Trinvis aggregering. Nye kilderækker sendes gennem kortetping og kombineret med den historiske cache i stedet for at genberegne historikken, hvilket passer til en natlig belastning på en løbende total.
  • Filtrer tidligt. Rækker, der aldrig vil bidrage til en total, bør slettes før aggregatoren, enten i kildekvalifikatorforespørgslen eller i en Filtertransformation, fordi hver række, der når aggregatoren, koster cachehukommelse. Dette er en af ​​standardkontrollerne under præstationsindstilling.

Ofte Stillede Spørgsmål

Den samlede familie dækker AVG, ANTAL, FØRSTNAVN, EFTERNAVN, MAX, MEDIAN, MIN, PERCENTILE, STDDEV, SUM og VARIANCE. Hver returnerer en opsummeringsværdi for de ikke-nul-værdier i den valgte port.

Hele inputtet behandles som én gruppe, så der returneres en enkelt række for alle inputrækker. Denne række indeholder det samlede resultat sammen med den sidste række, som transformationen modtog.

Indekscachen indeholder gruppeværdierne, hvilket betyder værdierne for de porte, der er markeret med Gruppér efter. Datacachen indeholder de rækkedata, der bruges i beregningen. Overflow fra begge dele skrives til cachefiler.

Den sender kun nye kildedata gennem kortetping og kombinerer den med den historiske cache fra tidligere kørsler, så totaler opdateres i stedet for at blive genopbygget. Den kan ikke kombineres med den sorterede inputmulighed.

Som standard behandler integrationstjenesten nulværdier som NULL og springer dem over, så en sum ignorerer tomme lønninger. Tjenesten kan i stedet konfigureres til at behandle nulværdier i aggregerede funktioner som nul.

I den mappe, der er navngivet af indstillingen Cache Directory, som som standard er procesvariablen $PMCacheDir, der er konfigureret i Workflow Manager. Sørg for, at mappen findes og har tilstrækkelig ledig diskplads.

AI-assistenter profilerer kildedata og arbejdsbelastningshistorik for at foreslå, hvor en total hører hjemme, hvilken gruppeping nøgler betyder noget, og hvor en beregning er billigere i databasen. Maskinlæringsbaserede rådgivere rangerer mulighederne, og en ingeniør godkender dem.

Copilot laver hurtigt kladder til udtryk og den omgivende SQL, hvilket sparer tid på gentagne porteringsopgaver. Den kan ikke se dine cachestørrelser eller portrækkefølge, så valider alle forslag i udtrykseditoren, før du gemmer.

Opsummer dette indlæg med: