Transformacja normalizująca w informatyce z PRZYKŁADEM

⚡ Inteligentne podsumowanie

Transformacja normalizująca w oprogramowaniu Informatica to aktywna transformacja, która konwertuje pojedynczy wiersz zawierający powtarzające się kolumny na wiele wierszy, a także generuje kolumny kluczowe, które identyfikują każde wygenerowane wystąpienie.

  • 🔁 Wiersze z kolumn: Cztery kolumny sprzedaży kwartalnej w jednym wierszu źródłowym stają się czterema wierszami docelowymi, po jednym na każdy kwartał.
  • 🔢 Występuje, napędza wszystko: Wartość Occurs na karcie Normalizer decyduje o tym, ile portów wejściowych i wierszy wyjściowych zostanie utworzonych.
  • 🧪 Przykład rozwiązania: Sześć mapping Kroki projektanta polegają na przeniesieniu pliku płaskiego sales_source do tabeli sales_target poprzez transformację nrm_sales.
  • 🔑 Wygenerowane porty: GK_ zwraca zwiększający się klucz dla każdego wiersza źródłowego, podczas gdy GCID_ zwraca indeks wystąpienia od 1 do N.
  • 🗂️. Dwa smaki: Normalizer VSAM odczytuje kod źródłowy COBOL, natomiast Normalizer potokowy obsługuje dane relacyjne i pliki płaskie.
  • ⚠️ Częsta pułapka: Ustawienie parametru Occurs w kolumnie z pojedynczym wystąpieniem lub pozostawienie wartości zero w kolumnie z powtarzającym się wystąpieniem powoduje uszkodzenie listy portów.

Transformacja normalizująca w informatyce

Co to jest transformacja normalizująca?

Normalizator to aktywna transformacja, służąca do konwersji pojedynczego wiersza na wiele wierszy i odwrotnie. To inteligentny sposób na uporządkowaną reprezentację danych.

Jeśli w jednym wierszu powtarzają się dane w wielu kolumnach, można go podzielić na kilka wierszy. Czasami dane znajdują się w wielu powtarzających się kolumnach. Na przykład:

Nazwa Student Ocena klasy 9 Ocena klasy 10 Ocena klasy 11 Ocena klasy 12
Student 1 50 60 65 80
Student 2 70 64 83 77

W tym przypadku kolumna z wynikami klas powtarza się w czterech kolumnach. Używając Normalizatora, możemy podzielić je na następujący zestaw danych.

Nazwa Student Klasa Wynik
Student 1 9 50
Student 1 10 60
Student 1 11 65
Student 1 12 80
Student 2 9 70
Student 2 10 64
Student 2 11 83
Student 2 12 77

Dwa wiersze po pięć kolumn stały się ośmioma wierszami po trzy kolumny. Ponieważ liczba wierszy wychodzących z transformacji różni się od liczby wierszy wchodzących do niej, Normalizator jest transformacją aktywną i ta sama zasada dotyczy przykładu sprzedaży z następnej sekcji.

Jak korzystać z transformacji normalizującej w Informatica

Poniższe sześć kroków tworzy mapęping który odczytuje płaski plik kwartalnych danych o sprzedaży w sklepie i zapisuje jeden wiersz docelowy na kwartał.

Krok 1) Utwórz tabelę źródłową „źródło_sprzedaży” i tabelę docelową „target_sprzedaży” za pomocą skryptu i zaimportuj je Informatyka.

Pobierz powyższy plik Sales_Source.txt

Krok 2) Utwórz mapęping mając źródło „sales_source” i tabelę docelową „sales_target”. Mapaping Następnie płótno projektanta zawiera definicję źródła, jego Kwalifikator źródła i definicja celu.

Mapaping Płótno projektanta z definicją sales_source, kwalifikatorem źródła i tabelą sales_target

Krok 3) Z menu Transformacja utwórz nową transformację. W oknie Utwórz transformację:

  1. Wybierz Normalizator jako transformację
  2. Wpisz nazwę „nrm_sales”
  3. Wybierz opcję tworzenia

Okno wygląda jak na zrzucie ekranu poniżej, z listą typów transformacji po lewej stronie i polem nazwy poniżej.

Utwórz okno transformacji z wybranym Normalizatorem i wprowadzoną nazwą nrm_sales

Krok 4) Transformacja zostanie utworzona, wybierz opcję „Gotowe”. Pusta transformacja nrm_sales znajduje się teraz na kanwie między kwalifikatorem źródłowym a celem.

Mapaping płótno pokazujące nowo utworzoną transformację normalizatora nrm_sales bez żadnych kolumn

Krok 5) Double kliknij na transformację Normalizatora, następnie:

  1. Wybierz kartę Normalizator
  2. Kliknij ikonę, aby utworzyć dwie kolumny
  3. Wprowadź nazwy kolumn
  4. Ustaw liczbę wystąpień na 4 dla sprzedaży i 0 dla nazwy sklepu
  5. Wybierz przycisk OK

Wartość „Występuje” to najważniejszy wpis na tej karcie: informuje ona Projektanta, ile razy kolumna powtarza się w jednym wierszu źródłowym. Nazwa sklepu pojawia się raz w wierszu, więc jej wartość „Występuje” pozostaje na poziomie 0.

Karta normalizatora okna Edytuj transformacje z kolumną sprzedaży ustawioną na cztery wystąpienia i nazwą sklepu ustawioną na zero

Kolumny zostaną wygenerowane podczas transformacji. Zobaczysz 4 kolumny sprzedaży, ponieważ ustawiliśmy liczbę wystąpień na 4. Obok nich Projektant dodaje wygenerowany klucz i wygenerowane porty identyfikatorów kolumn opisane w następnej sekcji.

Wygenerowana lista portów nrm_sales zawierająca cztery porty wejściowe sprzedaży oraz porty GK i GCID

Krok 6) Następnie w mapaping:

  1. Połącz odpowiednio cztery kolumny kwalifikatora źródła czterech kwartałów z kolumnami normalizatora.
  2. Połącz kolumnę nazwy sklepu z kolumną normalizatora
  3. Połącz kolumny nazwa_sklepu i sprzedaż z normalizatora z tabelą docelową
  4. Połącz kolumnę GK_sales z normalizatora z tabelą docelową

Po narysowaniu każdego łącza mapa będzie kompletnaping wygląda tak.

Ukończona mapaping z czterema portami ćwiartkowymi i nazwą sklepu połączonymi z nrm_sales, a portami store_name, sales i GK_sales połączonymi z sales_target

Zapisz mapęping i wykonaj go po utworzeniu Sesja oraz workflow. Dla każdego kwartału sprzedaży sklepu zostanie utworzony oddzielny wiersz w wyniku transformacji normalizującej.

Wynik naszej mapyping będzie jak –

Nazwa sklepu Kwartał Sprzedaż
DELHI 1 150
DELHI 2 240
DELHI 3 455
DELHI 4 100
MUMBAI 1 100
MUMBAI 2 500
MUMBAI 3 350
MUMBAI 4 340

Dane źródłowe miały powtarzające się kolumny: KWARTAŁ1, KWARTAŁ2, KWARTAŁ3 i KWARTAŁ4. Za pomocą Normalizatora uporządkowaliśmy dane tak, aby zmieściły się w jednej kolumnie KWARTAŁU, a dla jednego rekordu źródłowego w rekordzie docelowym utworzono cztery rekordy.

W ten sposób można normalizować dane i tworzyć wiele rekordów dla jednego źródła danych.

Porty transformacji normalizatora i właściwości

Kolumny nigdy nie są wpisywane na karcie Porty. Są one definiowane na karcie Normalizator, a następnie Projektant automatycznie tworzy pasujące porty. Poniższa tabela wyjaśnia, co robi każdy wpis i każdy wygenerowany port.

