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.

  • 🔁 Rânduri din coloane: Patru coloane de vânzări trimestriale dintr-un rând sursă devin patru rânduri țintă, câte unul pentru fiecare trimestru.
  • 🔢 Se întâmplă totul: Valoarea Occurs din fila Normalizer decide câte porturi de intrare și câte rânduri de ieșire sunt create.
  • 🧪 Exemplu lucrat: Șase Hartăping Pașii de designer mută un fișier plat sales_source într-un tabel sales_target prin transformarea nrm_sales.
  • 🔑 Porturi generate: GK_ returnează o cheie incrementală pentru fiecare rând sursă, în timp ce GCID_ returnează indicele de apariție de la 1 la N.
  • 🗂️ Două arome: Normalizorul VSAM citește surse COBOL, în timp ce normalizatorul de pipeline gestionează date relaționale și fișiere plate.
  • ⚠️ Capcană comună: Setarea valorii „Occurs” pe o coloană cu o singură apariție sau lăsarea acesteia la zero pentru o coloană repetitivă întrerupe lista de porturi.

Normalizer Transformation în Informatica

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.

Hartăping Canvasul de designer cu definiția sales_source, calificatorul său sursă și tabelul sales_target

Pas 3) Din meniul Transformare, creați o nouă transformare. În fereastra Creare transformare:

  1. Selectați Normalizatorul ca transformare
  2. Introduceți numele, „nrm_sales”
  3. 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.

Fereastra Creare Transformare cu Normalizatorul selectat și numele nrm_sales introdus

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ă.

Hartăping pânză care prezintă transformarea nrm_sales Normalizer nou creată, fără coloane încă

Pas 5) Double faceți clic pe transformarea Normalizer, apoi:

  1. Selectați fila Normalizator
  2. Faceți clic pe pictogramă pentru a crea două coloane
  3. Introduceți numele coloanelor
  4. Setați numărul de apariții la 4 pentru vânzări și 0 pentru numele magazinului
  5. 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.

Fila Normalizator din fereastra Editare transformări cu coloana vânzări setată la patru apariții și numele magazinului setat la zero

Î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.

Listă de porturi generată pentru nrm_sales, care arată patru porturi de intrare pentru vânzări, plus porturile GK și GCID

Pas 6) Apoi în Hartăping:

  1. Conectați cele patru coloane ale calificatorului sursă din cele patru sferturi de coloanele de normalizare, respectiv.
  2. Conectați coloana cu numele magazinului la coloana normalizatorului
  3. Conectați coloanele store_name și vânzări de la normalizator la tabelul țintă
  4. Conectați coloana GK_sales de la normalizator la tabelul țintă

Odată ce fiecare legătură este desenată, harta completăping arata asa.

Hartă completatăping cu cele patru porturi secundare și numele magazinului legate în nrm_sales și porturile store_name, sales și GK_sales legate la sales_target

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.

Întrebări frecvente

Nu. Transformarea împarte doar un rând în mai multe. Restrângerea mai multor rânduri într-unul singur se face cu un agregator sau cu o expresie care pivotează valorile folosind porturi variabile, în funcție de forma coloanelor de ieșire.

Numai șiruri de caractere, șiruri N și număr. Nu există opțiunea Datetime în fila Normalizer, așadar valorile datei trebuie să treacă prin transformare ca șiruri de caractere și să fie convertite într-o transformare Expression pe ambele părți ale acesteia.

Da. Hartă de integrare a datelor în cloudping designer oferă o transformare Normalizer cu același scop, configurată printr-o valoare care apare per câmp. Aspectul filelor diferă de PowerCenter, așadar hartapingsunt reconstruite în loc să fie copiate.

O uniune îmbină rândurile care sosesc din mai multe conducte într-un singur flux cu o listă de porturi partajată. Un normalizator lucrează pe o singură conductă și înmulțește rândurile din coloanele repetitive din interiorul fiecărei înregistrări primite.

Un normalizator de canalizare poate fi construit în Transformation Developer sau promovat dintr-o hartă.pingși apoi partajat. Un normalizator VSAM nu poate, deoarece este legat de definiția sursă COBOL care l-a generat.

Transformarea în sine este ieftină deoarece nu deține memoria cache. Costul apare în aval: o valoare Occurs de patru cvadruplează volumul de rânduri la fiecare transformare ulterioară și pe care trebuie să-l gestioneze scriitorul țintă.

Modelele de profilare scanează coloanele sursă și semnalizează grupuri repetitive, cum ar fi TRIMESTRUL1 până la TRIMESTRUL4, care aparțin unor rânduri și nu unor coloane. Sugestia este un punct de plecare — valorile „occures” și gestionarea cheilor necesită în continuare confirmarea de către un dezvoltator.

Ajută pe hartăping mai degrabă decât în ​​interiorul acestuia — scriind codul SQL care anulează pivotarea unui tabel pentru comparație, generând date de testare sau elaborând fișiere de parametri. Canvasul Designer în sine nu este ceva ce Copilot poate edita.

Rezumați această postare cu: