Transformacja agregatora w informatyce z przykładem

⚡ Inteligentne podsumowanie

Transformacja agregatora w Informatica to aktywny obiekt wykonujący obliczenia, takie jak sumowanie, średnia i liczenie w grupie wierszy, przechowujący te wiersze w pamięci podręcznej agregatu do momentu ukończenia każdej grupy.

  • 🧮 Obliczenia grupowe: Grupowanie według portów definiuje grupy, a usługa integracji zwraca jeden wiersz dla każdej unikalnej kombinacji.
  • 💾 Dwie skrytki: Wartości grup są przechowywane w pamięci podręcznej indeksów, natomiast dane wierszy — w pamięci podręcznej danych.
  • 🧪 Przykład rozwiązania: Wyrażenie sum(SAL) pogrupowane według DEPTNO ładuje sumy działów do SUM_SAL_DEPTWISE.
  • 🔀 Posortowane dane wejściowe: Wstępne sortowanie grup według portów pozwala usłudze integracji na wcześniejsze zwalnianie każdej grupy i buforowanie znacznie mniejszej ilości danych.
  • 📈 Przyrostowe przebiegi: Agregacja przyrostowa ponownie wykorzystuje pamięć podręczną historii, dzięki czemu obliczane są tylko nowe wiersze źródłowe.
  • ???? Limit zagnieżdżania: Pojedyncza transformacja może zawierać funkcje jednopoziomowe lub funkcje zagnieżdżone, nigdy obydwa naraz.

Transformacja agregatora w informatyce

Co to jest transformacja agregatora?

Transformacja agregatorowa to aktywna transformacja, która wykonuje obliczenia agregacyjne, takie jak suma, średnia i liczenie.

Na przykład, jeśli chcesz obliczyć sumę pensji wszystkich pracowników w podziale na działy, możesz skorzystać z transformacji Aggregator.

Operacje agregacji są wykonywane na grupie wierszy, więc do przechowywania wszystkich tych rekordów i wykonywania obliczeń wymagany jest tymczasowy symbol zastępczy.

W tym celu wykorzystywana jest pamięć podręczna agregatora. Jest to tymczasowa pamięć główna przydzielona transformacji agregatora do wykonywania takich operacji i składa się z dwóch części: pamięci podręcznej indeksów, która przechowuje wartości grup, oraz pamięci podręcznej danych, która przechowuje dane wierszy podlegające agregacji.

Transformacja jest aktywna, ponieważ zmienia liczbę wierszy w kanale. Może on zawierać kilka tysięcy rekordów pracowników, a opuszcza go tylko jeden wiersz na dział.

Jak korzystać z transformacji agregatora w Informatica

W tym przykładzie obliczymy sumę wynagrodzeń według działów. W tym celu potrzebujemy nowej kolumny do przechowywania tej sumy. Więc najpierw przygotujemy nową kolumnę.

Krok 1) Utwórz nową tabelę docelową bazy danych, na przykład „sum_sal_deptwise”, korzystając z poniższego skryptu. Zobaczysz nową tabelę docelową bazy danych utworzoną pod Targets folder w następnym kroku.

Pobierz powyższy plik Create_table_sal_deptwise.txt

Krok 2) Stwórz nowy mapaping “m_sum_sal_deptwise”.

Aby utworzyć nową mapęping, potrzebujemy tabeli źródłowej (EMP) i tabeli docelowej (sum_sal_deptwise) w Mapieping Projektant, więc musimy

  1. Zaimportuj tabelę docelową „sum_sal_deptwise” na mapieping.
  2. Zaimportuj tabelę źródłową „emp”.

Obie definicje są teraz widoczne na płótnie, jak pokazano poniżej.

Mapaping Projektant ze źródłem EMP, SQ_EMP i zaimportowanym celem SUM_SAL_DEPTWISE

Krok 3) Na mapieping,

  1. Z Kwalifikator źródła, usuń kolumny empno, ename, job, mgr, hiredate i comm, pozostawiając jedynie kolumny deptno i sal.
  2. Utwórz nową transformację agregatora za pomocą menu skrzynki narzędziowej, jak pokazano na zrzucie ekranu. Po kliknięciu ikony agregatora zostanie utworzona nowa transformacja agregatora.

Nowy obiekt AGGTRANS pojawi się obok przyciętego kwalifikatora źródłowego.

Ikona agregatora na pasku narzędzi tworząca AGGTRANS obok przyciętego SQ_EMP

Krok 4) Przeciągnij i upuść kolumny SAL i DEPTNO z kwalifikatora źródłowego (SQ_EMP) do transformacji agregatora. Te dwa porty są teraz połączone w AGGTRANS.

Porty SAL i DEPTNO przeciągnięte z SQ_EMP do transformacji agregatora AGGTRANS