Port lub atrybut Co to robi
Występuje Liczba wystąpień kolumny w jednym wierszu źródłowym. Wartość 0 oznacza kolumnę występującą pojedynczo, taką jak nazwa sklepu.
Poziom Grupuje kolumny w hierarchię rekordów. Jest używany w przypadku źródeł COBOL i ma wartość 0 w przypadku struktury płaskiej.
Porty wejściowe Normalizator potoku tworzy jeden port wejściowy na wystąpienie, więc wartość Occurs równa 4 generuje cztery porty wejściowe.
Port wyjściowy Kolumna wielokrotnie występująca ma pojedynczy port wyjściowy, który zwraca jeden wiersz na wystąpienie.
GK_ Wygenerowany klucz. Usługa integracji zwiększa ten numer sekwencji za każdym razem, gdy przetwarza wiersz źródłowy.
GCID_ Wygenerowany identyfikator kolumny. Jest to indeks wystąpienia, więc kolumna, która występuje cztery razy, zwraca 1, 2, 3 lub 4.

Warto zapamiętać różnicę między dwoma wygenerowanymi portami, ponieważ oba wyglądają jak liczniki. GCID restartuje się od 1 dla każdego wiersza źródłowego, podczas gdy GK rośnie w całej sesji. Na mapie sprzedażypingGK_sales to port powiązany z celem, więc każdy z ośmiu wierszy wyjściowych zawiera odrębny klucz.

Dwa ustawienia na karcie Właściwości kontrolują zachowanie tego klawisza pomiędzy uruchomieniami. Zresetuj zwraca wygenerowaną wartość klucza na końcu sesji do wartości, którą posiadał on przed rozpoczęciem sesji. restart Uruchamia wygenerowaną sekwencję klawiszy od 1 przy każdym uruchomieniu sesji, nadpisując wartość sekwencji wyświetlaną na karcie Porty. Pełne definicje atrybutów są publikowane w Przewodnik po transformacji PowerCenter.

Normalizator VSAM kontra normalizator rurociągów

PowerCenter dostarcza dwie wersje tej samej transformacji, a powyższy przykład wykorzystuje drugą. Wybór między nimi zależy wyłącznie od źródła.

WYGLĄD Normalizator VSAM Normalizator rurociągów
Rola na mapieping Działa jako kwalifikator źródła dla definicji źródła COBOL Znajduje się w dowolnym miejscu w procesie, poniżej normalnego kwalifikatora źródła
Jak to jest stworzone Tworzone automatycznie po przeciągnięciu źródła COBOL na mapęping Utworzono z menu Transformacja, jak w kroku 3 powyżej
Porty wejściowe dla powtarzającej się kolumny Jeden port wejściowy dla całej kolumny wielokrotnie występującej Jeden port wejściowy dla każdego wystąpienia kolumny
Edycja kolumn Zmień źródło COBOL i utwórz transformację ponownie Edytuj kolumny na karcie Normalizator w dowolnym momencie
Typowe dane Pliki mainframe korzystające z klauzul OCCURS i REDEFINES Powtarzające się kolumny w tabelach relacyjnych i plikach płaskich

Plik COBOL może również zawierać kilka typów rekordów w tym samym pliku fizycznym, dlatego wersja VSAM odczytuje kopię książki, a nie listę kolumn. Na co dzień ETL Jeśli pracujesz na bazach danych i plikach ograniczonych, powinieneś sięgnąć po Pipeline Normalizer.

Typowe błędy transformacji normalizatora i jak je naprawić

Większość problemów z Normalizatorem tracWróćmy do dwóch lub trzech ustawień. Poniższa lista obejmuje te, które pojawiają się najczęściej podczas rozwoju.

  • Lista portów nie zgadza się ze źródłem. Zbyt mało lub zbyt wiele portów wejściowych prawie zawsze oznacza, że ​​wartość „Wystąpienia” jest nieprawidłowa. Otwórz ponownie kartę „Normalizator” i ustaw „Wystąpienia” na dokładną liczbę powtarzających się kolumn, a następnie ponownie połącz mapę.ping, ponieważ zmiana Występuje powoduje przebudowę portów.
  • Występuje w kolumnie z pojedynczym wystąpieniem. Podanie w nazwie sklepu wartości „Occurs” większej niż 0 powoduje mnożenie wierszy, które nigdy nie miały się powtarzać. Kolumny z pojedynczym wystąpieniem pozostają z wartością 0.
  • Nie można definiować kolumn dat. Karta Normalizer akceptuje tylko kolumny typu String, Nstring i Number, dlatego data musi być przenoszona jako ciąg znaków i konwertowana w transformacji Expression, zanim dotrze do celu.
  • Liczba wierszy w dzienniku sesji jest nieprawidłowa. Odczyt dwóch wierszy źródłowych i zapis ośmiu wierszy docelowych to prawidłowe zachowanie dla wartości parametru „Occurs” równej 4, a nie defekt. Normalizator jest aktywny właśnie dlatego, że te liczby się różnią.
  • Wygenerowane klucze powtarzają się lub przeskakują między przebiegami. To jest para „Reset” i „Restart” na karcie Właściwości. „Restart” wymusza powrót sekwencji do 1 dla każdej sesji, co jest rzadko pożądane, gdy klucz trafia do tabeli magazynu.
  • Zmiany wprowadzone na karcie Porty nie zostaną zapisane. Porty są generowane, a nie tworzone. Każda zmiana kolumny znajduje się na karcie Normalizer, a w przypadku Normalizera VSAM zmiana znajduje się w samym kodzie źródłowym COBOL.

Gdy kilka powtarzających się grup musi zostać podzielonych jednocześnie, zazwyczaj wygodniej jest użyć jednego Normalizatora na grupę i połączyć wyniki w dół strumienia, niż przeciążać pojedynczą transformację. W przeciwnym wypadku, gdy wymaganie jest zwarte, wiele wierszy zostaje połączonych w jeden, Transformacja agregatora jest właściwym narzędziem.

FAQ

Nie. Transformacja dzieli tylko jeden wiersz na wiele. Łączenie wielu wierszy w jeden odbywa się za pomocą agregatora lub wyrażenia, które przestawia wartości za pomocą portów zmiennych, w zależności od kształtu kolumn wyjściowych.

Tylko String, Nstring i Number. Na karcie Normalizer nie ma opcji Datetime, więc wartości dat muszą przejść przez transformację jako stringi i zostać przekonwertowane w transformacji Expression po obu jej stronach.

Tak. Mapa integracji danych w chmurzeping Projektant oferuje transformację Normalizer o tym samym przeznaczeniu, konfigurowaną za pomocą wartości występującej dla każdego pola. Układ kart różni się od PowerCenter, więc mapapingsą przebudowywane, a nie kopiowane.

Unia łączy wiersze przychodzące z kilku potoków w jeden strumień ze wspólną listą portów. Normalizator działa w jednym potoku i mnoży wiersze z powtarzających się kolumn w każdym przychodzącym rekordzie.

Normalizator potoku można zbudować w Transformation Developer lub awansować z mapyping, a następnie udostępniony. Normalizator VSAM nie może tego zrobić, ponieważ jest powiązany z definicją źródłową COBOL, która go wygenerowała.

Sama transformacja jest tania, ponieważ nie wymaga buforowania. Koszt pojawia się później: wartość „Occurs” równa cztery razy zwiększa objętość wiersza przy każdej kolejnej transformacji, którą musi obsłużyć docelowy autor.

Modele profilowania skanują kolumny źródłowe i oznaczają powtarzające się grupy, takie jak KWARTAŁ 1 do KWARTAŁ 4, które należą do wierszy, a nie kolumn. Ta sugestia to punkt wyjścia — wartości i obsługa kluczy nadal wymagają zatwierdzenia przez programistę.

Pomaga na mapieping a nie w jego obrębie — pisząc kod SQL, który odwraca tabelę do porównania, generuje dane testowe lub tworzy pliki parametrów. Sam obszar roboczy projektanta nie jest czymś, co Copilot może edytować.

Podsumuj ten post następująco: