Edytor konwersji bitów umożliwia konwersję strumienia danych magistrali do dowolnego formatu tekstowego zdefiniowanego przez użytkownika w edytorze. Umożliwia tworzenie struktur zagnieżdżonych oraz formatowanie danych pochodzących z magistrali.
Edytor jest dostępny w następujących operatorach systemu GRAVITY:
CONVERT BITS TO FORMAT
INFORMACJE PODSTAWOWE
Tworzenie schematu formatu danych odbywa się poprzez wprowadzenie dowolnego tekstu przez osobę konfiguracyjną. Do tekstu wprowadzone są znaczniki, dzięki którym można wstawiać dane z magistrali oraz tworzyć grupy - pętle. Znaczniki są interpretowane w trakcie przetwarzania danych wejściowych przez operator.
Wyróżnione są dwa rodzaje znaczników:
- znaczniki grup – pozwalają na tworzenie grup w budowanym formacie danych:
#S-nazwa_grupy#→ znacznik rozpoczęcia grupy, np.#S-G1##E-nazwa_grupy#→ znacznik zakończenia grupy, np.#E-G1#.- znaczniki bitów – bity magistrali występujące w obrębie grupy, oddzielone od tekstu separatorami początku i końca. Domyślnymi separatorami są
{i}, jednak można je zmienić w konfiguracji operatora CONVERT BITS TO FORMAT. Przykład znacznika bitu:{name}.
Grupę można rozumieć jako blok tekstu (wraz ze znacznikami bitów), który zostanie zinterpretowany i powielony zgodnie z mechanizmem przetwarzania danych.
Podczas przetwarzania operator grupuje dane magistrali według bitów użytych w danej grupie, po odfiltrowaniu danych zgodnie z wartościami grup nadrzędnych. Następnie zastępuje tekst pomiędzy znacznikami grupy przetworzoną zawartością tyle razy, ile rekordów zostało utworzonych w wyniku grupowania. W każdej iteracji znaczniki bitów są zastępowane wartościami z aktualnie przetwarzanego rekordu.
Wynikiem przetwarzania danych z magistrali wejściowej są rekordy zawierające tekst utworzony zgodnie ze zdefiniowanym formatem. Liczba rekordów tekstowych zależy od liczby rekordów powstałych po grupowaniu danych magistrali według bitów znajdujących się w pierwszej grupie. Oznacza to, że liczba rekordów wejściowych może różnić się od liczby rekordów powstałych po przetwarzaniu.
Jeżeli chcesz uzyskać tylko jeden rekord na wyjściu, pierwsza grupa nie powinna zawierać znaczników bitów lub powinna zawierać bit, który ma tę samą wartość dla wszystkich rekordów wejściowych.
KONFIGURACJA EDYTORA
Okno edytora jest podzielone na dwa obszary: Busbar oraz User format definition.
Obszar Busbar przedstawia listę bitów magistrali wchodzącej do operatora wywołującego edytor. Możesz przeciągnąć dowolny bit na obszar User format definition (akcja drag and drop) jeśli chcesz go użyć do budowy struktury formatu.
Obszar User format definition jest właściwym miejscem, w którym definiujesz własny format. Znajdują się w nim przyciski ułatwiające jego tworzenie:
- Load file → wczytuje format z pliku.
- Create group → wstawia znacznik grupy danych. Jeżeli zaznaczysz fragment tekstu w edytorze, zostanie on objęty znacznikami grupy. W tworzonym formacie wymagana jest co najmniej jedna grupa.
- Ungroup → usuwa znacznik grupy z zaznaczonego tekstu.
- Insert empty token → wstawia pusty znacznik bitu magistrali.
- Show specificators → wyświetla podstawowe formaty wartości bitów. Wybrany format można przeciągnąć do edytora, co spowoduje wstawienie znacznika bitu z odpowiednim formatowaniem. Następnie należy ręcznie uzupełnić nazwę bitu.
- Insert ordinal number in group → wstawia znacznik, który podczas przetwarzania zostanie zastąpiony kolejnym numerem LP w ramach grupy. Dla każdego poziomu zagnieżdżenia numeracja rozpoczyna się od wartości 1.
- Save → zapisuje schemat formatu do komponentu wywołującego edytor.
- Save to file → zapisuje format do pliku.
PRZYKŁAD TWORZENIA WŁASNEGO FORMATU
Załóżmy, że chcesz utworzyć plik tekstowy z podsumowaniem zamówień.
Chcesz, aby raport zawierał informacje o liczbie zamówień w poszczególnych latach oraz listę wszystkich zamówień bez podziału na lata. Dane zostały wcześniej pobrane i przetworzone w taki sposób, że na magistrali znajdują się bity przechowujące roczne podsumowania oraz listę zamówień.
Zacznij od wstawienia znacznika grupy za pomocą przycisku Create group.
Jeżeli w pierwszej grupie chcesz użyć jakichś bitów, przeciągnij je na obszar edytora. Zostanie wstawiony znacznik bitu {nazwa_bitu}.
W tym przykładzie nie użyjemy żadnego bitu, ponieważ chcemy uzyskać na wyjściu tylko jeden rekord z raportem, a w danych nie występuje pole o tej samej wartości dla wszystkich rekordów.
Teraz utwórzmy grupę reprezentującą podsumowanie roczne.
Będzie ona zawierała informacje, ile zamówień wpłynęło w poszczególnych latach oraz jaka była ich łączna wartość. W tym celu należy dodać nową grupę, ponieważ dane mają zostać przetworzone w pętli. Następnie wprowadź opisy i przeciągnij bity magistrali do edytora, wstawiając w ten sposób znaczniki bitów.
G2, odfiltruje dane magistrali zgodnie ze znacznikami bitów z grupy G1 (w tym przykładzie grupa G1 nie zawiera żadnych bitów), a następnie zgrupuje dane według bitów t_order_year, t_report_orders_count oraz t_report_total_in_year.: oraz odpowiedni format, np. {t_report_total_in_year:N2}. Więcej informacji znajdziesz w rozdziale dotyczącym formatowania danych.Aby wstawić listę wszystkich zamówień, utwórz nową grupę G3 na tym samym poziomie co grupa G2.
Zauważ również, że po prawej stronie edytora tworzony jest schemat zagnieżdżenia grup.
Wynikiem przetwarzania operatora będzie następujący tekst:
Zauważ, że możesz szybko zmodyfikować raport, zmieniając położenie grupy G3 i czyniąc ją grupą podrzędną grupy G2. Dzięki temu zamówienia zostaną pogrupowane według lat.
Wygenerowany tekst będzie miał następującą postać:
Możesz równie łatwo zmienić cały format, np. na format XML.
Wynik działania:
Magistrala wyjściowa komponentu z przedstawionym powyżej formatem będzie zawierała jeden rekord z jedną kolumną file_data.
Jeżeli zmodyfikujesz przykład w taki sposób, że pierwsza grupa będzie zawierała dane dotyczące lat, na magistrali wyjściowej zostanie utworzonych tyle rekordów, ile będzie różnych lat. Każdy rekord będzie zawierał pola użyte w pierwszej grupie oraz wygenerowany tekst.
Dla przedstawionych danych zostaną utworzone dwa rekordy zawierające tekst w kolumnie file_data.
Orders report
Year: 2024
Amount of orders: 1
Gross total in year: 48,00
List of Orders:
####################################################################
Order year: 2024
Order nr: 1
Customer: Company Id 6
Order gross total: 48
--------------------------------------------------------------------