Przejdź do głównej zawartości

Bloczki transformacji


Rozdział zawiera szczegółowy opis bloczków transformacji.

Bloczki zostały umieszczone po lewej stronie okna w menu Przybornik.

image

Zalicza się do nich następujące typy bloczków:

  1. Odwzorowanie - w miejscu
  2. Loop Join
  3. Normalizator
  4. Separator rekordów
  5. Klasyfikacja
  6. Łączenie posortowanych rekordów
  7. Łączenie ścieżek
  8. Agregacja
  9. Uruchamianie kodu
  10. Wiersze na kolumny
  11. Odwzorowanie - kopia
  12. Uruchamianie kodu - parametry złożone

Odwzorowanie - w miejscu​

Pic 289

Opcja Odwzorowanie – w miejscu umożliwia przetwarzanie i modyfikowanie analizowanego rekordu danych bez tworzenia ich kopii.

image

Po przejściu na zakładkę Szczegóły możliwe jest wykonywanie dowolnych operacji na rekordach oraz polach danych.

Operowanie na poszczególnych elementach danych zostało szczegółowo opisane w rozdziale poświęconym dostosowywania schematów rekordów oraz pól patrz: Przetwarzanie danych.

Zakładka Operacje zawiera chronologiczną listę zmian, jakie nastąpiły podczas modyfikowania danych. Lista zmian będzie wykonywana na każdym przechodzącym przez bloczek rekordzie. Pasek narzędzi okna

Pic 291

pozwala na:

  1. wyświetlenie operacji powiązanych z węzłem (Pokaż operacje powiązane z węzłem),
  2. oznaczenie węzłów powiązanych z operacją (Zaznacz węzły powiązane z operacją),
  3. grupowanie operacji (Grupuj operacje),
  4. usunięcie operacji (Usuń operacje),
  5. przeniesienie operacji w górę (Przenieś zaznaczone operacje w górę),
  6. przeniesienie operacji w dół (Przenieś zaznaczone operacje w dół),
  7. wstawienie wykonywanych operacji w zaznaczonym miejscu (w przeciwieństwie do dodawania ich na końcu, które jest domyślnym zachowaniem) (Wstaw nowe operacje przed wybraną),
  8. dostęp do menu kontekstowego Operacje i Narzędzia.
wskazówka

Podczas pracy z bardzo dużym schematem– (dużą ilością pól / rekordów), danych możliwe jest skorzystanie z drugiego widoku szczegółów bloczka – zakładka Drugi widok. Zastosowanie takiego rozwiązania pozwala na modyfikowanie danych z dwóch poziomów jednocześnie, co usprawnia pracę Użytkownika minimalizując czas realizacji zmian. Oba okna współpracują ze sobą, ułatwiając przenoszenie elementów w drzewie.

Loop Join​

Pic 292

Bloczek Loop Join umożliwia dołączanie wyników zapytania z dodatkowego źródła do rekordów ze źródła pierwotnego. Zakładka Szczegóły służy do określenia warunków pobierania informacji z podłączonych źródeł.

Pic 293

  1. Użytkownik określa wymagane zapytania do źródła dodatkowego (portu przepuszczającego dane z dodatkowego źródła).
  2. Okno Dane wejściowe z portu ‘Input’ przedstawia widok podglądowy schematu elementów danych wejściowych pochodzących z pierwszego źródła. Okno obok umożliwia przedstawienie zapytania do portu ‘QueryInput’ – dane z dodatkowego źródła. Jedynie dane spełniające zadane wymagania zostaną przepuszczone.
  3. Okno Pytaj tylko jeżeli... pozwala na zdefiniowanie warunku dla operacji realizowanej przez bloczek.
wskazówka

Dodatkowo ustawienie pola ‘InnerJoin’, dostępnego z poziomu właściwości bloczka (zakładka Właściwości) decyduje czy dalsze rekordy mają być pomijane z przetwarzania, jeśli zapytanie nie zwróciło żadnych danych.

image

Przykładowo:

Budując pakiet, w którym pobieramy dane klienta z tabeli KLIENT oraz wnioski danego klienta z tabeli WNIOSEK w pierwszym bloczku odczytu danych z bazy pobieramy dane klienta.

W bloczku Loop Join przenosimy na prawą stronę pole K_ID, czyli pole, które wykorzystane zastanie do złączenia danych pochodzących z drugiego źródła czyli listy wniosków.

image

W kolejnym bloczku odczytu danych z bazy Wnioski_klienta należy określić, że zaczytane mają być wnioski tylko przypisane do danego id klienta K_ID W tym celu w zapytaniu wykorzystaj pole relacyjne W_KLIENT_ID równe id klienta. Przykład składni zapytania poniżej.

image

Normalizator​

image

Bloczek Normalizator pozwala na zmianę struktury danych z postaci nadmiarowej tabeli w rozgałęziające się drzewo.

image

  1. Bloczek Normalizator służy do zamiany płaskich rekordów, których źródłem jest baza danych lub plik CSV na drzewa postaci Rodzic – wielokrotne dzieci.
  2. Zaznacz rekord/ pole i z menu kontekstowego wybierz odpowiednią adnotację.
  3. Uaktywnij panel Schematy aby zobaczyć, które pole zostało znormalizowane.

Przykładem działania tego bloczka jest proces, gdy z pliku płaskiego otrzymano rekordy następującej postaci:

Pic 296

Jak widać na rysunku, rekord zawiera „spłaszczone” dane rachunku i jednego klienta. Prawidłowa relacja, jaką należy w tym przypadku uzyskać to rachunek posiadający klientów jako rekordy-dzieci:

Pic 297

Kolejne rekordy pobierane ze źródła danych zawierają te same dane w polach dotyczących rachunku, oraz dane kolejnego klienta w pozostałych polach. Każdy rekord „nadrzędny” jest identyfikowany przez unikalny klucz (w tym przypadku NrRachunku), który pozwala rozpoznać, czy dane klienta dotyczą bieżącego rachunku.

Uzyskanie wyżej opisanego efektu polega na oznaczeniu elementów odpowiednimi adnotacjami, które są dostępne tylko i wyłącznie dla bloczka Normalizator.

Operacji oznaczania adnotacjami można dokonać na dwa sposoby:

1 sposób

  1. rekord, który ma być „normalizowany”, oznacz adnotacją Normalizacja
  2. unikalny klucz, który jednoznacznie identyfikuje rekord nadrzędny należy oznaczyć adnotacją Klucz normalizacji (w przypadku przykładu powyżej adnotacją tą należy oznaczyć NrRachunku).

image

2 sposób

  1. wszystkie pola należące do rekordu nadrzędnego (powtarzające się dla wszystkich płaskich rekordów o tym samym kluczu) należy oznaczyć adnotacją Włączenie pola do rekordu normalizowanego (w przypadku przykładu powyżej adnotacją tą należy oznaczyć Kwota, DataOtwarcia i NrNRB).

image

Schemat danych wygląda następująco:

image

Normalizacja i sortowanie danych​

Najprostszy pakiet przetwarzania może być zbudowany z następujących bloczków:

  1. Wczytanie pliku CSV - gdzie wczytywane są dane klientów. Jest to struktura płaska gdzie powtarzają się dani klienci.

image

  1. Normalizator - umożliwiający zmianę struktury danych, dzięki czemu uzyskamy strukturę drzewiastą czyli rekord klienci i dane ubezpieczeń danego klienta.
  2. W bloczku wskaż po jakich polach dane będą normalizowane. Dal pól imie i nazwisko dodaj adnotację Klucz normalizacji.

image

  1. Dodaj bloczek Podgląd danych i już możesz uruchomić pakiet i zobaczyć jak dane zostały zmienione. W poniższym przypadku widać, że rekordy, które występują bezpośrednio po sobie w pliku wejściowym są normalizowane.

image

  1. Jeżeli wszystkie dane miały by być znormalizowane, wcześniej należy posortować rekordy.
  2. Dodaj bloczek Indeks k>v. W szczegółach bloczka ustal jak mają być sortowane dane. Tutaj według pól imie i nazwisko. Przeciągnij pola na prawą stronę.

image

  1. Bloczek wymaga także ustawienia wątku przetwarzania. Czyli określamy, że w pakiecie będzie bloczek uruchamiany jako pierwszy, który będzie zbierać wszystkie dane, które są przed nim, a następnie przetworzy je.

image

  1. W tak zmodyfikowanym pakiecie uzyskujemy znormalizowane i posortowane dane.

image

ważne

Wartości pól-kluczy sterujących normalizacją są porównywane pomiędzy sąsiednimi rekordami i przed użyciem normalizatora należy samodzielnie zadbać o ich właściwe ułożenie, np. posortowanie w źródle lub użycie bloczka Indeks k>v , lub operacji sortowania (w ramach pojedynczego rekordu). W tym ostatnim przypadku, jeśli normalizacja przebiega w ramach rekordu (a nie między rekordami), istnieje możliwość grupowania rekordów źródłowych (niepełnego sortowania) przed normalizacją w ramach samego bloczka normalizacji – w tym celu należy włączyć opcję Grupuj elementy przed normalizacją na panelu Właściwości.

Pola podlegające normalizacji mogą być dodatkowo agregowane na podobnej zasadzie, jak ma to miejsce w bloczku Agregacja. Po oznaczeniu pól adnotacją Agregacja w strukturze wynikowej pojawią się pola o nazwach będących sklejeniem nazwy agregatu i pola źródłowego.

image

Separator rekordów​

Pic 299

Bloczek Separator rekordów umożliwia rozdzielanie rekordów na części, warunkowo 'odrywając' lub klonując poddrzewa we wskazanym miejscu. Bloczek ten posiada 3 wyjścia (nie jest obowiązkowe użycie ich wszystkich).

Pic 300

  1. Z poziomu szczegółów bloczka możesz zdefiniować, w którym miejscu ma nastąpić rozdzielenie rekordów.
  2. Wybierz odpowiedni rekord danych i następnie wybierz przycisk Ustaw. Rekordy pliku wejściowego zostaną rozdzielone na dwie części. Wszystkie elementy znajdujące się poniżej wskazanego rekordu skierowane zostaną do drugiego wyjścia bloczka.

image

  1. Przycisk Pokaż wskazuje w drzewie (w lewym panelu) gdzie będzie występowało cięcie rekordów w drzewie.
  2. Przycisk Usuń pozwala na usunięcie zdefiniowanego rozdzielenia.
  3. Opcja Klonuj zamiast odcinać gałąź kopiuje nie odcina gałęzi - robi jej kopię i wysyła ją drugim wyjściem. Wszystkie elementy znajdujące się poniżej wskazanego rekordu skierowane zostaną do drugiego wyjścia bloczka, jako kopia. Wyjściem pierwszym przepłyną dane z całego drzewa.
  4. Użytkownik ma też możliwość wprowadzenia warunku dla operacji rozdzielenia rekordów. System dodatkowo wyposażony został w funkcje podpowiadania składni w języku, w którym opisywane są warunki patrz: Podpowiadanie składni.

image

Przykładem użycia bloczka może być kontynuacja pakietu przetwarzania opisującego wykorzystanie bloczka Normalizator patrz: Normalizator.

  1. Po wczytaniu danych z pliku CSV i użyciu bloczka Normalizator dodaj bloczek Separator rekordów.

image

  1. Zaznacz punkt cięcia na schemacie danych.

image

  1. Nieodcięta część schematu wyjdzie pierwszym wyjściem z bloczka czyli są to dane rachunku. Drugim wyjściem zostaną skierowane rekordy od momentu cięcia czyli dane klienta.

image

Klasyfikacja​

Pic 301

Platforma pozwala na odpowiednie klasyfikowanie i segregowanie rekordów plików za pomocą wyrażeń przypisywanych poszczególnym portom, przy zastosowaniu bloczka Klasyfikacja.

Pic 302

  1. Klasyfikacja rekordów odbywa się poprzez uwarunkowanie przypisania wyników konkretnego zapytania do poszczególnych portów.
  2. Okno szczegółów bloczka podzielone jest na trzy obszary przyporządkowane kolejno do trzech bloczków wyjściowych. Użytkownik za pomocą określonych wyrażeń definiuje, które dane zostaną przesłane jakim wyjściem patrz: Język programowania.

image

  1. Dodatkową funkcjonalnością bloczka jest raportowanie (m. in. do pliku logu) ilości rekordów, które zostały wyprowadzone określonym wyjściem. Użytkownik może wyłączyć liczenie statystyk rekordów dla danego portu zaznaczając opcję Nie raportuj. Aby wyłączyć raportowanie dla całego bloczka, należy zaznaczyć opcję Wyłącz raportowanie we właściwościach bloczka.

Dodatkowo, pole OperationMode, znajdujące się we właściwościach bloczka (zakładka Właściwości) pozwala na zdefiniowanie reguł klasyfikacyjnych:

  1. FIRST_ONLY – przetwarzane rekordy są klasyfikowane względem pierwszej reguły, do jakiej trafią;
  2. MANY – przetwarzane rekordy są klasyfikowane względem wszystkich reguł.

Przykład:

Przetwarzane rekordy: dane klienta.

Reguły:

  1. Wyjście 1: Płeć: mężczyzna.
  2. Wyjście 2: Prawo jazdy: tak.
  3. Wyjście 3: Stanowisko pracy: Informatyk.

Dane klienta: płeć: kobieta, prawo jazdy: tak, stanowisko pracy: informatyk.

W przypadku opcji First_ONLY rekordy zostaną skierowane do wyjścia 2.

W przypadku opcji MANY rekordy zostaną skierowane do wyjścia 2 oraz 3.

Przykład wykorzystania bloczka Klasyfikacja patrz: Zapis rekordów do bazy z określonymi warunkami.

Łączenie posortowanych rekordów​

Pic 303

Bloczek Łączenie posortowanych rekordów pozwala na łączenie w jeden zbiór posortowanych rekordów, pochodzących z dwóch strumieni rekordów.

Pic 304

Okno zakładki Szczegóły podzielone zostało na dwa widoki, stanowiące podgląd dwóch zbiorów rekordów pochodzących z dwóch strumieni danych.

  1. W celu określenia kluczy definiujących łączenie zaznacz odpowiednie elementy z drzewa każdego widoku oraz wybierz przycisk Dodaj klucze. W oknie dolnym wyświetlony zostanie podgląd zdefiniowanego klucza.
  2. Następnie rekordy są porównywane przez System po wybranych kluczach. W przypadku równych kluczy następuje łączenie rekordów. Jeśli któregoś rekordu nie uda się połączyć z żadnym rekordem z drugiego wyjścia wędruje on do drugiego wyjścia bloczka (wyjścia z niepołączonymi rekordami).
ostrzeżenie

W razie wykrycia, że elementy przychodzące z wyjść są nieposortowane, przetwarzanie pakietu zostaje zatrzymane.

Bloczek może łączyć rekordy przychodzące z obu wejść na kilka sposobów:

  1. Relacja rodzic - dziecko między rekordami wejściowymi – rekord z drugiego wejścia jest dołączany jako „dziecko” do rekordu z pierwszego wejścia.
  2. Rekordy na wyjściu jako rodzeństwo z nowym korzeniem – tworzony jest nowy sztuczny rekord-korzeń, do którego dołączane są rekordy z obu wejść jako dzieci.