Krok 5) Double-kliknij transformację agregatora, aby otworzyć jej właściwości, a następnie

  1. Dodaj nowy port w transformacji
  2. Zmień nazwę portu na SUM_SAL
  3. Zmień typ danych tego nowego portu na podwójny
  4. Aby uczynić ten port portem wyjściowym, zaznacz pole wyboru portu wyjściowego
  5. Kliknij opcję wyrażenia

Karta Porty zawiera teraz listę SAL, DEPTNO i nowy port wyjściowy SUM_SAL.

Karta portów AGGTRANS z nowym portem wyjściowym SUM_SAL ustawionym na podwójny typ danych

Krok 6) W oknie Edytora wyrażeń

  1. Dodaj wyrażenie sum(SAL); musisz napisać to wyrażenie samodzielnie.
  2. Kliknij przycisk OK, co spowoduje powrót do okna Edytuj transformacje.

Edytor wyrażeń pokazuje wyrażenie zbiorcze przypisane do SUM_SAL.

Edytor wyrażeń dla portu SUM_SAL przechowującego wyrażenie zbiorcze sum(SAL)

Krok 7) W oknie Edycja transformacji wybierz opcję „Grupuj według”, zaznaczając pole wyboru przy kolumnie deptno i kliknij OK. Wybierając opcję „Grupuj według” dla deptno, instruujemy Informaticę, aby grupowała wynagrodzenia według deptno.

Karta portów z zaznaczonym polem wyboru Grupuj według portu DEPTNO

Krok 8) Połącz kolumny deptno i sum_sal z transformacji agregatora z tabelą docelową. Mapaping zostaje wówczas ukończona od źródła do celu.

DEPTNO i SUM_SAL połączone z AGGTRANS do definicji docelowej SUM_SAL_DEPTWISE

Teraz zapisz mapęping i wykonaj go po utworzeniu nowego Sesja dla tej mapypingTabela docelowa zawierałaby sumę wynagrodzeń według działów. W ten sposób możemy użyć transformacji Agregatora do obliczenia wyników zagregowanych.

Grupuj według portów w transformacji agregatora

W powyższym kroku oznaczono pojedynczy port jako Grupuj według, co przekształciło sumę dla całej firmy w jedną sumę dla każdego działu. W ten sam sposób można oznaczyć dowolny port wejściowy, wejściowy/wyjściowy, wyjściowy lub zmienny.

Zestawem wyników rządzą trzy zasady:

  • Jeden rząd na grupę. Po zgrupowaniu wartości usługa integracji generuje jeden wiersz dla każdej unikatowej kombinacji grupowania według portów.
  • Brak grupowania, jeden wiersz. Jeśli nie zaznaczono żadnego portu, całe dane wejściowe są traktowane jako pojedyncza grupa i dla wszystkich wierszy wejściowych zwracany jest jeden wiersz.
  • Ostatni rząd wygrywa. Oprócz wyniku zbiorczego usługa integracji zwykle przekazuje ostatni wiersz otrzymany w grupie, chyba że funkcja taka jak FIRST zwróci nazwę innego wiersza.

W przypadku oznaczenia kilku portów, kolejność portów decyduje o grupieping zamówienie, a zamówienie może zmienić wynik. Grupaping przez DEPTNO i wtedy JOB nie jest tym samym co grupaping według JOB i następnie DEPTNO, ponieważ wartości drugiej kolumny nie muszą być unikalne.

Właściwości transformacji agregatora

Karta Właściwości w oknie Edycja transformacji zawiera ustawienia decydujące o miejscu przechowywania pamięci podręcznej i jej wykorzystaniu. Poniższa tabela zawiera ich listę.

Oprawa Co kontroluje
Katalog pamięci podręcznej Katalog lokalny, w którym usługa integracji tworzy pliki indeksów i pamięci podręcznej danych. Domyślnie jest to zmienna procesu $PMCacheDir ustawiona w Menedżerze przepływów pracy.
TracPoziom wejściowy Ilość szczegółów zapisanych w dzienniku sesji dla tej transformacji.
Posortowane dane wejściowe Deklaruje, że dane przychodzące są już posortowane według grupy według portów. Wybierz tę opcję tylko wtedy, gdy mapaping naprawdę dostarcza posortowane dane.
Rozmiar pamięci podręcznej danych agregatora Rozmiar pamięci podręcznej danych. Wartość domyślna to 2 000 000 bajtów, a opcja Auto pozwala usłudze integracji na ustalenie rozmiaru.
Rozmiar pamięci podręcznej indeksu agregatora Rozmiar pamięci podręcznej indeksów. Domyślnie wynosi 1 000 000 bajtów, a opcja Auto pozwala usłudze integracji na ustalenie rozmiaru.
Zakres transformacji Stosuje logikę do każdej transakcji lub do wszystkich danych przychodzących. Opcja „Wszystkie dane wejściowe” pomija granice transakcji przychodzących.

Gdy włączona jest agregacja przyrostowa, usługa integracji zapisuje kopię zapasową plików pamięci podręcznej przy każdym uruchomieniu, więc katalog pamięci podręcznej musi zawierać dwa zestawy plików, a nie jeden.

Reguły wyrażeń agregowanych i wskazówki dotyczące wydajności

Wyrażenie agregujące może łączyć funkcję agregującą z klauzulami warunkowymi i funkcjami nieagregującymi, co umożliwia sumowanie i zliczanie warunkowe w ramach jednego portu. Dwie reguły ograniczają to, co można zapisać.

  • Jeden poziom zagnieżdżenia. Tylko jedna funkcja agregująca może być zagnieżdżona w innej, a wyrażenie wewnętrzne jest oceniane jako pierwsze.
  • Bez mieszania. Transformacja może zawierać funkcje jednopoziomowe lub zagnieżdżone, nigdy obie. Jeśli zawiera obie, Projektant zaznacza mapę.ping jest nieprawidłowy, więc podziel logikę na dwie transformacje agregatora.

Jeśli chodzi o strojenie, największą część pracy wykonują trzy ustawienia:

  • Posortowane dane wejściowe. Gdy wiersze napływają posortowane według grup i portów, każda grupa może zostać zwolniona zaraz po nadejściu ostatniego wiersza, co pozwala na buforowanie mniejszej ilości danych i szybsze działanie sesji. Posortowanych danych wejściowych nie można łączyć z agregacją przyrostową.
  • Agregacja przyrostowa. Nowe wiersze źródłowe są przesyłane przez mapęping i połączyć z historyczną pamięcią podręczną zamiast przeliczać historię, co pasuje do nocnego obciążenia bieżącej sumy.
  • Filtruj wcześnie. Wiersze, które nigdy nie będą przyczyniać się do sumy, należy usunąć przed agregatorem, albo w zapytaniu kwalifikatora źródła, albo w Transformacja filtra, ponieważ każdy wiersz docierający do agregatora kosztuje pamięć podręczną. Jest to jedno ze standardowych sprawdzeń podczas dostrajanie wydajności.

FAQ

Łączna rodzina obejmuje AVG, LICZBA, PIERWSZA, OSTATNIA, MAKSYMALNA, MEDIANA, MIN, PERCENTYL, ODCH. STANDARDOWE, SUMA i WARYANCJA. Każda z tych funkcji zwraca wartość sumaryczną dla wartości innych niż null w wybranym porcie.

Całe dane wejściowe są traktowane jako jedna grupa, więc dla wszystkich wierszy wejściowych zwracany jest jeden wiersz. Wiersz ten zawiera zbiorczy wynik wraz z ostatnim wierszem otrzymanej transformacji.

Pamięć podręczna indeksów przechowuje wartości grup, czyli wartości portów oznaczonych jako „Grupuj według”. Pamięć podręczna danych przechowuje dane wierszy używane w obliczeniach. Przepełnienie z obu tych źródeł jest zapisywane do plików pamięci podręcznej.

Przepuszcza przez mapę tylko nowe dane źródłoweping i łączy je z historyczną pamięcią podręczną z poprzednich uruchomień, dzięki czemu sumy są aktualizowane, a nie przebudowywane. Nie można tego łączyć z opcją sortowania danych wejściowych.

Domyślnie usługa integracji traktuje wartości null jako NULL i pomija je, więc suma ignoruje puste pensje. Zamiast tego usługę można skonfigurować tak, aby traktowała wartości null w funkcjach agregujących jako zero.

Do katalogu wskazanego w ustawieniu Cache Directory, którego wartością domyślną jest zmienna procesu $PMCacheDir skonfigurowana w Menedżerze przepływów pracy. Upewnij się, że katalog istnieje i ma wystarczającą ilość wolnego miejsca na dysku.

Asystenci AI profilują dane źródłowe i historię obciążenia pracą, aby zasugerować, gdzie należy umieścić daną sumę i która grupaping Klucze mają znaczenie i gdzie w bazie danych obliczenie jest tańsze. Doradcy bazujący na uczeniu maszynowym klasyfikują opcje, a inżynier je zatwierdza.

Copilot szybko tworzy wyrażenia i towarzyszący im kod SQL, co oszczędza czas na powtarzalną pracę z portami. Nie widzi rozmiaru pamięci podręcznej ani kolejności portów, dlatego przed zapisaniem sprawdź każdą sugestię w Edytorze Wyrażeń.

Podsumuj ten post następująco: