Transformacija agregatora u informatici s primjerom

⚡ Pametni sažetak

Transformacija agregatora u Informatici je aktivni objekt koji izvodi izračune poput zbrajanja, prosjeka i brojanja u skupini redaka, držeći te retke u agregatnoj predmemoriji dok se svaka grupa ne dovrši.

  • 🧮 Grupni izračun: Grupiranje po portovima definira grupe, a Integration Service vraća jedan redak za svaku jedinstvenu kombinaciju.
  • 💾 Dva keša: Vrijednosti grupe čuvaju se u predmemoriji indeksa, dok se podaci redaka čuvaju u predmemoriji podataka.
  • 🧪 Obrađeni primjer: Izraz sum(SAL) grupiran po DEPTNO učitava ukupne iznose odjela u SUM_SAL_DEPTWISE.
  • 🔀 Sortirani unos: Prethodno sortiranje grupe po portovima omogućuje Integration Serviceu da rano otpusti svaku grupu i predmemorira puno manje podataka.
  • 📈 Inkrementalni brojevi pokretanja: Inkrementalna agregacija ponovno koristi povijesnu predmemoriju tako da se izračunavaju samo novi izvorni retci.
  • ???? Ograničenje ugniježđivanja: Jedna transformacija može sadržavati funkcije jedne razine ili ugniježđene funkcije, nikada oboje.

Transformacija agregatora u informatici

Što je transformacija agregatora?

Agregatorska transformacija je aktivna transformacija koja izvodi agregirane izračune kao što su zbroj, prosjek i brojanje.

Na primjer, ako želite izračunati zbroj plaća svih zaposlenika po odjelima, možete koristiti transformaciju Agregator.

Operacije zbrajanja izvode se nad grupom redaka, tako da je potrebno privremeno rezervirano mjesto za pohranu svih tih zapisa i izvođenje izračuna.

Za to se koristi predmemorija agregatora. To je privremena glavna memorija dodijeljena transformaciji agregatora za izvođenje takvih operacija i podijeljena je u dva dijela: predmemorija indeksa pohranjuje vrijednosti grupe, dok predmemorija podataka pohranjuje podatke redaka koji se agregiraju.

Transformacija je aktivna jer mijenja broj redaka u cjevovodu. U nju može ući nekoliko tisuća zapisa zaposlenika, a izlazi samo jedan redak po odjelu.

Kako koristiti transformaciju agregatora u Informatici

U ovom primjeru ćemo izračunati zbroj odjela za plaće. Za ovo nam je potreban novi stupac za pohranu ove sume. Dakle, prije svega ćemo pripremiti novu kolumnu.

Korak 1) Izradite novu ciljnu tablicu baze podataka, na primjer, recimo "sum_sal_deptwise", koristeći donji skript. Vidjet ćete novu ciljnu tablicu baze podataka stvorenu pod Targetmapu u sljedećem koraku.

Preuzmite gornju datoteku Create_table_sal_deptwise.txt

Korak 2) Napravite novu kartaping „m_sum_sol_dubinski”.

Kako bi se stvorila nova kartaping, potrebna nam je izvorna tablica (EMP) i ciljna tablica (sum_sal_deptwise) u Mapiping Dizajner, pa moramo

  1. Uvezite ciljnu tablicu „sum_sal_deptwise“ u mapuping.
  2. Uvezite izvornu tablicu "emp".

Obje definicije sada se pojavljuju na platnu, kao što je prikazano dolje.

Kartaping Dizajner s EMP izvorom, SQ_EMP i uvezenim SUM_SAL_DEPTWISE ciljem

Korak 3) Na kartiping,

  1. Od Kvalifikator izvora, izbrišite stupce empno, ename, job, mgr, hiredate i comm, ostavljajući samo stupce deptno i sal.
  2. Izradite novu transformaciju agregatora pomoću izbornika alatnog okvira kao što je prikazano na snimci zaslona. Kada kliknete ikonu agregatora, stvorit će se nova transformacija agregatora.

Novi objekt AGGTRANS pojavljuje se pored skraćenog kvalifikatora izvora.

Ikona agregatora na alatnoj traci koja stvara AGGTRANS pored skraćenog SQ_EMP-a

Korak 4) Povucite i ispustite stupce SAL i DEPTNO iz kvalifikatora izvora (SQ_EMP) u transformaciju agregatora. Dva porta su sada povezana u AGGTRANS.

