Normalizer Transformation in Informatica cu EXEMPLU
⚡ Rezumat inteligent
Transformarea normalizatorului în Informatica este o transformare activă care convertește un singur rând care conține coloane repetitive în mai multe rânduri și generează, de asemenea, coloanele cheie care identifică fiecare apariție pe care o produce.

Ce este transformarea normalizatorului?
Normalizatorul este o transformare activă, utilizată pentru a converti un singur rând în mai multe rânduri și invers. Este o modalitate inteligentă de a reprezenta datele într-un mod mai organizat.
Dacă într-un singur rând există date repetitive în mai multe coloane, atunci acesta poate fi împărțit în mai multe rânduri. Uneori avem date în mai multe coloane care apar. De exemplu:
| Numele studentului | Scor clasa 9 | Scor clasa 10 | Scor clasa 11 | Scor clasa 12 |
| Elevul 1 | 50 | 60 | 65 | 80 |
| Elevul 2 | 70 | 64 | 83 | 77 |
În acest caz, coloana cu scorul clasei se repetă în patru coloane. Folosind Normalizatorul, putem împărți acestea în următorul set de date.
| Numele studentului | Clasă | Scor |
| Elevul 1 | 9 | 50 |
| Elevul 1 | 10 | 60 |
| Elevul 1 | 11 | 65 |
| Elevul 1 | 12 | 80 |
| Elevul 2 | 9 | 70 |
| Elevul 2 | 10 | 64 |
| Elevul 2 | 11 | 83 |
| Elevul 2 | 12 | 77 |
Două rânduri de câte cinci coloane au devenit opt rânduri de câte trei coloane. Deoarece numărul de rânduri care ies din transformare diferă de numărul de rânduri care intră în aceasta, Normalizatorul este o transformare activă, iar aceeași regulă se aplică exemplului de vânzări construit în secțiunea următoare.
Cum se utilizează transformarea normalizatorului în Informatica
Următorii șase pași construiesc o hartăping care citește un fișier plat cu vânzările trimestriale din magazine și scrie câte un rând țintă pe trimestru.
Pas 1) Creați tabelul sursă „sales_source” și tabelul țintă „sales_target” folosind scriptul și importați-le în Informatică.
Descărcați fișierul Sales_Source.txt de mai sus
Pas 2) Creați o hartăping având sursa „sales_source” și tabela țintă „sales_target”. Hartaping Canvasul de designer conține apoi definiția sursei, Calificator sursă și definiția țintei.
Pas 3) Din meniul Transformare, creați o nouă transformare. În fereastra Creare transformare:
- Selectați Normalizatorul ca transformare
- Introduceți numele, „nrm_sales”
- Selectați opțiunea de creare
Fereastra arată ca în captura de ecran de mai jos, cu lista tipurilor de transformare în stânga și caseta cu numele dedesubt.
Pas 4) Transformarea va fi creată, selectați opțiunea „Terminat”. Transformarea nrm_sales goală se află acum pe pânza dintre Calificatorul Sursă și țintă.
Pas 5) Double faceți clic pe transformarea Normalizer, apoi:
- Selectați fila Normalizator
- Faceți clic pe pictogramă pentru a crea două coloane
- Introduceți numele coloanelor
- Setați numărul de apariții la 4 pentru vânzări și 0 pentru numele magazinului
- Selectați butonul OK
Valoarea „Ocurs” este cea mai importantă intrare din această filă: îi spune designerului de câte ori se repetă coloana într-un rând sursă. Numele magazinului apare o dată pe rând, deci valoarea sa „Ocurs” rămâne la 0.
În cadrul transformării vor fi generate coloane. Veți vedea 4 coloane de vânzări, deoarece am setat numărul de apariții la 4. Alături de acestea, Designer adaugă cheia generată și porturile ID ale coloanei generate, descrise în secțiunea următoare.
Pas 6) Apoi în Hartăping:
- Conectați cele patru coloane ale calificatorului sursă din cele patru sferturi de coloanele de normalizare, respectiv.
- Conectați coloana cu numele magazinului la coloana normalizatorului
- Conectați coloanele store_name și vânzări de la normalizator la tabelul țintă
- Conectați coloana GK_sales de la normalizator la tabelul țintă
Odată ce fiecare legătură este desenată, harta completăping arata asa.
Salvați hartaping și executați-l după creare sesiune și flux de lucru. Pentru fiecare vânzări trimestriale ale unui magazin, un rând separat va fi creat prin transformarea normalizatorului.
Rezultatul hărții noastreping va fi ca –
| Numele magazinului | Trimestru | Vânzări |
| DELHI | 1 | 150 |
| DELHI | 2 | 240 |
| DELHI | 3 | 455 |
| DELHI | 4 | 100 |
| Mumbai | 1 | 100 |
| Mumbai | 2 | 500 |
| Mumbai | 3 | 350 |
| Mumbai | 4 | 340 |
Datele sursă aveau coloane repetitive, și anume TRIMESTRUL1, TRIMESTRUL2, TRIMESTRUL3 și TRIMESTRUL4. Cu ajutorul Normalizatorului, am rearanjat datele pentru a se potrivi într-o singură coloană a TRIMESTRULUI, iar pentru o înregistrare sursă sunt create patru înregistrări în țintă.
În acest fel, puteți normaliza datele și puteți crea mai multe înregistrări pentru o singură sursă de date.
Porturi și proprietăți ale transformării normalizatorului
Coloanele nu sunt niciodată tastate în fila Porturi. Acestea sunt definite în fila Normalizator, iar Designer creează apoi automat porturile corespunzătoare. Tabelul de mai jos explică ce face fiecare intrare și fiecare port generat.
| Port sau atribut | Ce face |
| apare | Numărul de instanțe ale coloanei într-un rând sursă. O valoare de 0 marchează o coloană cu o singură apariție, cum ar fi numele magazinului. |
| Nivel | Grupează coloanele într-o ierarhie de înregistrări. Se utilizează pentru sursele COBOL și rămâne la 0 pentru o structură plată. |
| Porturi de intrare | Un normalizator de pipeline creează un port de intrare per apariție, astfel încât o valoare Occurs de 4 produce patru porturi de intrare. |
| port de ieșire | O coloană cu apariții multiple are un singur port de ieșire care returnează un rând per apariție. |
| GK_ | Cheie generată. Serviciul de integrare incrementează acest număr de secvență de fiecare dată când procesează un rând sursă. |
| GCID_ | ID-ul coloanei generate. Este indexul apariției, deci o coloană care apare de patru ori returnează 1, 2, 3 sau 4. |
Diferența dintre cele două porturi generate merită ținută minte, deoarece ambele arată ca niște contoare. GCID repornește de la 1 pentru fiecare rând sursă, în timp ce GK continuă să crească pe parcursul întregii sesiuni. În harta vânzărilorping, GK_sales este portul legat la țintă, deci fiecare dintre cele opt rânduri de ieșire poartă o cheie distinctă.
Două setări din fila Proprietăți controlează modul în care se comportă acea cheie între execuții. Reseteaza returnează valoarea cheii generate la sfârșitul sesiunii la valoarea pe care o avea înainte de începerea sesiunii. Repornire pornește secvența de taste generată de la 1 de fiecare dată când sesiunea rulează, suprascriind valoarea secvenței afișată în fila Porturi. Definițiile complete ale atributelor sunt publicate în Ghid de transformare PowerCenter.
Normalizator VSAM vs. Normalizator de conducte
PowerCenter livrează două versiuni ale aceleiași transformări, iar exemplul de mai sus folosește a doua. Alegerea între ele este decisă în întregime de sursă.
| Aspect | Normalizator VSAM | Normalizator de conducte |
| Rolul pe hartăping | Acționează ca și calificator sursă pentru o definiție sursă COBOL | Se află oriunde în conductă, în aval de un calificator sursă normal |
| Cum este creat | Creat automat când sursa COBOL este trasă în hartăping | Creat din meniul Transformare, ca în Pasul 3 de mai sus |
| Porturi de intrare pentru o coloană repetitivă | Un port de intrare pentru întreaga coloană cu apariții multiple | Un port de intrare pentru fiecare apariție a coloanei |
| Editarea coloanelor | Schimbați sursa COBOL și recreați transformarea | Editați oricând coloanele din fila Normalizator |
| Date tipice | Fișiere mainframe care utilizează clauzele OCCURS și REDEFINES | Coloane repetitive în tabele relaționale și fișiere plate |
Un fișier COBOL poate conține, de asemenea, mai multe tipuri de înregistrări în același fișier fizic, motiv pentru care versiunea VSAM citește un caiet de copii în loc de o listă de coloane. Pentru utilizarea de zi cu zi ETL Pentru a lucra împotriva bazelor de date și a fișierelor delimitate, Normalizatorul de conducte este cel pe care trebuie să îl utilizați.
Erori comune ale transformării normalizatorului și cum să le remediați
Majoritatea problemelor cu normalizatorul tracRevenim la două sau trei setări. Lista de mai jos le prezintă pe cele care apar cel mai des în timpul dezvoltării.
- Lista de porturi nu corespunde cu sursa. Prea puține sau prea multe porturi de intrare înseamnă aproape întotdeauna că valoarea Occurs este greșită. Redeschideți fila Normalizer și setați Occurs la numărul exact de coloane repetitive, apoi reconectați harta.ping, deoarece modificarea parametrilor „Occurs” reconstruiește porturile.
- Apare setat pe o coloană cu o singură apariție. Dacă se atribuie numelui magazinului o valoare „Occurs” mai mare decât 0, se înmulțesc rândurile care nu ar fi trebuit să se repete. Coloanele care apar o singură dată rămân la 0.
- Coloanele cu date nu pot fi definite. Fila Normalizator acceptă doar coloane de tip String, Nstring și Number, deci o dată trebuie transportată ca șir de caractere și convertită într-o transformare Expression înainte de a ajunge la țintă.
- Numărul de rânduri pare greșit în jurnalul de sesiune. Citirea a două rânduri sursă și scrierea a opt rânduri țintă este un comportament corect pentru o valoare Occurs de 4, nu un defect. Normalizatorul este activ tocmai pentru că aceste numărări diferă.
- Cheile generate se repetă sau sar între rulări. Aceasta este perechea Resetare și Repornire din fila Proprietăți. Repornirea forțează secvența înapoi la 1 pentru fiecare sesiune, ceea ce este rareori dorit atunci când cheia ajunge într-un tabel de tip warehouse.
- Modificările din fila Porturi nu vor fi păstrate. Porturile sunt generate, nu create. Fiecare modificare de coloană aparține filei Normalizator, iar pentru un Normalizator VSAM modificarea aparține sursei COBOL în sine.
Când mai multe grupuri repetitive trebuie împărțite simultan, este de obicei mai util să se utilizeze un Normalizator per grup și să se combine rezultatele în aval decât să se supraîncarce o singură transformare. În cazul în care cerința funcționează în sens invers, restrângerea mai multor rânduri într-unul singur, o Transformarea agregatorului este în schimb instrumentul potrivit.






