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.
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.
Krok 3) Z menu Transformacja utwórz nową transformację. W oknie Utwórz transformację:
- Wybierz Normalizator jako transformację
- Wpisz nazwę „nrm_sales”
- 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.
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.
Krok 5) Double kliknij na transformację Normalizatora, następnie:
- Wybierz kartę Normalizator
- Kliknij ikonę, aby utworzyć dwie kolumny
- Wprowadź nazwy kolumn
- Ustaw liczbę wystąpień na 4 dla sprzedaży i 0 dla nazwy sklepu
- 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.
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.
Krok 6) Następnie w mapaping:
- Połącz odpowiednio cztery kolumny kwalifikatora źródła czterech kwartałów z kolumnami normalizatora.
- Połącz kolumnę nazwy sklepu z kolumną normalizatora
- Połącz kolumny nazwa_sklepu i sprzedaż z normalizatora z tabelą docelową
- Połącz kolumnę GK_sales z normalizatora z tabelą docelową
Po narysowaniu każdego łącza mapa będzie kompletnaping wygląda tak.
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.