wskazówka

Podgraf spójny, w którym występuje taka opcja łączenia rekordów musi mieć włączony dokładnie 1 wątek przetwarzania.

  1. Nałożenie schematów rekordów - rekordy wyjściowe wypuszczane pojedynczo – z obu wejść pobierany jest po jednym rekordzie, rekord wyjściowy z mniejszym kluczem jest wypuszczany na wyjście, dodatkowo, wychodzący rekord ma nowy schemat będący częścią wspólną schematów z obu wejść.
  2. Nałożenie schematów rekordów - rekord wyjściowy wypuszczany jako paczka – z obu wejść pobierane są rekordy, wszystkie rekordy mające ten sam klucz są łączone w listę i wypuszczane na wyjście ze sztucznym nowym rekordem-korzeniem.

Dla przykładu:

Pobieramy dane z 2 różnych tabel UBEZPIECZENIA i KLIENCI

  1. Rekordy w obydwu tabelach w bazie danych muszą być posortowane w identyczny sposób.
  2. Przejdź do szczegółów bloczka i zmodyfikuj zapytanie w odpowiedni sposób. W poniższym przypadku rekordy zostały posortowane po polach K_IMIE i K_NAZWISKO w tabeli KLIENCI i polach U_IMIE i U_NAZWISKO w tabeli UBEZPIECZENIA

image

  1. Dodaj bloczek Łączenie posortowanych rekordów i przejdź na szczegóły. W bloczku należy wskazać klucze, które sobie odpowiadają.
  2. Zaznacz pole U_IMIE po lewej i pole K_IMIE po prawej stronie i wybierz przycisk Dodaj klucze.
  3. Wykonaj analogicznie dla pól U_NAZWISKO i K_NAZWISKO.

image

Możesz teraz uruchomić pakiet i w bloczku Podgląd danych zobaczyć jak zostały złączone i posortowane rekordy.

image

Łączenie ścieżek​

Pic 305

Bloczek Łączenie ścieżek stanowi funkcję scalania ścieżek przetwarzania, rozłączonych wcześniej podczas operacji klasyfikacyjnej. Bloczek nie wymaga konfiguracji szczegółowej. Łączenie ścieżek odbywa się automatycznie.

Poniżej przykładowy pakiet przetwarzania z użyciem omawianej funkcji:

image

Bloczek często jest dodawany po użyciu we wcześniejszym etapie bloczka Klasyfikacja. Więcej patrz: Klasyfikacja.

Agregacja​

Pic 307

Bloczek Agregacja służy do wyliczania wartości tzw. funkcji agregacji na wszystkich wartościach wybranych pól we wszystkich rekordach, jakie przejdą przez niego podczas jego fazy przetwarzania.

Dostępne funkcje agregujące to:

NazwaFunkcjaDopuszczalne typy danych polaUwzględnianie wartości pustej
CountIlość wystąpieńWszystkieW zależności od konfiguracji
MinNajmniejsza wartośćData, liczba całkowita, liczba stałopozycyjna, liczba zmiennopozycyjna tekstTylko niepuste
MaxNajwiększa wartośćData, liczba całkowita, liczba stałopozycyjna, liczba zmiennopozycyjna, tekstTylko niepuste
SumSumaLiczba całkowita, liczba stałopozycyjna, liczba zmiennopozycyjnaTylko niepuste
AvgWartość średniaLiczba całkowita, liczba stałopozycyjna, liczba zmiennopozycyjnaTylko niepuste
FirstPierwsza napotkana wartośćWszystkieW zależności od konfiguracji
LastOstatnia napotkana wartośćWszystkieW zależności od konfiguracji
  1. Wyboru pól do zagregowania dokonuje się poprzez oznaczenie ich za pomocą adnotacji Agregacja.
  2. Aby wybrać funkcję agregującą i sposób obsługi pustych wartości wybierz z menu kontekstowego opcję Adnotacje>Agregacja.
  3. Wybierz przycisk … – spowoduje to wyświetlenie okna konfiguracyjnego agregacji. Możesz także skorzystać z panelu Szczegóły, gdzie wyświetlane są te same opcje.

Pic 308

  1. Standardowo, dla każdego pola wybranego do agregacji będzie tylko jedna wartość wynikowa, powstała ze wszystkich wartości jakie przyjęło to pole podczas fazy przetwarzania pakietu, do której należy bloczek agregacji.
  2. Istnieje możliwość podzielenia tego zbioru wartości na mniejsze wg wartości innego pola i zagregowanie takich grup. Daje to możliwość np. policzenia rachunków bankowych w każdym oddziale osobno.
  3. Aby dokonać takiego podziału,wybierz pole, wg którego ma nastąpić podział za pomocą adnotacji Klucz agregacji. Można umieszczać wiele takich adnotacji – rezultatem będzie podział po kombinacji wartości wszystkich kluczy na ścieżce od agregowanego pola do korzenia schematu danych.
  4. Na wyjście bloczka agregacji kierowane są oryginalne, niezmienione w żaden sposób rekordy. Wartości zagregowane można pobierać z wyjścia dodatkowego bloczka Raport agregacji.
  5. Wartości zagregowane mogą być pobierane w dowolnym momencie przetwarzania pakietu, jednak wartości pobierane podczas fazy zawierającej bloczek agregacji są wartościami tymczasowymi wyliczonymi z dotychczas przetworzonych rekordów. Aby mieć pewność, że wyniki agregacji dotyczą wszystkich rekordów należy je odczytać w późniejszej fazie przetwarzania.

Wyjściowy schemat bloczka Raport agregacji jest podobny do schematu wejściowego z następującymi różnicami:

  1. Są w nim tylko pola oznaczone adnotacjami Agregacja lub Klucz agregacji i tylko rekordy leżące na ścieżkach od tych pól do korzenia.
  2. Pola oznaczone adnotacją agregacji z funkcją Count mają zmieniony typ danych na liczbę całkowitą.
  3. Rekordy, w których występuje pole oznaczone adnotacją Klucz agregacji są wielokrotne, pozostałe rekordy są jednokrotne.

Pola odpowiadające kluczom w wyjściowym rekordzie zawierają wartość klucza, dla której zostały zagregowane wartości w tym rekordzie i wszystkich głębszych. W polach odpowiadających polom agregowanym znajdują się wyniki agregacji.

Odczytać wyniki można na dwa sposoby: jak z normalnego bloczka wejściowego lub przez odpytywanie. W pierwszym przypadku bloczek raportu będzie zwracał rekordy pojedynczo dla każdej kombinacji wartości kluczy, w drugim będzie zwracał wybrane dane w odpowiedzi na każde zapytanie.

Zapytania mogą mieć dwie postaci:

  1. rekord płaski (bez podrekordów), zawierający pola o nazwach i typach odpowiadających wszystkim kluczom agregacji,
  2. rekord drzewiasty o schemacie podrekordów dokładnie (włącznie z nazwami) odpowiadającemu schematowi wyjściowemu bloczka raportu agregacji oraz zawierającemu w odpowiednich rekordach pola o tej samej nazwie i typie co klucze agregacji. Odpowiedzią na zapytanie jest rekord drzewiasty zawierający tylko gałęzie z wartościami kluczy agregacji, zgodnymi z zapytaniem. Wartość pusta klucza w zapytaniu oznacza zwrócenie wszystkiego.

Przykładowy pakiet wykorzystujący bloczek Agregacja może wyglądać w następujący sposób:

image

Uruchamianie kodu​

Pic 309

Bloczek Uruchamianie kodu służy do wywoływania wskazanego kodu na każdym wchodzącym/wychodzącym/ przechodzącym rekordzie lub zapytaniu.

Pic 310

Konfiguracja bloczka polega na zdefiniowaniu wyrażenia we właściwości Wyrażenie wejściowe (wywoływanego dla każdego przetwarzanego rekordu) lub bezpośrednio w oknie Przetwarzanie rekordów oraz opcjonalnie Wyrażenie zapytania - okno Przetwarzanie zapytań (wywoływanego w momencie otrzymania zapytania - musi zwrócić nowe zapytanie, które zostanie wysłane). Oba pola są edytorami wyrażeń wspierającymi podpowiadanie składni pod Ctrl+Spacja, dzięki czemu w bloczku można pisać dowolne wyrażenia korzystające zarówno z wbudowanych funkcji archITekta jak i elementów dostępnych drzew danych/kontekstu: QUERY, ARG, PKG, DIC, PART, ConfigKeys, VS, RIGHTS, BusinessParams, LOC, BLK.

Pic 310

Nie jest więc konieczne pisanie własnego kodu .NET, aby skorzystać z bloczka - w wielu przypadkach wystarczy zbudować odpowiednie wyrażenie z gotowych, wbudowanych funkcji. Więcej o zasadach budowania wyrażeń patrz: Wyrażenia.

  1. Bloczek może być używany do implementacji skomplikowanych reguł biznesowych, oraz do rozszerzania funkcjonalności związanej z przetwarzaniem rekordów.
  2. Bloczek przetwarza rekordy dostarczone przez dowolne źródło danych – nie działa jako źródło danych oraz źródło zapytań.
  3. Bloczek może posłużyć do zapisania wartości argumentu wyjściowego pakietu za pomocą wbudowanej funkcji pkg.SetArgumentFieldValue(). Dzięki temu wynik działania pakietu (np. wywołanego z poziomu formularza) można przekazać dalej jako argument wyjściowy bez konieczności dodawania osobnego bloczka odwzorowania - patrz: Argumenty wywołania pakietu oraz Rodzaje akcji - Uruchom pakiet przetwarzania.
  4. Bloczek może posłużyć do zapisu wygenerowanych plików bezpośrednio na dysku za pomocą wbudowanej funkcji WriteFile(), np. przy zapisie wygenerowanych dokumentów (standardowo wyniki generowania dokumentów zapisywane są do pól binarnych bazy danych) - patrz: Zapis dokumentu.
  5. Jeżeli wbudowane funkcje nie wystarczają, bloczek można dodatkowo rozszerzyć o własny kod .NET. Pierwszym krokiem konfiguracji jest dodanie pliku/plików assembly z dodatkowymi funkcjonalnościami. W tym celu wybierz z menu górnego pakietu opcję Zewnętrzny kod .NET (cc). Funkcja ta znalazła się w menu ze względu na możliwość dzielenia nowych funkcjonalności przez wszystkie bloczki Uruchamianie kodu. Po wybraniu wcześniej opisanej opcji, zostanie wyświetlone następujące okno dialogowe:

Pic 311

  1. Z menu po lewej stronie wybierz Dodaj ->Z pliku i w oknie dialogowym wyboru pliku wybierz pliki assembly .NET, które zawierają metody rozszerzające możliwości przetwarzania rekordów.
  2. Następnie, w zakładce Właściwości zdefiniuj atrybut 'nazwa obiektu CC' (będzie ona używana w bloczku Uruchamianie kodu), oraz nazwę typu .NET, który zawiera metody służące do modyfikacji danych.

Pic 312

Po wykonaniu powyższych kroków dodane metody .NET będą dostępne w tym samym oknie podpowiadania składni (Ctrl+Spacja) co funkcje wbudowane, we wszystkich bloczkach Uruchamianie kodu danego pakietu.

image

wskazówka

Aby metoda przetwarzała rekordy, przy tworzeniu zestawu .NET powinny być dołączone bazowe zestawy (VTS2.Base.dll) oraz metoda przetwarzająca dane musi jako jeden z argumentów przyjmować typ DataRecord z tego zestawu.

Wiersze na kolumny​

Pic 314

Bloczek Wiersze na kolumny przeznaczony jest do wykonywania operacji odwracania danych podanych w postaci nazwy pola (i ewentualnie ścieżki prowadzącej do niego) oraz wartości.

Zasada działania:

Działanie bloczka polega na: wstawianiu wartości podanej w jednym z pól wejściowego rekordu, do pola wskazanego ścieżką złożoną z zawartości innych pól. Najprostszym przykładem takiej operacji jest zmiana kolekcji par „nazwa pola”, „wartość” na rekord o nazwach pól podanych w „nazwa pola” i wartościach tych pól z „wartość”.

Pic 315

  1. Po lewej stronie widać strukturę danych wejściowych: rekord Nowy rekord jest rekordem wielokrotnym zawierającym pary pole, wartość.
  2. Po prawej stronie widać rekord, do którego zostaną skopiowane dane. Jest to pojedynczy rekord, w którym nazwy pól (a do f) są wszystkimi wartościami, jakie może przyjąć pole „pole” w rekordzie po lewej stronie.

Bardziej skomplikowanym przypadkiem jest sytuacja, w której pole, do którego mają trafić dane określane jest przez więcej niż jedno pole w danych wejściowych.

Dla przykładu został przedstawiony plik CSV zawierający następujące kolumny: Schema, Tabela, Kolumna, Wartość:

SchemaTabelaKolumnaWartość
dboTestowa_tabelaKolumna_1Ala
dboTestowa_tabelaKolumna_2ma
dboTestowa_tabelaKolumna_3kota

Powyższa tabela zostanie zamieniona na jeden rekord znajdujący się na ścieżce Dane odwrócone\dbo\Testowa_tabela i posiadający 3 pola: 'Kolumna_1', 'Kolumna_2' i 'Kolumna_3'. Do pól tego rekordu zostaną wstawione wartości, odpowiednio: „Ala”, ”ma” i „kota”.

Rekord będzie miał następującą strukturę:

Pic 316

  1. Powyższy przykład dowodzi, iż do utworzenia jednego rekordu wyjściowego potrzebna jest pewna ilość rekordów wejściowych (równa ilości pól w wyjściowym rekordzie który trzeba wypełnić danymi).
  2. Taką kolekcję należy dostarczyć bloczkowi w rekordzie wejściowym w postaci wielokrotnego rekordu w drzewie schematu (tym rekordem nie może być korzeń).
  3. Każdy rekord wejściowy zawierający taką kolekcję będzie przetwarzany oddzielnie. Kolekcję rekordów dla jednego rekordu wyjściowego można utworzyć np. za pomocą normalizatora.

Przedstawiony powyżej przykład pokazuje tylko jeden rekord wyjściowy. W rzeczywistych przypadkach będzie konieczne utworzenie całej kolekcji rekordów wyjściowych z danych w jednej tylko kolekcji wejściowej (np. tabela zagnieżdżona z kilkoma rekordami potomnymi). Konieczne jest, aby w rekordach wejściowych znajdowało się pole zawierające unikalny (w obrębie jego kolekcji rekordów) identyfikator, za pomocą którego rozróżniane są rekordy wyjściowe. Dodatkowym wymaganiem jest, aby kolekcja wejściowa była posortowana po całej ścieżce, prócz ostatniego jej elementu, włączając pole identyfikatora – w przykładzie powyżej było by to sortowanie po polach 'Schema', 'Tabela', 'Id'.

Bloczek potrafi stworzyć dowolną strukturę złożoną z rekordów i pól – włącznie z polami podpiętymi pod korzeń kolekcji wyjściowej. Kolekcja wyjściowa zostanie podpięta jako rodzeństwo dla kolekcji wejściowej w rekordzie wyjściowym i tak zmodyfikowany rekord będzie rekordem wyjściowym bloczka Wiersze na kolumny.

Przykładowy schemat wejściowyPrzykładowy schemat odwróconych danychSchemat wyjściowy
Pic 316Pic 316Pic 316

Konfiguracja bloczka​

Bloczek znajduje się w przyborniku w sekcji Bloczki transformacji i wymaga podpięcia zarówno wejścia jak i wyjścia.

  1. Aby go skonfigurować konieczne jest podpięcie wejścia, tak aby był dostępny schemat wejściowy.
  2. Edytor bloczka Wiersze na kolumny składa się z dwóch okien do edycji schematów:

Pic 315

  1. Okno po lewej stronie zawiera wejściowy schemat danych. Należy adnotacjami wskazać pola zawierające elementy ścieżki (adnotacja Element ścieżki do odwrócenia), wartość (adnotacja Wartość do odwrócenia) i identyfikator rekordów (adnotacja Id rekordu do odwrócenia).

image

  1. Po dodaniu adnotacji Element ścieżki do odwrócenia, należy dodatkowo wyedytować ją i wprowadzić numer elementu w ścieżce.
  2. Numery te muszą tworzyć ciąg zaczynający się od 1.

image

  1. Wszystkie adnotacje muszą być na polach tego samego rekordu i muszą to być pola tekstowe.
  2. Gdy podczas przetwarzania ścieżka zbudowana z wartości pól oznaczonych jako elementy ścieżki wskazuje na nieistniejące pole, aktualnie przetwarzany rekord zostanie skierowany na wyjście błędów. Aby zignorować takie przypadki (np. gdy interesuje nas tylko kilka pól z większej liczby występującej w danych wejściowych) zmień wartość właściwości Ignoruj brakujące pola i rekordy bloczka na Tak.
  3. Standardowo, dane wejściowe nie są zmieniane podczas pracy bloczka. Aby skasować rekordy, których wartość została skopiowana do rekordu wyjściowego, zmień wartość właściwości Usuń skopiowane dane bloczka na Tak. Wtedy w kolekcji rekordów danych wejściowych zostaną tylko te, których wartości nie zapisano do rekordu wyjściowego ze względu na brak w nim odpowiedniego pola lub podrekordu.
  4. Po prawej stronie, wprowadź schemat danych po operacji odwrócenia. Można to zrobić ręcznie dodając pola lub rekordy lub skorzystać z automatycznego budowania schematu.
  5. Nazwy elementów w schemacie muszą odpowiadać wartościom, jakie pojawią się w danych wejściowych – jedynka odpowiada elementom pod korzeniem.
  6. W przypadku, gdy w danych wejściowych brak jest wartości w jednym z pól ścieżki, wówczas pole jest pomijane, a ścieżka krótsza.
  7. Jeżeli nie ma żadnego elementu w ścieżce, wtedy wystąpi błąd.
  8. W przypadku, gdy pod korzeniem mogą wystąpić pola (ścieżka o długości 1) należące do różnych rekordów danych (rozróżniane na podstawie wartości pola oznaczonego adnotacją Id rekordu do odwrócenia), oznacz rekord korzenia jako wielokrotny. W przeciwnym wypadku podczas wczytywania danych wystąpi błąd.
  9. Można dodawać także pola, które nie zostaną wypełnione danymi wejściowymi.
  10. Pola, które mają zostać uzupełnione muszą być typu tekstowego.

Aby skorzystać z automatycznego generowania schematu danych należy:

  1. Przygotować plik CSV zawierający tylko kolumny, które mają utworzyć ścieżkę (oznaczone adnotacjami Element ścieżki do odwrócenia), znakiem rozdzielającym kolumny musi być „|” i nie może występować żaden nagłówek.
  2. Utworzyć nowy rekord, pod którym zostanie utworzony schemat i zaznaczyć go (lub zaznaczyć jakiś istniejący).
  3. Kliknąć przycisk wczytywania schematu z pliku CSV i wskazać przygotowany plik.

Pic 320

  1. Wczytany schemat można dowolnie edytować.

Dla przykładu:

  1. Stwórz pakiet przetwarzania wykorzystujący bloczek Wiersze na kolumny.

image

  1. Wczytaj dane w bloczku Prosty plik XML. Wybierz przycisk Dodaj przykładowy XML a następnie przenieś rekord record na prawą stronę.

image

W pliku znajdują się następujące dane:

image

<?xml version="1.0" encoding="UTF-8"?>
<records xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="records.xsd">
<record pole="ilosc" value="1" />
<record pole="masa" value="20" />
<record pole="ilosc" value="3" />
<record pole="masa" value="40" />
<record pole="ilosc" value="5" />
</records>
  1. Dodaj bloczek Odwzorowanie w miejscu i w szczegółach bloczka dodaj nowy korzeń. Wybierz menu Edycja i Nowy korzeń.

image

  1. Kolekcja rekordów do odwrócenia nie może być korzeniem schematu danych, dlatego należy w bloczku Odwzorowanie w miejscu dodać nowy korzeń lub przenieść dane do odwrócenia do rekordu niżej w schemacie danych.

image

  1. Dodaj bloczek Wiersze na kolumny. W prawej części okna określ docelowy schemat danych. Dodaj nowe pola ilosc i masa korzystając z opcji z menu kontekstowego lub opcji dodawania pól z paska górnego.

image

  1. Dodaj adnotację Element ścieżki do odwrócenia.

image

  1. Dla pola value dodaj adnotację Wartość do odwrócenia.

image

  1. Dodaj bloczek Podgląd danych i uruchom pakiet. W wyniku przetwarzania otrzymujemy dane odpowiednio przyporządkowane do pól masa i ilosc.

image

Odwzorowanie - kopia​

Pic 321

Bloczek Odwzorowanie – kopia pozwala na stworzenie nowego rekordu danych na podstawie oryginalnego fragmentu rekordu analizowanego.

Pic 322

  1. Bloczek umożliwia całkowitą zmianę struktury rekordów.
  2. Okno szczegółów zostało podzielone na dwie części, z których pierwsza stanowi podgląd struktury danych wejściowych, a druga umożliwia tworzenie kopii struktury na podstawie oryginału.
  3. Użytkownik ma możliwość kopiowania elementów ze struktury oryginalnej poprzez przeciąganie rekordów/pól między oknami lub samodzielne dodawanie fragmentów drzewa.
  4. Za pomocą adnotacji Źródło wartości zwrócona zostaje ścieżka do oryginalnego miejsca w strukturze.
wskazówka

Operowanie na poszczególnych elementach drzewa zostało szczegółowo opisane w rozdziale poświęconym dostosowywania schematów rekordów oraz pól (patrz: Przetwarzanie danych).

Uruchamianie kodu - parametry złożone​

Pic 323

Bloczek Uruchamianie kodu - parametry złożone służy do wywoływania wskazanego kodu na każdym przechodzącym rekordzie lub zapytaniu.

W bloczku uruchamia się kod przez mapowanie parametrów jako całe obiekty. W prostym wywołaniu przekazuje się tylko parametry takie jak liczba czy tekst. Podobnie jak w przypadku zwykłego bloczka Uruchamianie kodu możesz dodać własną metodę do wywołania.

  1. Pierwszym krokiem konfiguracji jest dodanie pliku/plików assembly z dodatkowymi funkcjonalnościami. W tym celu wybierz z menu górnego pakietu opcję Zewnętrzny kod .NET (cc).

  2. Z menu po lewej stronie wybierz Dodaj -> Z pliku i w oknie dialogowym wyboru pliku wybierz pliki assembly .NET, które zawierają metody rozszerzające możliwości przetwarzania rekordów.

Pic 312

  1. Po przejściu do szczegółów bloczka należy wybrać metodę w oknie Wybór metody z danego CC. Kliknij dwukrotnie na metodę.

image

  1. Na zakładce Mapowanie parametrów wejściowych wykonaj mapowania.
  2. Najpierw wybierz korzeń danych. Zaznacz rekord na schemacie danych i naciśnij Wybierz korzeń. Pojawi się wyszarzony rekord Input wraz z innymi parametrami wejściowymi metody.

image

  1. Wykonaj mapowania na parametry wejściowe metody. Możesz przeciągnąć pola ze schematu danych na pola danej metody i wybrać z menu kontekstowego Ustaw źródło.

image

  1. Możesz także skorzystać z adnotacji i ustawić wartość dla pola poprzez wyrażenie lub stałą itp.

image

  1. Jeżeli dodasz kolejny bloczek za bloczek uruchamiania kodu przykładowo bloczek Odwzorowanie w miejscu wówczas dostępny będzie rekord Output, w którym znajdują się parametry wyjściowe metody. Wcześniej schemat ten jest dostępny do podglądu na panelu Schematy.

image

Dla przykładu:

Stwórz pakiet przetwarzania, w którym będą pobierane wartości zdefiniowanego parametru biznesowego z wykorzystaniem bloczka Uruchamianie kodu-parametry złożone.

image

  1. Zdefiniuj parametr biznesowy - patrz: Tworzenie nowych parametrów.
  2. Po zdefiniowaniu parametru interesować nas będzie Klucz oraz typ parametru - Typ danych.

image

  1. Dodaj bloczek Generator danych losowych, a następnie bloczek uruchamiania kodu. Przejdź do szczegółów bloczka i dwuklikiem wybierz metodę GetString z drzewa BusinessParams Jest to metoda, która pobiera wartość tekstową zdefiniowanych parametrów biznesowych.

image

  1. Przejdź do okna Mapowanie parametrów wejściowych, zaznacz rekord i naciśnij Wybierz korzeń.
  2. Zaznacz duszek a_name i wybierz z menu kontekstowego Popraw>Dodaj element (stała).

image

  1. W polu Źródło wartości wprowadź nazwę klucza parametru. W tym wypadku jest to NOWY.

image

  1. Dodaj bloczek Podgląd danych i uruchom pakiet. W podglądzie danych w rekordzie Output powinna znajdować się wartość zdefiniowanego parametru biznesowego.

image

Zobacz również​

Narzędzia projektowe

Kategoria ogólna

Zadania