SAL i DEPTNO portovi prevučeni iz SQ_EMP u transformaciju AGGTRANS agregatora

Korak 5) Double-kliknite transformaciju Agregatora da biste otvorili njezina svojstva, a zatim

  1. Dodajte novi priključak u transformaciji
  2. Preimenuj port u SUM_SAL
  3. Promijenite vrstu podataka ovog novog porta u dvostruki
  4. Učinite ovaj priključak izlaznim priključkom odabirom potvrdnog okvira izlaznog priključka
  5. Kliknite opciju izraza

Kartica Portovi sada navodi SAL, DEPTNO i novi izlazni port SUM_SAL.

Kartica Portovi AGGTRANS-a s novim izlaznim portom SUM_SAL postavljenim na tip podataka double

Korak 6) U prozoru Uređivača izraza

  1. Zbrojite izraz sum(SAL); ovaj izraz morate sami napisati.
  2. Odaberite gumb U redu, čime će se vratiti prozor Uredi transformacije.

Uređivač izraza prikazuje agregirani izraz dodijeljen funkciji SUM_SAL.

Uređivač izraza za port SUM_SAL koji sadrži agregirani izraz sum(SAL)

Korak 7) U prozoru Uredi transformacije odaberite opciju „Grupiraj po“ označavanjem potvrdnog okvira uz stupac broj odjela i kliknite U redu. Odabirom grupiraj po uz broj odjela, upućujemo Informaticu da grupira plaće prema broju odjela.

Kartica Portovi s odabranim potvrdnim okvirom GroupBy uz DEPTNO port

Korak 8) Povežite stupce deptno i sum_sal iz transformacije Agregatora s ciljnom tablicom. Mapaping je tada dovršen od izvora do cilja.

DEPTNO i SUM_SAL povezani iz AGGTRANS-a s definicijom cilja SUM_SAL_DEPTWISE

Sada spremite kartuping i izvršite ga nakon stvaranja novog Sjednica za ovu kartupingCiljana tablica sadržavala bi zbroj plaća po odjelima. Na taj način možemo koristiti transformaciju Agregatora za izračun agregiranih rezultata.

Grupiraj po portovima u transformaciji agregatora

U gornjem koraku jedan je port označen kao Grupiraj po, što je pretvorilo ukupan iznos za cijelu tvrtku u jedan ukupan iznos po odjelu. Bilo koji ulaz, ulaz/izlaz, izlaz ili varijabilni port može se označiti na isti način.

Tri pravila upravljaju skupom rezultata:

  • Jedan red po grupi. Kada se vrijednosti grupiraju, Integration Service stvara jedan redak za svaku jedinstvenu kombinaciju grupe po portovima.
  • Nema grupiranja po, jedan red. Ako nije označen nijedan port, cijeli ulaz se tretira kao jedna grupa i vraća se jedan redak za sve ulazne retke.
  • Posljednji red pobjeđuje. Uz agregirani rezultat, Integration Service obično prosljeđuje zadnji primljeni redak u grupi, osim ako funkcija poput FIRST ne imenuje drugi redak.

Tamo gdje je označeno nekoliko luka, redoslijed luka određuje grupuping redoslijed, a redoslijed može promijeniti rezultat. Grupaping od strane DEPTNO-a, a zatim JOB nije isto što i grouping prema JOB-u, a zatim DEPTNO-u, jer vrijednosti drugog stupca nisu nužno jedinstvene.

Svojstva transformacije agregatora

Kartica Svojstva u prozoru Uredi transformacije sadrži postavke koje određuju gdje se predmemorija nalazi i koliko se koristi. Tablica u nastavku ih navodi.

Postavljanje Što kontrolira
Direktorij predmemorije Lokalni direktorij u kojem Integration Service stvara indeksne i datoteke predmemorije podataka. Zadana vrijednost je varijabla procesa $PMCacheDir postavljena u Workflow Manageru.
TracRazina Količina detalja zapisanih u zapisnik sesije za ovu transformaciju.
Sortirani unos Izjavljuje da su dolazni podaci već sortirani po grupi po portovima. Odaberite ga samo kada je mapaping stvarno isporučuje sortirane podatke.
Veličina predmemorije podataka agregatora Veličina predmemorije podataka. Zadana vrijednost je 2,000,000 bajtova, a Automatski omogućuje Integracijskoj usluzi da odredi veličinu.
Veličina predmemorije indeksa agregatora Veličina predmemorije indeksa. Zadana vrijednost je 1,000,000 bajtova, a Automatski omogućuje Integracijskoj usluzi da odredi veličinu.
Opseg transformacije Primjenjuje logiku na svaku transakciju ili na sve dolazne podatke. All Input uklanja granice dolaznih transakcija.

Kada je omogućena inkrementalna agregacija, Integration Service zapisuje sigurnosnu kopiju datoteka predmemorije pri svakom pokretanju, tako da direktorij predmemorije mora sadržavati dva skupa datoteka umjesto jednog.

Pravila agregiranih izraza i savjeti za performanse

Agregatni izraz može kombinirati agregativnu funkciju s uvjetnim klauzulama i neagregatnim funkcijama, što omogućuje uvjetne zbrajanja i brojanja unutar jednog porta. Dva pravila ograničavaju što se može zapisati.

  • Jedna razina gniježđenja. Samo jedna agregatna funkcija može biti ugniježđena unutar druge, a prvi se evaluira unutarnji izraz.
  • Bez miješanja. Transformacija može sadržavati funkcije jedne razine ili ugniježđene funkcije, nikada oboje. Ako sadrži oboje, Dizajner označava mapuping nevažeće, pa logiku podijelite na dvije transformacije agregatora.

Što se tiče podešavanja, tri postavke obavljaju većinu posla:

  • Sortirani unos. Kada redci stignu sortirani po grupi prema portovima, svaka grupa se može osloboditi čim stigne njezin posljednji red, tako da se mnogo manje podataka pohranjuje u predmemoriju i sesija se brže izvodi. Sortirani ulaz ne može se kombinirati s inkrementalnom agregacijom.
  • Inkrementalna agregacija. Novi izvorni retci se prosljeđuju kroz mapuping i kombinirano s povijesnom predmemorijom umjesto ponovnog izračuna povijesti, što odgovara noćnom učitavanju tekućeg ukupnog iznosa.
  • Filtrirajte rano. Redci koji nikada neće doprinijeti ukupnom zbroju trebaju se izbaciti prije agregatora, bilo u upitu kvalifikatora izvora ili u Transformacija filtra, jer svaki redak koji dođe do Agregatora troši predmemoriju. Ovo je jedna od standardnih provjera tijekom podešavanje izvedbe.

Pitanja i odgovori

Obitelj agregata pokriva AVG, COUNT, FIRST, LAST, MAX, MEDIAN, MIN, PERCENTILE, STDDEV, SUM i VARIANCE. Svaki vraća sažetu vrijednost za vrijednosti koje nisu null u odabranom portu.

Cijeli ulaz se tretira kao jedna grupa, pa se za sve ulazne retke vraća jedan redak. Taj redak sadrži agregirani rezultat zajedno s posljednjim retkom koji je transformacija primila.

Indeksna predmemorija sadrži grupne vrijednosti, odnosno vrijednosti portova označenih kao Grupiraj po. Podatkovna predmemorija sadrži podatke redaka korištene u izračunu. Prekoračenje iz bilo kojeg se zapisuje u datoteke predmemorije.

Propušta samo nove izvorne podatke kroz kartuping i kombinira ga s povijesnom predmemorijom iz ranijih izvršavanja, tako da se ukupni iznosi ažuriraju umjesto da se ponovno grade. Ne može se kombinirati s opcijom sortiranog unosa.

Prema zadanim postavkama, Integration Service tretira null vrijednosti kao NULL i preskače ih, pa suma zanemaruje prazne plaće. Umjesto toga, usluga se može konfigurirati da tretira null vrijednosti u agregiranim funkcijama kao nulu.

U direktorij nazvan postavkom Cache Directory, koja je zadana na varijablu procesa $PMCacheDir konfiguriranu u Workflow Manageru. Provjerite postoji li direktorij i ima li dovoljno slobodnog prostora na disku.

AI asistenti profiliraju izvorne podatke i povijest opterećenja kako bi predložili gdje ukupna vrijednost pripada, kojoj grupiping Ključevi su važni i gdje je izračun u bazi podataka jeftiniji. Savjetnici temeljeni na strojnom učenju rangiraju opcije, a inženjer ih odobrava.

Copilot brzo izrađuje izraze i okolni SQL, što štedi vrijeme na ponavljajućem radu s portovima. Ne može vidjeti veličine predmemorije ili redoslijed portova, stoga prije spremanja provjerite svaki prijedlog u Uređivaču izraza.

Sažmite ovu objavu uz: